กระสุนฟิสิกส์ - หล่อเรย์ลงมาจากร่างแข็ง (กล้องคนแรก)
ฉันติดตั้งกล้องคนแรกด้วยกระสุนปืน - มันเป็นกล้องที่มีรูปร่างเหมือนแคปซูล ฉันใช้ Bullet เพียงไม่กี่วันและเครื่องมือฟิสิกส์ใหม่สำหรับฉัน ฉันใช้btRigidBody::setLinearVelocity()เพื่อเคลื่อนย้ายมันและชนกับโลกได้อย่างสมบูรณ์แบบ ปัญหาเดียวคือค่า Y เคลื่อนที่อย่างอิสระซึ่งฉันแก้ไขได้ชั่วคราวด้วยการตั้งค่า Y ของเวกเตอร์การแปลเป็นศูนย์ก่อนที่ร่างกายจะถูกย้าย ใช้ได้กับทุกกรณียกเว้นเมื่อตกลงมาจากที่สูง เมื่อร่างกายหลุดวัตถุที่สูงคุณยังสามารถร่อนไปรอบ ๆ ได้เนื่องจากค่า Y ของเวกเตอร์การแปลถูกตั้งค่าเป็นศูนย์จนกว่าคุณจะหยุดเคลื่อนที่และตกลงไปที่พื้น (ความเร็วจะถูกตั้งค่าเมื่อเคลื่อนที่เท่านั้น) ดังนั้นเพื่อแก้ปัญหานี้ฉันต้องการที่จะลองโยนรังสีลงจากร่างกายเพื่อกำหนดค่า Y ของโลกและตรวจสอบความแตกต่างระหว่างค่านั้นกับค่า Y ของตัวกล้องและปิดหรือลดการเคลื่อนไหวหาก ความแตกต่างมีขนาดใหญ่พอ ฉันติดอยู่กับการคัดเลือกเรย์และกำหนดค่า Y ของโลกที่มันกระทบ ฉันได้ดำเนินการติดต่อกลับนี้: struct AllRayResultCallback : public btCollisionWorld::RayResultCallback{ AllRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld) : m_rayFromWorld(rayFromWorld), m_rayToWorld(rayToWorld), m_closestHitFraction(1.0){} btVector3 m_rayFromWorld; btVector3 m_rayToWorld; btVector3 m_hitNormalWorld; …