private void OnTriggerEnter2D(Collider2D other) { // Debug.Log(this); // Debug.Log(other); // Debug.Log(other.gameObject); CheckCollision.Invoke(this, other.gameObject.GetComponent <ICollision>()); }
void VerticalMove() { //与玩家1的碰撞检测 RaycastHit2D hit = CheckCollision.CheckDownCollison(relay.rig, player1Layer, Mathf.Abs(relay.speed.y) * Time.deltaTime); if (hit.collider != null) { return; } //与玩家2的碰撞检测 hit = CheckCollision.CheckDownCollison(relay.rig, player2Layer, Mathf.Abs(relay.speed.y) * Time.deltaTime); if (hit.collider != null) { return; } //着地碰撞检测 hit = CheckCollision.CheckDownCollison(relay.rig, mapLayer, Mathf.Abs(relay.speed.y) * Time.deltaTime); if (hit.collider != null) { relay.rig.MovePosition(new Vector2(relay.rig.transform.position.x, hit.point.y + relayExtents.y)); relay.speed.y = 0; } else//没有着地继续移动 { relay.rig.MovePosition(relay.speed * Time.deltaTime + (Vector2)relay.transform.position); } }
[SerializeField] private float bias; //How far from the centre should the connection point spawn the next room? public IEnumerator GenerateRoom() { int generatedProb = Random.Range(0, spawnRooms.Length); GameObject roomToGenerate = spawnRooms[generatedProb]; Quaternion rotation = Quaternion.LookRotation(this.transform.forward); Vector3 position = GenerateRelativeVector(rotation.eulerAngles.y, bias); GameObject generatedRoom = Instantiate(roomToGenerate, position, rotation); yield return(null); TestConnection[] TestConnections = generatedRoom.GetComponentsInChildren <TestConnection>(); CheckCollision validatorNewRoom = generatedRoom.GetComponentInChildren <CheckCollision>(); TestConnection chosenPoint = TestConnections[0]; validatorNewRoom.TurnOnCollider(); yield return(new WaitForSeconds(0.05f)); if (validatorNewRoom.GetIsCollided()) { Destroy(generatedRoom); yield return(null); } else { TestMapGen.AddGeneratedRoom(generatedRoom); this.SetConnected(); chosenPoint.SetConnected(); TestMapGen.AddTestConnections(TestConnections); } }
void GroundCollision(Player player, int layerMask, string tag) { //落地检测 RaycastHit2D hit = CheckCollision.CheckDownCollison(player.rig, layerMask, Mathf.Abs(player.speed.y * Time.deltaTime) + 0.01f); if (hit.collider != null) { if (hit.collider.tag == tag) { if (player.speed.y < -20) { GameObject dropEffect = GameObject.Instantiate(player.dropDustEffect, player.transform.position + new Vector3(0.15f, -0.70f, 0), Quaternion.identity); GameObject.Destroy(dropEffect, 0.3f); } player.speed.y = (hit.point.y - player.rig.GetComponent <Collider2D>().bounds.center.y + player.Collider2DExtents.y) / Time.deltaTime; player.IsFloat = false; isFinishInitialDrop = true; if (hit.collider.tag == player.tag) { player.isOnOther = true; } } } else { player.isOnOther = false; player.IsFloat = true; } }
public void SetUp() { log = Substitute.For <IWrite>(); alarm = Substitute.For <IWrite>(); checkcollision = Substitute.For <CheckCollision>(); uut = new DetectConflict(checkcollision, alarm, log); DateTime dateTime1 = new DateTime(2018, 06, 10, 10, 18, 18); DateTime dateTime2 = new DateTime(2018, 06, 10, 10, 18, 20); ITrack track1 = new Track(); track1.Tag = "KLA123"; track1.Timestamp = dateTime1; ITrack track2 = new Track(); track2.Tag = "RIH456"; track1.Timestamp = dateTime2; var li = new List <ITrack> { track1, track2 }; checkcollision.ConflictingFlights = li; uut.Update(); }
public BlueProjectile(World world, Vector2 position, Texture2D texture, Vector2 size, Vector2 cursPosition, CompositeCharacter player, CheckCollision collisionChecker) : base(world, position, texture, size, cursPosition, player, collisionChecker) { color = Color.Blue; speed = 200; damage = 100; delay = 5000; }
public YellowProjectile(World world, Vector2 position, Texture2D texture, Vector2 size, Vector2 cursPosition, CompositeCharacter player, CheckCollision collisionChecker) : base(world, position, texture, size, cursPosition, player, collisionChecker) { color = Color.Yellow; speed = 500; damage = 20; manaCost = 20; delay = 500; }
public void SetUp() { receiver = Substitute.For <ITransponderReceiver>(); track = new Track(); parseTracks = new TrackParsing(track); write = Substitute.For <IWrite>(); filter = new FilterFlightLimits(); collision = Substitute.For <CheckCollision>(); _compare = new CompareTracks(); _reciever = new MainReceiver(receiver, filter, write, collision, _compare, parseTracks); }
public void SetUp() { receiver = Substitute.For <ITransponderReceiver>(); track = new Track(); parseTracks = new TrackParsing(track); write = Substitute.For <WriteToConsole>(); filter = new FilterFlightLimits(); collision = Substitute.For <CheckCollision>(); comparetracks = Substitute.For <ICompareTracks>(); _mainreceiver = new MainReceiver(receiver, filter, write, collision, comparetracks, parseTracks); }
void RightCollision(Player player, int layerMask, string tag)//右侧碰撞检测 { RaycastHit2D hit = CheckCollision.CheckRightCollison(player.rig, layerMask, Mathf.Abs(player.speed.x) * Time.deltaTime); if (hit.collider != null) { if (hit.collider.tag == tag) { player.speed.x = 0; } } }
void FloorCollision(Player player, int layerMask, string tag)//顶部碰撞检测 { RaycastHit2D hit = CheckCollision.CheckUpCollison(player.rig, layerMask, Mathf.Abs(player.speed.y * Time.deltaTime)); if (hit.collider != null) { if (hit.collider.tag == tag) { player.speed.y = 0; } } }
public void SetUp() { _receiver = Substitute.For <ITransponderReceiver>(); _track = new Track(); _parseTracks = new TrackParsing(_track); _writeToConsole = Substitute.For <WriteToConsole>(); _filter = new FilterFlightLimits(); _collision = Substitute.For <CheckCollision>(); _compare = new CompareTracks(); _velocityCalc = new VelocityCalc(); _courseCalc = new CourseCalc(); _reciever = new MainReceiver(_receiver, _filter, _write, _collision, _compare, _parseTracks); }
void CheckConveyBelt(Player player) { //传送带加减速 RaycastHit2D hit = CheckCollision.CheckDownCollison(player.rig, mapLayer, Mathf.Abs(player.speed.y) * Time.deltaTime + 0.01f); if (hit.collider != null) { if (hit.collider.tag == "conveyBelt") { player.speed.x += 1.5f; } } }
public void SetUp() { _receiver = Substitute.For <ITransponderReceiver>(); _track = new Track(); _parseTracks = new TrackParsing(_track); _filter = new FilterFlightLimits(); _collision = new CheckCollision(); _comparetracks = new CompareTracks(); _writeToConsole = Substitute.For <WriteToConsole>(); _alarm = Substitute.For <ConflictAlarm>(); _mainreciever = new MainReceiver(_receiver, _filter, _write, _collision, _comparetracks, _parseTracks); }
protected override void Init() { base.Init(); m_r2d = GetComponent <Rigidbody2D>(); m_CheckCollisionId = database.GetDataId("checkCollision"); database.SetData <bool>(m_CheckCollisionId, false); CheckPlayer _checkPlayer = new CheckPlayer(m_Find, true); CheckCollision _checkCollision = new CheckCollision(m_CheckCollisionId); _root = new BTPrioritySelector(); _root.AddChild(new PlayAnimation("exploision", _checkCollision)); _root.AddChild(new PlayAnimation("fall", _checkPlayer)); _root.AddChild(new PlayAnimation("hang")); }
public void OnLiftPlat(Player player)//检测与玩家的碰撞 { RaycastHit2D hit = CheckCollision.CheckUpCollison(rig, player.Layer, 0.1f); if (hit.collider != null) { player.speed.y = curSpeed + (hit.point.y - player.rig.GetComponent <Collider2D>().bounds.center.y + player.Collider2DExtents.y) / Time.deltaTime; player.IsOnPlat = true; player.IsFloat = false; } else { player.IsOnPlat = false; } }
static void Main(string[] args) { IWrite writer = new WriteToConsole(); CheckCollision checkcollision = new CheckCollision(); ITrack track = new Track(); ITrackParsing parseTracks = new TrackParsing(track); ICompareTracks comparetracks = new CompareTracks(); IFilterFlightLimits filter = new FilterFlightLimits(); var myReceiver = TransponderReceiverFactory.CreateTransponderDataReceiver(); var receiver = new MainReceiver(myReceiver, filter, writer, checkcollision, comparetracks, parseTracks); Console.ReadKey(); }
void CheckMapLayer() { //地刺和升降台的碰撞检测 RaycastHit2D hit = CheckCollision.CheckDownCollison(player1.rig, mapLayer, 0.01f); if (hit.collider != null) { if (hit.collider.tag == "prickle") { GameStatus.IsAlive = false; } } hit = CheckCollision.CheckDownCollison(player2.rig, mapLayer, 0.01f); if (hit.collider != null) { if (hit.collider.tag == "prickle") { GameStatus.IsAlive = false; } } if (liftPlats.Length > 0) { player1.IsOnPlat = false; for (int i = 0; i < liftPlats.Length && !player1.IsOnPlat; i++) { liftPlats[i].OnLiftPlat(player1); } player2.IsOnPlat = false; for (int i = 0; i < liftPlats.Length && !player2.IsOnPlat; i++) { liftPlats[i].OnLiftPlat(player2); } if (player1.isOnOther && player2.IsOnPlat) { player1.speed.y = player2.speed.y; } if (player2.isOnOther && player1.IsOnPlat) { player2.speed.y = player1.speed.y; } } }
[SerializeField] private float bias; //How far from the centre should the connection point spawn the next room? public IEnumerator GenerateRoom(GameObject roomToGenerate, bool isDeadEnd = false) { Quaternion rotation = Quaternion.LookRotation(this.transform.forward); Vector3 position = GenerateRelativeVector(rotation.eulerAngles.y, bias); GameObject generatedRoom = Instantiate(roomToGenerate, position, rotation); yield return(null); ConnectionPoint[] connectionPoints = null; ConnectionPoint chosenPoint = null; if (!isDeadEnd) { connectionPoints = generatedRoom.GetComponentsInChildren <ConnectionPoint>(); chosenPoint = connectionPoints[0]; } CheckCollision validatorNewRoom = generatedRoom.GetComponentInChildren <CheckCollision>(); validatorNewRoom.TurnOnCollider(); yield return(new WaitForSeconds(0.03f)); if (validatorNewRoom.GetIsCollided()) { Destroy(generatedRoom); yield return(null); } else { this.SetConnected(); if (!isDeadEnd) { //deactivate Deco before generating NavMesh generatedRoom.transform.Find("Environment").Find("Deco").gameObject.SetActive(false); MapGenerator.AddGeneratedRoom(generatedRoom); chosenPoint.SetConnected(); MapGenerator.AddConnectionPoints(connectionPoints); } } }
void Open() { RaycastHit2D hit = CheckCollision.CheckUpCollison(rig, relayLayer, 0.1f);//与继电器的碰撞检测 if (hit.collider != null) { if (isControlDoor) { door.isOpen = true; } else if (isControlFloor) { for (int i = 0; i < tropFloors.Length; i++) { tropFloors[i].canBroken = true; tropFloors[i].liveTime = i * 0.4f + 0.4f;//设置玻璃的剩余时常 } } GameObject.Instantiate(keyOpen, transform.position, Quaternion.identity, transform.parent);//建造开关—开 GameObject.Destroy(gameObject); } }
public IEnumerator GenerateDeadend() { GameObject roomToGenerate = deadend; Quaternion rotation = Quaternion.LookRotation(this.transform.forward); Vector3 position = GenerateRelativeVector(rotation.eulerAngles.y, bias); GameObject generatedRoom = Instantiate(roomToGenerate, position, rotation); yield return(null); CheckCollision validatorNewRoom = generatedRoom.GetComponentInChildren <CheckCollision>(); validatorNewRoom.TurnOnCollider(); yield return(new WaitForSeconds(0.05f)); if (validatorNewRoom.GetIsCollided()) { Destroy(generatedRoom); yield return(null); } else { this.SetConnected(); } }
public Projectile(World world, Vector2 position, Texture2D texture, Vector2 size, Vector2 cursPosition, CompositeCharacter player, CheckCollision collisionChecker) : base(world, position, texture, size, 0f) { this.body.CollisionCategories = Category.Cat24; this.collisionChecker = collisionChecker; this.cursPosition = cursPosition; movements = cursPosition - position; if (movements != Vector2.Zero) { movements.Normalize(); } float angle = (float)Math.Atan2( movements.Y, movements.X ); movements = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)); //ignore collision with the player shooting body.IgnoreCollisionWith(player.body); body.IgnoreCollisionWith(player.wheel); body.IgnoreGravity = true; body.IsBullet = true; body.LinearVelocity = movements + player.body.LinearVelocity; if(collisionChecker != null) body.OnCollision += new OnCollisionEventHandler(OnProjectileCollision); }
public void Setup() { uut = new CheckCollision(); }
private void OnTriggerEnter2D(Collider2D other) { CheckCollision.Invoke(this, other.GetComponent <ICollision>()); }
private IEnumerator WaitAndPrint() { int amountRows = 1; float newZPos; for (int j = 0; j < amountRows; j++) { newZPos = 1.1f * j; Debug.Log("NIEUWE ROW"); int l = 0; int k = 0; int flip = 0; bool insideWall = false; for (int i = 0; i < amountTargets; i++) { if (i % 2 == 0 && k == 0) { flip = 1; } else { if (k == 0) { flip = -1; } l++; } newPos = new Vector3(transform.position.x + 1.1f * l * flip, transform.position.y, newZPos); GameObject newSphere = Instantiate(sphereTarget, newPos, Quaternion.identity); CheckCollision checkCollision = newSphere.GetComponent <CheckCollision>(); yield return(new WaitForSeconds(0.1f)); if (checkCollision.isColliding) { if (i != 0) { k++; } else { insideWall = true; } if (k == 1) { i--; Debug.Log(insideWall); if (insideWall) { i--; } } flip *= -1; if (flip == 1) { l--; } Destroy(newSphere); if (k == 2) { amountRows++; amountTargets -= i; i += 1000; } } if (i == maxRowSize - 1) { amountRows++; amountTargets -= i; i += 1000; } } } }
public int DriveTo(Vector3 target, bool enablePathfinding, Collider other=null, float distanceThreshold=0.5f) /* Drive near a position until distance threshold is reached. If collider is provided, then also return 0 if colliders are touching even before threshold is reached. Return codes: 0: Target reached, distance below threshold 2: Driving towards target otherwise */ { // Check if we are already there var dist = new float(); dist = Utils.FlatDist(robotBody.position, target); if (Mathf.Abs(dist) <= distanceThreshold) { return 0; } if (other != null && CheckCollision.Check(robotBody.GetComponent<Collider> (), other)) { //Debug.Log("Touching other"); return 0; } // Get next waypoint if pathfinding if (enablePathfinding) { if (target != prevTarget) { getWaypoint = true; pathFinding.SetDestination(target); } prevTarget = target; if (getWaypoint) { waypoint = pathFinding.NextWaypoint(); getWaypoint = false; } } else { waypoint = target; } // Calculate distance again, needed because we might only be at the // waypoint and not the actual target dist = Utils.FlatDist(robotBody.position, waypoint); // Current waypoint reached but not yet at target, get next one if (enablePathfinding && (Mathf.Abs(dist) <= distanceThreshold)) { getWaypoint = true; return 2; } if (TurnTo(waypoint) == 2) { //Debug.Log(string.Format("turning towards {0}", dest)); return 2; } // Don't move too fast if (Mathf.Abs(dist) < slowingDistanceModifier * robotBody.velocity.magnitude) { return 2; } // Did not reach destination yet but we are turned correctly, // decide if we should drive forwards or backwards var dir = (dist > distanceThreshold) ? 1 : -1; Drive(dir); return 2; }