void ShipMove(Ship _s, float _targetRange) { float _distance = Vector2.Distance( _s.Position, fleetTargets[_s].Position); if ( _distance > _targetRange * 0.9f || _distance < _targetRange * 0.7f ) { double _angle = Math.Atan2( fleetTargets[_s].Position.Y - _s.Position.Y, fleetTargets[_s].Position.X - _s.Position.X); //aiming at 90% of the range so we have a bit of margin if //we/they move _s.TargetPosition = new Vector2( fleetTargets[_s].Position.X + (float)Math.Cos(_angle) * _targetRange * 0.9f, fleetTargets[_s].Position.Y + (float)Math.Sin(_angle) * _targetRange * 0.9f ); } else { _s.Stop(); } }