플레이어(Capsule), 바닥(Plane) , 벽(Cube) 게임 오브젝트 생성
- 플레이어 게임오브젝트 : Hierarchy 창에서 Capsule 클릭
- 바닥 게임오브젝트 : Hierarchy 창에서 Plane 클릭
- 벽 게임오브젝트 : Hierarchy 창에서 Cube 클릭 , 생성 후 Ctrl+D 세번 해주기 (벽은 4개 필요하니까)
Cube들의 Transform 컴포넌트의 Scale과 Position을 조정해서 Plane의 사방 벽이 되도록 한다.
+게임 오브젝트 생성할 때 위치를 원점(Transform의 Position부분)으로 하고 싶다면, Inspector 창에서 톱니바퀴->Reset 클릭
+Plane의 크기는 가로세로 10유닛, 이때 1유닛은 Cube 한 변의 길이라는 것 참고!
+빈 게임 오브젝트(Level) 만들고 바닥 & 벽 게임 오브젝트들 모두 Drag&Drop해서 Hierarchy창 깔끔하게 정리
Material 설정
- Material = 셰이더[질감과 빛에 의한 반사/굴절 등의 효과] + 텍스쳐[표면에 입히는 이미지 파일]
-> 게임 오브젝트의 컬러를 결정한다.- Material 만들기 : Project 창에서 Assets 폴더 아래에 'Materials' 폴더를 생성하고 그 폴더로 이동한 뒤
-> "마우스 우클릭->Create->Material"
나는 Albedo로 물체표면색을 바꿔주고, Smoothness 만 조금 조정해 줬다.
'Plane Color', 'Player Color' Material 을 만들고 각 Plane, Player 게임 오브젝트에 Drag&Drop 해주기
카메라 설정
- Main Camera 게임오브젝트의 Position과 Rotation 수정
게임화면에 Level 전체가 한 눈에 보이도록 카메라의 Position과 Rotation을 조정한다.- Camera 배경 설정
Camera 컴포넌트는 기본값으로 배경을 가상의 하늘인 Skybox로 채우도록 설정되어 있다.
Main Camera의 Camera 컴포넌트에서 Clear Flags 의 값을 Solid Color 로 변경하고 아래의 Background 의 컬러 필드를 클릭해서 원하는 색으로 바꿔준다.
플레이어 설정 : 사용자 입력에 따른 Player의 위치 변화 구현
- Rigidbody 컴포넌트를 추가 : Player 게임오브젝트를 움직이는 데는 물리적인 힘과 속력이 필요하기 때문
+이때 Player 게임오브젝트는 Capsule 이기 때문에 Rigidbody 컴포넌트를 그대로 사용하면 플레이어가 오뚝이처럼 이리저리 넘어질 수가 있다.
+게임오브젝트가 넘어지는 것을 막기 위해 Rigidbody 컴포넌트의 Constraints 옵션을 조정
+게임오브젝트의 높이는 고정되고, 오직 Y축으로만 회전이 가능
- PlayerController 스크립트 생성
0. 유니티 이벤트 메서드 Update()
-> 한 프레임에 한 번, 매 프레임마다 반복 실행된다. 따라서 이를 통해 실시간으로 사용자의 입력을 감지한다.
1. 사용자의 입력을 감지하는 메서드를 모아둔 Input 클래스
-> Input.GetKey() 메서드는 키보드의 식별자를 KeyCode 타입으로 입력받는다.
2. Rigidbody.AddForce()if (Input.GetKey(KeyCode.UpArrow)) { // 위쪽 방향키 입력이 감지된 경우 z 방향 힘 주기 playerRigidbody.AddForce(0f, 0f, speed); }
값을 준 해당 축의 방향으로 speed 만큼의 힘을 받아 Player 가 움직인다.