หากเอนทิตีไม่มี 'ประเภท' ชัดเจน (เช่นผู้เล่น) และเป็นเพียงชุดของส่วนประกอบฉันจะระบุเอนทิตีที่ระบบของฉันควรและไม่ควรทำงานได้อย่างไร ตัวอย่างเช่นในเกมของพงษ์พายและลูกทั้งคู่ชนกับขอบเขตของหน้าต่าง อย่างไรก็ตามระบบการจัดการการชนของแต่ละระบบจะแตกต่างกันดังนั้นระบบไม่ควรจัดการเอนทิตีที่มีชนิดผิด
void PlayerCollisionSystem::update(std::vector<Entity *> entities) {
typedef std::vector<Entity *>::iterator EIter;
for (EIter i = entities.begin(); i != entities.end(); ++i) {
Entity *player = *i; // How do I verify that the entity is a player?
// Get relevant components.
PositionComponent *position = player->getComponent<PositionComponent>();
VelocityComponent *velocity = player->getComponent<VelocityComponent>();
SpriteComponent *sprite = player->getComponent<SpriteComponent>();
// Detect and handle player collisions using the components.
}
}
ทั้งผู้เล่นและลูกแบ่งปันองค์ประกอบที่เกี่ยวข้องประเภทเดียวกันสำหรับการจัดการการชน แต่การใช้ระบบของพวกเขาจะแตกต่างกัน
ถ้าฉันมีคอนเทนเนอร์ของเอนทิตีเกมทั้งหมดฉันจะระบุเอนทิตีประเภทเฉพาะได้อย่างไรโดยไม่สืบทอดEntity
หรือรวมถึงตัวแปรสมาชิกเช่นstd::string type
ในกรณีนี้เอนทิตีไม่ได้เป็นเพียงการรวบรวมส่วนประกอบอีกต่อไป?