private void OnTriggerEnter2D(Collider2D other)
 {
     // Debug.Log(this);
     // Debug.Log(other);
     // Debug.Log(other.gameObject);
     CheckCollision.Invoke(this, other.gameObject.GetComponent <ICollision>());
 }
Exemple #2
0
    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);
        }
    }
Exemple #3
0
    [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);
 }
Exemple #15
0
    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;
            }
        }
    }
Exemple #19
0
    [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);
            }
        }
    }
Exemple #20
0
    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);
        }
    }
Exemple #21
0
    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);
        }
Exemple #23
0
 public void Setup()
 {
     uut = new CheckCollision();
 }
 private void OnTriggerEnter2D(Collider2D other)
 {
     CheckCollision.Invoke(this, other.GetComponent <ICollision>());
 }
Exemple #25
0
    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;
                }
            }
        }
    }
Exemple #26
0
	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;

	}