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); }
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); }