유니티에서 기본적인 키보드 조작 방법과 물리 시뮬레이션을 다루는 방법을 배우기 위한 가장 쉽고 간단한 점프 큐브 예제를 만들어 보겠습니다.
큐브 생성
Hierarchy 뷰에서 마우스 오른쪽 버튼을 클릭하고, 3D Object > Cube를 선택하여 씬에 큐브를 생성하세요.
바닥 생성
Hierarchy 뷰에서 마우스 오른쪽 버튼을 클릭하고, 3D Object > 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 키를 눌러 큐브가 점프하는지 확인하세요. 위의 단계를 정확하게 따라 했다면, 다음과 같은 결과를 보실 수 있습니다.
더 공부할 자료 - 개발 능력 다양화를 위한 학습의 필요성
유니티 엔진의 대안으로서, 인디 개발자들에게 선풍적인 인기를 끌고 있는 엔진이 바로 고도 엔진입니다. 혹시 고도 엔진을 배워 보려고 하신다면, 다음의 온라인 강의를 체크해 보시기 바랍니다.