최대 1 분 소요

이 글은 유튜브 Sebastian Graves Create Dark Souls를 보고 따라 만들면서 헷갈리는 부분을 정리한 글입니다.

구현 개요

간단하게 점프를 구현함

구현 시작

InputSystem 추가

스페이스바로 점프 키를 할당함.

image


InputHandeler 스크립트 수정

public class InputHandler : MonoBehaviour
{
    ...
    public bool jump_Input;
    ...
    public void TickInput(float delta)
    {
        ...
        HandleJumpInput();
    }
    private void HandleJumpInput()
    {
        inputActions.PlayerActions.Jump.performed += inputActions => jump_Input = true;
    }
}


PlayerLocomotion 수정

다음 함수를 추가해줌.

다른 애니메이션 실행중이 아니거나, 움직이고 있을 때만 점프가 가능한 점프를 구현.

public void HandleJumping()
{
    if (playerManager.isInteracting)
    {
        return;
    }

    if (inputHandler.jump_Input)
    {
        if (inputHandler.moveAmount > 0)
        {
            moveDirection = cameraObject.forward * inputHandler.vertical;
            moveDirection += cameraObject.right * inputHandler.horizontal;
            animatorHandler.PlayTargetAnimation("Jump", true);
            moveDirection.y = 0;
            Quaternion jumpRotation = Quaternion.LookRotation(moveDirection);
            myTransform.rotation = jumpRotation;
        }
    }
}


PlayerManager 수정

새로운 파라미터 isInAir의 값을 수정하며 PlayerLocomotion의 HandleJumping()를 실행


public class PlayerManager : MonoBehaviour
{
    void Update()
    {
        ...
        anim.SetBool("isInAir", isInAir);
        ...
        playerLocomotion.HandleJumping();
        ...
    }


    private void LateUpdate()
    {
        ...
        inputHandler.jump_Input = false;
        ...
    }
}

점프 애니메이션 추가

image

image

결과

ezgif com-optimize

댓글남기기