2022. 8. 10. 17:00ㆍ코딩 2막 <C#개념편>
계단과 경사 같은 지형을 만들어서
캐릭터가 지형을 이동할 수 있는지
확인해보겠습니다
오늘은 유니티 3D 객체의 이동과 관련된 3가지 이동 방식에 대해서 배우겠습니다
그 순서는 다음과 같습니다
- Rigidbody 컴포넌트를 통해 힘(Force) 또는 속력(Velocity)을 통한 객체의 이동
- Rigidbody가 없는 CharacterController 컴포넌트를 통한 객체의 이동
- Raycast를 이용하여 지정된 좌표의 방향으로 객체가 이동하는 NavMeshAgent
입력관리자(InputManager)
rigidbody(강체)
물체에 질량을 갖게 해주는 컴포넌트
물체에 속력과 힘을 가하여 움직이게 만들수 있음
중력에 영향을 받기때문에 별도의 선택이 없다면 수직 아래 방향으로 떨어짐
리지드바디가 없다면 어떻게 될까?
frame
1초마다 화면에 출력되는 횟수
frame이 높을수록 부드럽게 게임이 진행됨(즉, 좋은컴 win)
*deltaTime - 1 frame 동안 소요되는 시간
=> 시간 동기화에 사용. update에서는 반드시 deltaTime을 진행 해줘야됨
CharacterController
캐릭터컨트롤러는 물리적 영향이 필요없는 FPS같은 게임류에서
주로 적용하는 게임적 이동 컴포넌트입니다
Navigation
경로상태 시스템
게임상에서 경로를 탐색하는 작업이 결코 빠르지 않음
Raycast
ray는 광선의 의미
ray는 예측이 필요할 때 쓰인다 (raycast를 통해 부딪히는 지점이 있는지 예측)
즉 네비게이션과 같이 목적지가 중요한 경우 자주 쓰인다
Camera.main : 태그가 "camera"인 오브젝트 = "Main Camera"
카메라로부터 마우스 좌표 위치를 관통하는 광선 생성((ง •_•)ง 메인카메라를 쓰는 방법이 그다지 좋지않음)
ray.origin : 광선의 시작 위치
ray.direction : 광선의 진행 방향
Physics.Raycast() : 광선을 발사해서 부딪히는 오브젝트를 검출 (광선에 부딪히는 오브젝트가 있으면 true)
ray.origin 위치로부터 ray.direction 방향으로 무한한 길이(Mathf.Infinity)의 광선 발사
광선에 부딪히는 오브젝트의 정보를 hit에 저장
<참고>
공감해주셔서 감사합니다
'코딩 2막 <C#개념편>' 카테고리의 다른 글
[C#, 유니티] Unity3D_Delegate, Event (0) | 2022.08.12 |
---|---|
[C#, 유니티] Unity3D_인터페이스 (4) | 2022.08.11 |
[게임 디자인] 시스템 디자인의 기초 3 (4) | 2022.08.05 |
[게임 디자인] 시스템 디자인의 기초 2 (0) | 2022.08.05 |
[게임 디자인] 시스템 디자인의 기초 1 (2) | 2022.08.04 |