4
การตอบสนองรูปสี่เหลี่ยมผืนผ้าชนกัน
ฉันมีปัญหาในการรับสี่เหลี่ยมที่เคลื่อนย้ายได้เพื่อชนกับสี่เหลี่ยมมากกว่าหนึ่ง ฉันกำลังใช้SFMLและมันมีฟังก์ชั่นintersectsที่ใช้งานง่ายที่เรียกว่าซึ่งใช้เวลา 2 สี่เหลี่ยมและส่งกลับจุดตัด ฉันมีเวกเตอร์ที่เต็มไปด้วยรูปสี่เหลี่ยมผืนผ้าซึ่งฉันต้องการให้สี่เหลี่ยมที่เคลื่อนย้ายได้ของฉันชนกัน ฉันวนลูปผ่านสิ่งนี้โดยใช้รหัสต่อไปนี้ (p คือสี่เหลี่ยมที่เคลื่อนที่ได้) IsCollidingWithส่งกลับค่าบูล แต่ยังใช้ SFML intersectsเพื่อหาจุดแยก while(unsigned i = 0; i!= testRects.size(); i++){ if(p.IsCollidingWith(testRects[i]){ p.Collide(testRects[i]); } } และCollide()รหัสจริง: void gameObj::collide( gameObj collidingObject ){ printf("%f %f\n", this->colliderResult.width, this->colliderResult.height); if (this->colliderResult.width < this->colliderResult.height) { // collided on X if (this->getCollider().left < collidingObject.getCollider().left ) { this->move( -this->colliderResult.width …