제 질문은 충돌 감지 방법에 관한 것이 아니라 '어떤 코드가 충돌 감지를 소유해야하는지'에 관한 것입니다. 나는 과거에 게임을 작성했는데 (상대적으로 단순한 2D 플래시 게임), 어떤 코드가 충돌 감지를 소유해야한다고 생각하니?게임에서 충돌 감지 관리
게임에서 나는 플레이어 그룹이 발사 한 적군과 발사체 그룹이 있다고 말한다. 그래서 과거 엔 EnemyManager 클래스를 사용하여 모든 프레임이 적의 위치를 업데이트하고 마찬가지로 플레이어의 탄환은 총알 주위를 움직이는 PlayerProjectilesManager 클래스를 가졌습니다. 멋지다. 모든 것이 훌륭하고 멋쟁이 다. 그런데, 나는 총알이 에 영향을 미치기로 결정한 적이에 달한다. (내가 아는 미친!). 각 충돌
그래서에 대한 응답에서
- 그림 아웃 : 그래서 내가해야 할 코드의 어딘가에 의미 기본적으로 EnemyManager 클래스는 충돌에 대한 소유권을 가져야하며 업데이트 루프 중에는 적의 총알 (즉 1 단계)과 충돌하는 플레이어 글 머리 기호를 찾고 두 객체에 대한 코드를 호출합니다 충돌 (예 : 적 손실 건강, 총알이 사라짐)을 처리합니다 (즉 2 단계). 그래서 EnemyManager에 충돌 감지 및 충돌 '반응'을 제어했습니다. 그것에 대해
몇 가지 코멘트 :
- 그것은 EnemyManager가 PlayerProjectilesManager
- 모두 충돌 감지 및 충돌 '반응'이 동일한 소유자에 의해 처리되는 대신 '통제'에 있음을 나에게 임의의 변화 느낌 내 관점에서 볼 때 요구 사항이 아닙니다.
내 마음에 나타나는 것은 충돌 탐지를 관리하는 타사 엔티티입니다. 예를 들어 다른 관리자가 충돌을 감지해야하는 코드가있는 CollisionManager가 있습니다. 이는 CollisionManager에 너무 많은 내부를 노출시키지 않으면 서 효율적인 충돌 감지를 위해 '관리자'가 노출해야하는 인터페이스와 같은 다른 질문을 유발합니다. 그런 다음 CollisionManager가 어떤 종류의 이벤트를 브로드 캐스팅하는 것으로 가정합니다. 두 개의 객체가 서로 충돌하는 등 ... EnemyManager/PlayerProjectilesManager는 이러한 이벤트를 개별적으로 수신하여 그에 따라 개별적으로 대응할 수 있습니다. 내 마음에 감각을 만들기 시작했다. :)
생각하십니까? 거의 모든 게임에 충돌 감지 기능이 있으므로 이전에이 기능에 대해 논의 해 보았습니다. :)