2026/10/4 Project CB 프로토타입 개발일지
안녕하십니까 쳇바퀴 스튜디오입니다. 2026년 10월 4일 Project CB 프로토타입 구현에 대한 개발일지를 작성하겠습니다.
지난 개발일지 이후로 유저의 입력에 따라 움직이는 캐릭터, 볼링공의 객체화, 그리고 볼링공과의 상호작용등을 개발했습니다. 영상으로 보여드리겠습니다.
우선 캐릭터를 보여드리겠습니다.
게임은 1인칭이기 때문에 다른 카메라로 유저의 입력에 따라 움직이는 파란색 캡슐을 볼 수 있습니다. 해당 캐릭터는 이동 및 점프가 가능합니다.
다음으로 볼링공의 객체화와 볼링공과의 상호작용을 보여드리겠습니다.
영상에서 확인할 수 있듯이 유저가 볼링공을 줍자 볼링공이 카메라 하단에 고정되고 유저의 캐릭터와 함께 움직이는 것을 확인할 수 있습니다. 이어서 유저가 상호작용 버튼을 누르자, 볼링공의 상호작용인 투척 활동이 실행되어 레인을 따라가다 핀을 맞췄습니다.
위 모든 행동은 대략적으로 다음과 같은 표로 정리할 수 있습니다.
위의 상황들을 구현하는 도중 PhysicsMaterial와 Rigidbody 컴포넌트의 Interpolate옵션을 알게되었습니다. 이 사항들 또한 공유하고자 합니다.
- PhysicsMaterial
- Collider 컴포넌트에는 Physics을 지정할 수 있습니다. 이는 5가지 값을 가지고 있는 하나의 구조체이고 이 값들로 해당 컴포넌트를 소유한 개체의 물리 상호작용을 결정합니다.
- Dynamic Friction, Static Friction, Bounciness, Friction Combine, Bounce Combine 값들을 가지고 있습니다. 이에 대해 하나씩 설명하겠습니다.
- Dynamic Friction: 움직이는 오브젝트의 마찰계수를 나타내는 값입니다. 위 사진에서 운동 마찰력을 나타냅니다.
- Static Friction: 정지한 오브젝트의 마찰계수를 나타내는 값입니다. 위 사진에서 최대 정지 마찰력을 나타냅니다.
- Bounciness: 오브젝트가 충돌했을 때, 보유했던 속도를 충돌 이후에도 얼마나 보유할지에 대한 값입니다.
- Friction Combine: 총 4가지 옵션이 있으며 해당 값으로 마찰력을 계산합니다.
- Average: 현재 객체와 충돌한 객체 마찰력 두 값의 평균값을 현재 마찰력으로 사용합니다. (일반적으로 많이 사용됩니다.)
- Multiply: 현재 객체와 충돌한 객체 마찰력 두 값의 곱을 현재 마찰력으로 사용합니다.
- Minimum: 두 값 중 최소값을 사용합니다. (얼음 바닥과 같은 특별한 상황에 사용합니다.)
- Maximum: 두 값 중 최대값을 사용합니다. (거미줄, 접착제가 발린 바닥과 같은 특별한 상황에서 사용합니다.)
- Bounce Combine: 위와 같은 옵션으로 탄성을 계산합니다.
- Rigidbody의 Interpolate
- 볼링공을 객체화 하여 유저가 잡고 움직일 수 있도록 만들었을 때, 볼링공이 유저의 움직임에 따라 움직여지지 않았습니다. 왜냐하면 볼링공 Rigidbody 컴포넌트의 Interpolate 옵션이 문제였기 때문입니다. 이 옵션은 해당 객체의 움직임을 보간해주는 역할을 합니다. 하지만 유저가 들고 움직이는 과정에서는 매 위치를 보간할 필요가 없으며, 오히려 보간한 값이 객체를 보유한 소유자의 움직임에 대응되지 못합니다. 따라서 유저가 소유한 객체의 Interpolate옵션을 None으로 변경하는 것으로 해당 버그를 해결할 수 있었습니다.
- 추가적으로 모든 상황에서 Interpolate를 None으로 하는 선택지도 있었습니다. 왜냐하면 보간은 1초당 최소 50번 계산하는 Update 함수가 포함되기 때문입니다. 따라서 기본값을 None으로 해보았을 때, 심하게 거슬리는 시각적 오류가 발생하지 않았습니다. 하지만 추후에 심지어 멀티플레이 환경에서 보간의 부재로 인한 시각적 오류가 발생할 수 있습니다. 따라서 현재는 대부분의 오브젝트에 Interpolate값을 Interpolate(보간한다.)로 설정해놓았습니다. 먼 미래에 최적화 단계에서 기본값을 None(보간하지 않는다.)로 바꿔보고 시각적 오류가 여전히 생기지 않는다면, 이를 고려해볼만 하다고 생각하고 있습니다.
긴 글 읽어주셔서 감사합니다. 현재 상황에서 볼링공이 어떤 상황에서 획득가능한지등에 대한 시각적 피드백이 부족합니다. 다음 개발일지에서는 이런 부분을 개선하며 프로토타입화를 계속 진행하겠습니다. 감사합니다.
댓글
댓글 쓰기