Esempio n. 1
0
        void Move(Vector3 direction, bool upOrDown = false)
        {
            if (playerSwimming)
            {
                // Do not allow player to swim up out of water, as he would immediately be pulled back in, making jerky movement and playing the splash sound repeatedly
                if ((direction.y > 0) && (playerMotor.controller.transform.position.y + (50 * MeshReader.GlobalScale) - 0.93f) >=
                    (GameManager.Instance.PlayerEnterExit.blockWaterLevel * -1 * MeshReader.GlobalScale))
                {
                    direction.y = 0;
                }

                Entity.PlayerEntity player = GameManager.Instance.PlayerEntity;
                float baseSpeed            = playerMotor.GetBaseSpeed();
                moveSpeed = playerMotor.GetSwimSpeed(baseSpeed);
            }

            // There's a fixed speed for up/down movement
            if (upOrDown)
            {
                moveSpeed = 80f / PlayerMotor.classicToUnitySpeedUnitRatio;
            }

            playerMotor.controller.Move(direction * moveSpeed * Time.deltaTime);
            // Reset to levitate speed in case it has been changed by swimming
            moveSpeed = 4.0f;
        }