示例#1
0
        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();
            }
        }