Ejemplo 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);
        }
Ejemplo n.º 2
0
 public bool Collide(Tank pTank, out Vector2 pCollisionNormal)
 {
     /*
      * Vector2 tankPos = pTank.GetWorldPosition();
      * float tankRot = pTank.GetRotation();
      * Vector2 bulletPos = Position;
      *
      * if((tankPos - bulletPos).Length() < DGS.TANK_RADIUS)
      * {
      *  pCollisionNormal = (bulletPos - tankPos);
      *  pCollisionNormal.Normalize();
      *  return true;
      * }
      * pCollisionNormal = Vector2.Zero;
      * return false;
      */
     pCollisionNormal = Vector2.Normalize(Position - pTank.GetWorldPosition());
     return(pTank.PointIsInTank(Position));
 }