Пример #1
0
    public void Update(Vector3 movementInput, float deltaTime)
    {
        UpdateVelocity(direction, deltaTime);

        timer += deltaTime;
        if (timer >= duration)
        {
            var stateSwitch = new CharacterStateSwitch3D(new GroundState3D(controller, velocity), movementInput, deltaTime, true);
            controller.ChangeCharacterState(stateSwitch);
        }
    }
Пример #2
0
    public void ChangeCharacterState(CharacterStateSwitch3D stateSwitch)
    {
        PrintStateSwitch(stateSwitch);

        characterState.Exit();
        characterState = stateSwitch.NewState;
        characterState.Enter();
        if (stateSwitch.RunImmediately)
        {
            characterState.Update(stateSwitch.MovementInput, stateSwitch.DeltaTime);
        }
    }
Пример #3
0
    public CharacterStateSwitch3D HandleCollisions(CollisionFlags collisionFlags)
    {
        CharacterStateSwitch3D stateSwitch;

        if ((collisionFlags & CollisionFlags.Below) == CollisionFlags.Below)
        {
            stateSwitch = new CharacterStateSwitch3D(new GroundState3D(controller, velocity));
        }
        else
        {
            stateSwitch = new CharacterStateSwitch3D();
        }

        return(stateSwitch);
    }
Пример #4
0
    public void Update(Vector3 movementInput, float deltaTime)
    {
        if (PlayerInputs.instance.DodgeButton && CanDodge())
        {
            var stateSwitch = new CharacterStateSwitch3D(new DodgeState3D(controller, velocity), movementInput, deltaTime, true);
            controller.ChangeCharacterState(stateSwitch);
        }

        else if (PlayerInputs.instance.JumpButton)
        {
            var stateSwitch = new CharacterStateSwitch3D(new AirState3D(controller, velocity), movementInput, deltaTime, true);
            controller.ChangeCharacterState(stateSwitch);
        }
        else
        {
            UpdateVelocity(movementInput, deltaTime);
        }
    }
Пример #5
0
    public void Update(Vector3 movementInput, float deltaTime)
    {
        if (Input.GetKeyDown(KeyCode.Space) && CanDodge())
        {
            var stateSwitch = new CharacterStateSwitch3D(new DodgeState3D(controller, velocity), movementInput, deltaTime, true);
            controller.ChangeCharacterState(stateSwitch);
        }

        /*else if (Input.GetKeyDown(KeyCode.Space))
         * {
         *
         *  var stateSwitch = new CharacterStateSwitch3D(new AirState3D(controller, velocity), movementInput, deltaTime, true);
         *  controller.ChangeCharacterState(stateSwitch);
         * }*/
        else
        {
            UpdateVelocity(movementInput, deltaTime);
        }
    }
Пример #6
0
 private void PrintStateSwitch(CharacterStateSwitch3D stateSwitch)
 {
     print("Switching character state from " + characterState.ToString() + " to " +
           stateSwitch.NewState.ToString());
 }