토의 내용
Rigid Body, Character Controller 결정
-> Character Controller 사용의견: 가벼워서 character controller가 좋을 것 같다
-> But! Rigid Body를 사용하는게 우리 게임이 1인칭에 플레이어 혼자만 움직이면 되는 게임이기 때문에 추후에 물리계산에도 유리한 Rigid Body가 좋다고 생각한다.
Input System
-> 키변경을 사용하게 된다면 Input System을 사용하는 것이 키 변경이 용이함.
-> 기존 방법을 사용하는게 지금처럼 짧은 개발을 여러번 하는 상황에서 유리할 수 있다.
-> Input System을 지금부터 사용하는게 추후에 개발에 적응하기 위해서 좋을 듯 하다.
-> 구버전 입력은 재사용이 어렵다. 하지만 InputSystem은 재사용이 간편하다.
Add Force를 사용해서 던지기
-> velocity는 Rigid Body에 해당값을 유지/ 값 변경이 힘들어서 기각
-> move point는 position값을 부드럽게 직접 변경/ 중력을 무시하기 때문에 기각
-> Add Force 채택
물체의 되감기 위치 저장
-> 무거운 물체는 정해져 있는 위치, 이동 거리만 저장해서 시간을 되감는 걸 표현
-> 가벼운 물체, 상호작용 가능한 물체는 물체의 transform 값을 실시간으로(정해진 시간만) 저장
시간 정지 방법
-> 1) TimeScale을 0으로 만들고, 플레이어에 Time.unscaledDeltaTime을 곱해 플레이어는 움직이게 -> 일시정지때 플레이어가 움직이는 문제 발생
-> 2) Time.deltatime에 특정 float값을 곱한 후, 그 float값을 0으로 만드는 방법
-> Addforce는 Time.deltatime에 영향을 받으므로 float을 0으로 만드는 방법을 사용하게 될 경우 시간이 흐르면 addforce값이 사라질 수 있다
-> 따라서 일반 오브젝트에는 Time.deltatime, 플레이어에는 unscaledDeltaTime * float을 넣음 (1번째 방식 채택)
-> 일시정지가 될 때에는 float값도 0으로 변경해서 일시정지때 플레이어가 움직이는 문제도 해결되도록 변경
정지된 시간 속에서 플레이어 이동 이슈
-> 플레이어 이동 관련 로직에 Time.unscaledDeltaTime을 활용했지만 TimeScale 이 0인 상황에서 이동이 불가능했음
-> 처음엔 캐릭터 이동을 FixedUpdate()에서 작동을 하게 했다.
-> 그런데 FixedUpdate() 자체가 TimeScale의 영향을 받아서 TimeScale 이 0이면 호출되지 않음
-> Update()는 TimeScale과는 상관 없이 호출됨
-> 따라서 물리 관련 로직이지만 Update()에서 호출하는 것으로 해결함
-> update함수는 사용자에 컴퓨터 환경에 따라 다르게 작용하므로 이것은 추후 논의 필요
슬로우 모션 방법
-> 물리 효과를 받는 오브젝트의 슬로우 모션을 구현할 때 Time.fixedDeltaTime 값도 변경해야 함
-> TimeScale만 건드리면 물리 효과를 받는 오브젝트의 움직임이 끊겨보인다고함
-> fixedDeltaTime이 timeScale의 영향을 받는 상대적인 값이기 때문
선택된 오브젝트 아웃라이너 구현 방법
-> 이미지로 아웃라이너 만드는 법과 셰이더로 아웃라이너 만드는 방법이 있다.
-> 이미지로 아웃라이너를 만들게 될 경우 보이지 않는 부분의 테두리까지 표시되는 상황이 발생
-> 따라서 플레이어 시점에서의 아웃라이너를 만들기 위해 셰이더를 이용한 방법을 사용하기로 함.
-> 거리에 상관없는 일정한 두께로 보이는 아웃라이너 구현 표현
'TIL' 카테고리의 다른 글
2024/01/15 TIL (0) | 2024.01.15 |
---|---|
2024/01/12 TIL (0) | 2024.01.13 |
2024/01/11 TIL (JIRA 사용법) (0) | 2024.01.11 |
2024/01/09 TIL (Navigation Mesh) (1) | 2024.01.09 |
2024/01/08 TIL (1) | 2024.01.08 |