현재 유니티에서 kinematic으로 이동을 구현중이라서 충돌을 따로 구현을 하고 있음
움직이는 물체(플레이어)와 정적인 물체(벽, 바닥 등)의 충돌은 collide and slide로 쉽게 구현은 했는데
상대도 움직이는 물체라면(몬스터, 움직이는 플랫폼) 충돌구현이 좀 복잡하더라.
누가 먼저 움직이냐에 따라서 다음 프레임 때 오버랩되면서 collide and slide로직이 작동을 안함.
그래서 현재 내가 구현한 것으로는 일단 스크립트 순서 지정해서 플레이어가 먼저 움직일지, 나머지 물체들이 먼저 움직일지 정해놓고
플레이어가 아닌 동체들에는 별도의 태그를 달아 분류시키고
플레이어 기준으로 매 프레임 오버랩 연산을 통해 동체와 오버랩이 일어나면
해당 오브젝트에 내가 달아놓은 스탯 관련 컴포넌트에서 위치와 속도 정보를 가져와서 다음 프레임에서의 플레이어가 있어야 할 엄밀한 위치를 보정해주는 방식으로 구현하고 있긴 한데
(그니까 충돌 연산 흐름이 '동체와의 충돌에 대비한 위치 보정 연산' -> '위치 보정 후 collide and slide 연산' -> '다음 위치로 이동' )
이렇게 하는 게 맞는지, 이렇게 했을때 어떤 문제가 일어날지, 더 일반화된 좋은 방법이 있는지 궁금함
그리고 만약 내가 하는 방식이 꽤 맞다면, 그 위치 보정 방식은 어떻게 해야하는 건지 까지 궁금함
글 읽어줘서 ㄳ
3줄 요약
1. 동체간 충돌 구현을 위해 플레이어 기준으로 다음 프레임에서 오버랩이 없도록 위치를 보정해주는 방식으로 구현중
2. 이 방법이 맞는지 궁금하고, 아니라면 더 좋은 방식이 뭐가 있는지 궁금함
3. 이 방법이 맞다면 위치 보정 연산은 어떻게 하는 게 좋을지 궁금함
ㄷㄷ 어디에 쓰는 건가용
fixed timestep "0.0002" 딸깍