본문 바로가기

Unity3d

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

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

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