Example #1
0
        public Vector3 SimulateShipMovement(InputActionEnemy action, GameTime gameTime)
        {
            float second = (float)gameTime.ElapsedGameTime.TotalSeconds;
            float currentTurningSpeed = second * TurningSpeed;

            float ShipSpeedTest = ShipSpeed;

                switch (action)
                {
                    case InputActionEnemy.Forward:
                        ShipSpeedTest = MaxShipSpeed;
                        break;
                    case InputActionEnemy.Reverse:
                        ShipSpeedTest = MinShipSpeed;
                        break;
                    case InputActionEnemy.Stop:
                        ShipSpeedTest = 0;
                        break;
                }

            Vector3 ShipPositionSim = ShipPosition;

            ShipPositionSim += Vector3.Transform(Vector3.UnitZ, ShipRotation) * (ShipSpeedTest * second);

            return ShipPositionSim;
        }
Example #2
0
        public override void MoveShip(InputActionEnemy action, GameTime gameTime)
        {
            //0.001f
            float second = (float)gameTime.ElapsedGameTime.TotalSeconds;
            float currentTurningSpeed = second * TurningSpeed;

            if (_deadLockDelay > 0)
            {
                ShipRotation = FollowShip(_alternateRotation, 0.0005f);
            }
            else
            {
                ShipRotation = FollowShip(ClosestFriendPosition, 0.0005f);
            }

            //Increments the Acceleration Variable.  Acceleration should occur for 0.5 seconds.  This means the ship has only 0.5 seconds to react to another movement.
            if (ShipSpeed == MaxShipSpeed)
            {
                if (_xIndexSpeed < 30)
                {
                    _momentum = CalculateAcceleration(++_xIndexSpeed);

                }
            }
            else if (ShipSpeed == MinShipSpeed)
            {
                if (_xIndexSpeed > -30)
                {
                    _momentum = CalculateAcceleration(--_xIndexSpeed) * -1;
                }
            }
            else if (_shipStopped)
            {
                if (_xIndexSpeed < 0)
                    _momentum = CalculateAcceleration(++_xIndexSpeed);
                else if (_xIndexSpeed > 0)
                    _momentum = CalculateAcceleration(--_xIndexSpeed);
            }

            switch (action)
            {
                case InputActionEnemy.Forward:
                    //The Enemy cannot move until it finalizes it's acceleration.
                    if (ShipSpeed != MaxShipSpeed)
                    {
                        ShipSpeed = MaxShipSpeed;
                        _shipStopped = false;
                    }
                    break;
                case InputActionEnemy.Reverse:
                    if (ShipSpeed != MinShipSpeed)
                    {
                        ShipSpeed = MinShipSpeed;
                        _shipStopped = false;
                    }
                    break;
                case InputActionEnemy.Stop:
                    if (!_shipStopped)
                    {
                        _shipStopped = true;
                    }
                    break;
            }

            //Updates ShipPosition.
            ShipPosition += Vector3.Transform(Vector3.UnitZ, ShipRotation) * (ShipSpeed * _momentum * second);
            //Updates ShipWorld.
            ShipWorld = Matrix.CreateFromQuaternion(ShipRotation) * Matrix.CreateTranslation(ShipPosition);
        }
Example #3
0
        public void MoveShip(InputActionEnemy action, GameTime gameTime)
        {
            float second = (float)gameTime.ElapsedGameTime.TotalSeconds;
            float currentTurningSpeed = second * TurningSpeed;

            if (_deadLockDelay > 0)
            {
                ShipRotation = FollowShip(_alternateRotation, 0.025f);
            }
            else
            {
                ShipRotation = FollowShip(ClosestEnemyPosition, 0.025f);
            }

            if (Acceleration < 1f)
                Acceleration += 0.034f;

                switch (action)
                {

                    case InputActionEnemy.Forward:
                        if (ShipSpeed != MaxShipSpeed && Acceleration >= 1f)
                        {
                            ShipSpeed = MaxShipSpeed;
                            Acceleration = 0;
                        }
                        break;
                    case InputActionEnemy.Reverse:
                        if (ShipSpeed != MinShipSpeed && Acceleration >= 1f)
                        {
                            ShipSpeed = MinShipSpeed;
                            Acceleration = 0;
                        }
                        break;
                    case InputActionEnemy.Stop:
                        if (ShipSpeed != 0 && Acceleration >= 1f)
                        {
                            ShipSpeed = 0;
                            Acceleration = 0;
                        }
                        break;
                }

            ShipPosition += Vector3.Transform(Vector3.UnitZ, ShipRotation) * (ShipSpeed * Acceleration * second);

            ShipWorld = Matrix.CreateFromQuaternion(ShipRotation) * Matrix.CreateTranslation(ShipPosition);
        }