Esempio n. 1
0
        public bool Collide(Tank pTank)
        {
            /*
             * Vector2 tankPos = pTank.GetWorldPosition();
             * float tankRot = pTank.GetRotation();
             * Vector2 tankPos2 = GetWorldPosition();
             *
             * if ((tankPos - tankPos2).Length() < 2 * DGS.TANK_RADIUS)
             * {
             *  return true;
             * }
             *
             * return false;
             * */
            Vector2[] thisTankCorners  = new Vector2[4];
            Vector2[] otherTankCorners = new Vector2[4];
            GetCorners(thisTankCorners);
            pTank.GetCorners(otherTankCorners);

            for (int i = 0; i < 4; i++)
            {
                if (PointIsInTank(otherTankCorners[i]) || pTank.PointIsInTank(thisTankCorners[i]))
                {
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 2
0
        public bool Collide(Tank pTank)
        {
            Vector2[] tankCorners = new Vector2[4];
            pTank.GetCorners(tankCorners);

            foreach (Vector2 corner in tankCorners)
            {
                if ((corner.X >= m_Rectangle.Left) &&
                    (corner.X <= m_Rectangle.Right) &&
                    (corner.Y <= m_Rectangle.Bottom) &&
                    (corner.Y >= m_Rectangle.Top))
                {
                    return(true);
                }
            }
            return(false);
        }