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