public Vector2 Evade(BaseGameEntity target) { float distance = Vector2.Distance(target.position, position); float ahead = distance / 10; Vector2 futurePosition = target.position + target.velocity * ahead; return(Flee(futurePosition)); }
public void FireAt(BaseGameEntity ent, int id) { Vector2 direction = ent.GetCenter() - GetCenter(); direction.Normalize(); float rotation = (float)Math.Atan2(direction.Y, direction.X); this.rotation = rotation; gun.FireWeapon(rotation); //Game1.planet.bulletManager.AddBullet(GetCenter(), rotation, 50, .5f, 0); }
public Vector2 Arrive(BaseGameEntity target, float slowingDistance) { Vector2 desiredVelocity = target.position - position; float distance = desiredVelocity.Length(); if (distance < slowingDistance) { desiredVelocity.Normalize(); desiredVelocity *= maxVelocity * (distance / slowingDistance); } else { desiredVelocity.Normalize(); desiredVelocity *= maxVelocity; } Vector2 steering = desiredVelocity - velocity; return(steering); }
public float GetDistanceToEntity(BaseGameEntity target) { return(Vector2.Distance(position, target.position)); }