구성 요소를 중심으로 설계된 게임에서 충돌을 올바르게 처리하는 방법으로 머리를 감싸려고합니다.
많은 예제 PhysicsComponent
에 엔티티의 구성 요소 목록에 추가되는 종류가 있지만 실제 구현은 혼란 스럽습니다.
이것이 작동 PhysicsComponent
하려면 주변 세계에 액세스해야합니다. 이것은 나에게 직관적이지 않습니다. 컴포넌트가 컨테이너 (엔터티)뿐만 아니라 컨테이너의 컨테이너 (세계)를 인식하지 않아야합니까?
나에게 레벨이나 장면은 이러한 엔티티와 모든 게임 업데이트의 목록을 유지해야하고, 충돌을 결정하기 위해 엔티티를 반복합니다.
내 질문은 첫째, 이것이 좋은 디자인인지 아닌지, 둘째는 충돌 할 수있는 엔티티를 결정하는 방법입니다. 솔리드 엔티티가 빈 IRigidBody 인터페이스를 구현하여 레벨에서 충돌을 지원하는 엔티티를 결정할 수 있다고 가정합니다. 그러나 이것이 구성 요소 설계를 깨뜨리고 있습니까?
대신 빈 RigidBody 구성 요소를 포함해야합니까? 항상 비어있는 것은 아니기 때문에이 방법이 더 나을 수 있으며이 방법은 미래에 대비할 수 있습니다. 이것의 유일한 문제는 복잡성입니다. 장면은 모든 엔티티뿐만 아니라 모든 엔티티의 컴포넌트를 반복하여이 RigidBody 컴포넌트가 있는지 판별해야합니다.
셋째, 그들이 충돌 할 때 두 엔티티 모두 어떻게 든 정보를 받아야하며 이것을 달성하는 방법이 확실하지 않습니다.
두 엔티티가 모두 HealthComponent를 포함하고 있고 두 오브젝트가 충돌하면 임의의 값으로 감소 될 것이라고 가정 해 봅시다.
그러나 장면이 너무 많은 책임이 있습니까? 나는 실체가 접근해서는 안되는 많은 것들에 대해 장면이 책임질 때 이것이 손에서 벗어나 다루기 어려워지는 것을 볼 수 있었다.
편집 : 자세한 내용으로 질문이 업데이트되었습니다.