유니티에서 기본적인 키보드 조작 방법과 물리 시뮬레이션을 다루는 방법을 배우기 위한 가장 쉽고 간단한 점프 큐브 예제를 만들어 보겠습니다.

큐브 생성

Hierarchy 뷰에서 마우스 오른쪽 버튼을 클릭하고, 3D Object > Cube를 선택하여 씬에 큐브를 생성하세요.

씬에 큐브를 생성한다

바닥 생성

Hierarchy 뷰에서 마우스 오른쪽 버튼을 클릭하고, 3D Object > Plane을 선택하여 씬에 바닥을 추가하세요.

Plane 을 이용해서 바닥을 생성한다

바닥(Plane)의 Transform 컴포넌트에서 Position 값을 (0, -0.5, 0)으로 설정하여, 큐브 바로 아래에 위치하도록 하세요.

바닥의 위치를 조정한다

큐브에 리지드바디 컴포넌트 추가

큐브를 클릭한 후, Inspector 뷰에서 Add Component 버튼을 클릭하고, RigidBody를 검색하여 선택하고 추가하세요. 이렇게 하면 큐브에 물리 시뮬레이션을 적용할 수 있습니다.

큐브에 리지드바디를 추가한다

키보드 입력을 관리하는 스크립트 작성

Project 뷰에서 Assets 폴더를 선택한 다음, 마우스 오른쪽 버튼을 클릭하여 Create > C# Script를 선택하고, 스크립트의 이름을 “BoxJump”으로 지정하세요.

애셋 폴더에 스크립트를 생성한다

스크립트를 더블 클릭하여 Visual Studio에서 열면 다음과 같은 디폴트 스크립트를 볼 수 있습니다.

using UnityEngine;

public class BoxJump : MonoBehaviour
{    
    void Start()
    {        
    }
    
    void Update()
    {        
    }
}

이제 여기에 jumpForce라는 변수를 만들고 기본 값을 5.0f로 지정합니다. 이 변수는 점프력을 나타내기 위한 것입니다.

using UnityEngine;

public class BoxJump : MonoBehaviour
{
    public float jumpForce = 5.0f;

    void Start()
    {
    }

    void Update()
    {
    }
}

다음으로, 클래스의 시작시에 Rigidbody 컴포넌트를 가져와야 합니다. Rigidbody는 물리엔진을 사용하여 오브젝트를 제어할 수 있게 해주는 컴포넌트입니다. 그러기 위해 private 변수 rb를 추가하고, Start() 메소드에서 GetComponent로 Rigidbody를 가져옵니다.

using UnityEngine;

public class BoxJump : MonoBehaviour
{
    public float jumpForce = 5.0f;
    private Rigidbody rb;

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

    void Update()
    {
    }
}

먼저, Update() 메소드 안에 스페이스바를 누르는 것을 감지하는 조건문을 작성합니다. 이를 위해 Input.GetKeyDown() 메소드를 사용하고, 인자로 KeyCode.Space를 전달합니다. 이렇게 하면 스페이스바가 눌러졌을 때 조건문이 실행됩니다.

using UnityEngine;

public class BoxJump : MonoBehaviour
{
    public float jumpForce = 5.0f;
    private Rigidbody rb;

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

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
        }
    }
}

이제 조건문 안에서 Rigidbody에 힘을 가해 상자가 점프할 수 있도록 코드를 작성하겠습니다. 이를 위해 rb.AddForce() 메소드를 사용합니다. 힘의 방향은 Vector3.up(위쪽)이고, 크기는 jumpForce와 곱해집니다. 힘의 적용 방식은 ForceMode.Impulse(충격)를 사용합니다.

using UnityEngine;

public class BoxJump : MonoBehaviour
{
    public float jumpForce = 5.0f;
    private Rigidbody rb;

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

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        }
    }
}

이제 코드 작성이 끝났습니다. 이 코드는 스페이스바를 눌렀을 때 상자가 점프하는 기능을 구현하고 있습니다. AddForce() 메소드를 사용해 Rigidbody에 힘을 가하면 물리 엔진이 오브젝트를 이동시키므로, 상자가 점프하는 모습을 볼 수 있습니다.

스크립트를 큐브에 적용

에디터로 돌아가서 BoxJump 스크립트를 큐브로 드래그 앤 드롭하세요.

스크립트를 큐브에 붙인다

테스트

에디터 상단의 Play 버튼을 눌러 데모를 실행하고, Space 키를 눌러 큐브가 점프하는지 확인하세요. 위의 단계를 정확하게 따라 했다면, 다음과 같은 결과를 보실 수 있습니다.

스페이스 바를 누르면 점프한다

추천 학습 자료