오늘은 Player 오브젝트를 생성해보고 키보드 방향키로 움직이도록 만들어보겠다.
우선 나의 플레이어 오브젝트는 아래와 같은 기능을 가진다.
1. 플레이어 오브젝트 기능:
- 파란색 캡슐 모양
- 상하좌우 혹은 WASD 키로 움직일 수 있다
2. 플레이어 오브젝트 만들기
1) Hierarchy > + > 3D Object > Capsule
2) 이름을 'Player'로 변경
3) 위치를 (0, 1, 0)으로 변경
3. 색 변경하기
색을 변경하기 위해, 우선 Projects 창에서 Material을 생성해야 한다. 지난번 글에서 언급했다시피, Projects 창은 Hierarchy창에 가기 전, 대기실 역할을 한다고 이야기했다.
Material 생성 방법:
1) Project > + > Material
2) 이름을 'Player Color'로 변경하기
이름을 변경한 후, 해당 Material을 선택하면 Inspector창에 Material에 대한 정보가 뜬다. 여기서 색을 지정한다.
1) Material 선택
2) Inspector > *Albedo > (0, 100, 164)로 변경
3) 지정된 색을 갖고 있는 Material을 Player 오브젝트에 적용하기 위해, Material을 Scene에 보이는 Player 오브젝트로 드래고 & 드롭 해준다.
*Albedo는 물체가 빛을 받았을 때, 반사하는 정도를 나타내는 단위이다.
4. Rigidbody 컴포넌트 설정
플레이어 오브젝트를 움직이기 위해 물리적인 힘과 속력이 필요하다. 이를 위해 오브젝트에 Rigidbody 컴포넌트를 추가해야 한다.
1) 오브젝트를 선택 후, Inspector 창 > 하단 Add Component 버튼 클릭 > Physics > Rigidbody
하지만, 오브젝트는 현재 오뚝이 모양이라 쓰러질 수도 있다. 이를 막기 위해 Rigidbody 제약 옵션을 설정해줘야 한다.
1) 오브젝트를 선택 후, Inspector창 > Constraints > Freeze Position은 Y만 체크 > Freeze Rotation은 X, Z만 체크해준다.
이제 플레이어 오브젝트는 높이가 변경되지 않고, Y축으로만 회전 가능하다!
5. 스크립트 작성하기
이제 플레이어 오브젝트를 조정하는 스크립트를 작성해야 한다. 스크립트는 Project 창 > + > C# Script를 선택한다.
우리가 작성할 스크립트에는 다음 두 가지의 기능을 가져야 한다.
- 사용자 키보드 입력 감지
- RigidBody 사용하여 플레이어 오브젝트를 움직이기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public Rigidbody playerRigidbody; //이동에 사용할 리지드바디 컴포넌트
public float speed = 8f; //이동 속력
void Start(){}
void Update()
{
if(Input.GetKey(KeyCode.UpArrow) == true){ //방향키를 눌렀을 때 움직이기
playerRigidbody.AddForce(0f,0f,speed);
}
if(Input.GetKey(KeyCode.DownArrow) == true){
playerRigidbody.AddForce(0f,0f,-speed);
}
if(Input.GetKey(KeyCode.RightArrow) == true){
playerRigidbody.AddForce(speed,0f,0f);
}
if(Input.GetKey(KeyCode.LeftArrow) == true){
playerRigidbody.AddForce(-speed,0f,0f);
}
}
}
Input.GetKey()는 실행될 때 해당 키를 누르고 있으면 true, 그렇지 않으면 false를 반환하며, Update()는 1초에 수십 번씩 실행되어 화면 프레임을 매번 새로 그린다.
6. 스크립트를 플레이어에 적용하기
다시 유니티 화면으로 돌아가서,
1) 프로젝트 창에 있는 스크립트를 드래그해서 Hierarchy > Player에 드롭한다.
2) Hierarcy > Player를 선택하여 Inspector 창 > Rigidbody 컴포넌트를 드래그해서 Player Controller의 Player Rigidbody 필드에 드롭한다. (Rigidbody 컴포넌트를 PlayerRigidbody에 할당하는 과정이다)
이제 완성이다. 화면 상단에 플레이 버튼을 누르고, 키보드의 방향키로 플레이 오브젝트를 이동할 수 있다!
'Unity 기초' 카테고리의 다른 글
[Unity 기초] 레이아웃 및 화면 설정 & 프리팹(Prefab)이란? (0) | 2024.09.11 |
---|