Beispiel #1
0
        private IEnumerator WaitingMovementRoutine()
        {
            //Random small movement

            while (_state == DroneState.SEARCHING_ENEMY)
            {
                var point = _startPosition + MRandom.OnUnitCircle() * width * 0.5f;

                var   distance    = point - _pos;
                float distanceMag = distance.Magnitude;

                while (distanceMag > 20)
                {
                    var distanceNorm = distance.Normalized;

                    _currentSpeed = (_state == DroneState.SEARCHING_ENEMY) ? _waitingSpeed : _maxSpeed;

                    var nextPos = distanceNorm * _currentSpeed;

                    //Console.WriteLine($"{this}: {x:0.00} | {y:0.00} | dist: {distanceMag:0.00} | startpos: {_startPosition} | point: {point} | speed: {speed} | nextPos: {nextPos}");

                    Translate(nextPos.x * Time.delta, nextPos.y * Time.delta);

                    yield return(null);

                    distance    = point - _pos;
                    distanceMag = distance.Magnitude;
                }
            }
        }