Unity3d

유니티에서 캐릭터 점프 구현하기

GameLabMaster 2023. 4. 18. 11:22

안녕하세요! 오늘의 포스팅에서는 유니티에서 캐릭터 점프 기능을 구현하는 방법에 대해 설명하겠습니다. 점프는 대부분의 게임에서 필수적인 요소이므로 이번 포스팅을 통해 게임 개발에 있어 중요한 능력을 키울 수 있습니다.

1. 점프 입력 처리하기

먼저, 캐릭터가 점프하기 위한 입력을 처리해야 합니다. 이를 위해 Update() 메서드에서 입력을 확인하고 점프를 실행하도록 합니다.

 

private void Update()
{
    if (Input.GetButtonDown("Jump"))
    {
        Jump();
    }
}

2. 점프 로직 구현하기

Jump() 메서드를 작성하여 캐릭터에게 수직 방향의 힘을 가해줍니다. 이때 Rigidbody 컴포넌트를 사용하여 힘을 가하고 물리 시뮬레이션을 구현합니다.

 

public float jumpForce = 5f;
private Rigidbody rb;

private void Start()
{
    rb = GetComponent<Rigidbody>();
}

private void Jump()
{
    rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}

3. 바닥 체크

점프 중에는 추가적인 점프를 할 수 없도록 바닥 체크를 구현해야 합니다. 이를 위해 Raycast를 사용하여 캐릭터의 위치에서 아래 방향으로 레이를 발사하고 바닥과의 거리를 확인합니다.

 

public LayerMask groundLayer;
public float groundCheckDistance = 0.1f;
private bool isGrounded;

private void Update()
{
    isGrounded = Physics.Raycast(transform.position, Vector3.down, groundCheckDistance, groundLayer);

    if (isGrounded && Input.GetButtonDown("Jump"))
    {
        Jump();
    }
}

 

이제 캐릭터가 바닥에 있을 때만 점프를 할 수 있습니다.

4. 점프 높이 조절하기 (선택 사항)

점프 중 키를 누르고 있는 시간에 따라 점프 높이를 조절하려면 다음과 같이 코드를 수정할 수 있습니다.

 

public float jumpForce = 5f;
public float jumpDuration = 0.5f;
private bool isJumping = false;
private float jumpStartTime;

private void Update()
{
    isGrounded = Physics.Raycast(transform.position, Vector3.down, groundCheckDistance, groundLayer);

    if (isGrounded && Input.GetButtonDown("Jump"))
    {
        Jump();
    }

    if (isJumping && Input.GetButton("Jump") && Time.time - jumpStartTime < jumpDuration)
    {
        JumpHigher();
    }

    if (Input.GetButtonUp("Jump"))
       {
        isJumping = false;
    }
}

private void Jump()
{
    rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
    isJumping = true;
    jumpStartTime = Time.time;
}

private void JumpHigher()
{
    rb.AddForce(Vector3.up * jumpForce * Time.deltaTime, ForceMode.Impulse);
}

 

위 코드는 점프 중에 "Jump" 키를 계속 누르고 있는 동안 캐릭터가 더 높이 점프할 수 있도록 합니다. 이 기능은 선택 사항이므로 게임 디자인에 따라 추가할 수도 있고 생략할 수도 있습니다. 이상으로 유니티에서 캐릭터 점프 기능을 구현하는 방법에 대해 알아보았습니다. 이 포스팅을 통해 게임에서 점프 기능을 구현할 수 있게 되었다면 큰 성과를 거둔 것입니다. 다음 포스팅에서는 또 다른 유용한 게임 개발 기술에 대해 알아보도록 하겠습니다.