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

큐브 생성

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 키를 눌러 큐브가 점프하는지 확인하세요. 위의 단계를 정확하게 따라 했다면, 다음과 같은 결과를 보실 수 있습니다.

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

더 공부할 자료 - 개발 능력 다양화를 위한 학습의 필요성

유니티 엔진의 대안으로서, 인디 개발자들에게 선풍적인 인기를 끌고 있는 엔진이 바로 고도 엔진입니다. 혹시 고도 엔진을 배워 보려고 하신다면, 다음의 온라인 강의를 체크해 보시기 바랍니다.

초보자를 위한 고도엔진 게임 개발 입문