คำถามติดแท็ก bullet-physics

4
การป้องกันหอคอยแบบ 2 มิติ - กระสุนใส่ศัตรู
ฉันกำลังพยายามหาวิธีแก้ปัญหาที่ดีสำหรับกระสุนเพื่อตีศัตรู เกมดังกล่าวเป็นการป้องกันหอคอยแบบ 2 มิติหอคอยควรจะยิงเป็นกระสุนและโจมตีศัตรูที่รับประกัน ฉันลองวิธีแก้ปัญหานี้ - http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/ ลิงค์ที่กล่าวถึงเพื่อลบต้นกำเนิดของกระสุนและศัตรูเช่นกัน (การลบเวกเตอร์) ฉันพยายามที่ แต่กระสุนเพียงแค่ติดตามรอบศัตรู float diffX = enemy.position.x - position.x; float diffY = enemy.position.y - position.y; velocity.x = diffX; velocity.y = diffY; position.add(velocity.x * deltaTime, velocity.y * deltaTime); ฉันคุ้นเคยกับเวกเตอร์ แต่ไม่แน่ใจว่าต้องดำเนินการขั้นตอนใด (การดำเนินการคณิตศาสตร์เวกเตอร์) เพื่อให้โซลูชันนี้ทำงานได้

1
ฉันจะรวมกระสุนฟิสิกส์เข้ากับเกมของฉันได้อย่างไร
ฉันดาวน์โหลดไฟล์รีลีสที่นี่แต่ฉันไม่แน่ใจว่าจะเริ่มจากตรงไหน ในเกมของฉันฉันมีรูปสี่เหลี่ยมผืนผ้าจำนวนหนึ่งและทรงกลมฉันต้องการให้สิ่งเหล่านี้ชนกัน (พวกเขาทั้งหมดมีตาข่ายและปริมาณการเชื่อมโยงที่เกี่ยวข้อง) แก้ไข - ฉันเพิ่งรู้ว่าลูกบาศก์จริง ๆ แล้วมี AABB เกี่ยวข้องกับพวกเขา ฉันเดาว่าฉันจะต้องเปลี่ยนอย่างน้อย ฉันต้องทำตามขั้นตอนอะไรบ้าง?

3
ฟิสิกส์ไม่ซิงโครไนซ์อย่างถูกต้องผ่านเครือข่ายเมื่อใช้ Bullet
ฉันกำลังพยายามใช้ระบบฟิสิกส์ของลูกค้า / เซิร์ฟเวอร์โดยใช้ Bullet แต่ฉันมีปัญหาในการทำให้สิ่งต่าง ๆ ตรงกัน ฉันใช้สถานะภาพเคลื่อนไหวที่กำหนดเองซึ่งอ่านและเขียนการแปลงจากวัตถุเกมของฉันและทำงานได้ในเครื่อง แต่ฉันได้ลองวิธีที่แตกต่างกันสองวิธีสำหรับเกมเครือข่าย: วัตถุแบบไดนามิกบนไคลเอนต์ที่อยู่บนเซิร์ฟเวอร์ (เช่นไม่ใช่เศษเล็กเศษน้อยและสิ่งที่ไม่สำคัญอื่น ๆ ) ทำด้วยจลนศาสตร์ ทำงานได้อย่างถูกต้อง แต่วัตถุไม่เคลื่อนไหวอย่างราบรื่นมาก วัตถุเป็นแบบไดนามิกทั้งบน แต่หลังจากแต่ละข้อความจากเซิร์ฟเวอร์ที่วัตถุได้ย้ายฉันตั้งค่าความเร็วเชิงเส้นและเชิงมุมเป็นค่าจากเซิร์ฟเวอร์และเรียก btRigidBody :: ดำเนินการต่อไปเปลี่ยนด้วยการแปลงบนเซิร์ฟเวอร์ ฉันยังเรียก btCollisionObject :: เปิดใช้งาน (จริง); เพื่อบังคับวัตถุให้อัปเดต ความตั้งใจของฉันกับวิธีที่ 2 คือโดยทั่วไปแล้วให้ทำตามวิธีที่ 1 แต่การจี้กระสุนเพื่อทำคำทำนายของคนยากจนแทนที่จะทำเองเพื่อทำให้วิธีที่ 1 ราบรื่น แต่ดูเหมือนจะไม่ทำงาน (เพราะเหตุผลที่ไม่ชัดเจน 100% ถึง ฉันยังก้าวผ่านกระสุน) และบางครั้งวัตถุก็จบลงในที่ต่าง ๆ ฉันกำลังมุ่งหน้าไปในทิศทางที่ถูกต้องหรือไม่? กระสุนดูเหมือนว่าจะมีรหัสการแก้ไขของตัวเอง นั่นช่วยให้ฉันทำวิธีที่ 1 ได้ดีขึ้นหรือไม่ หรือรหัสวิธีที่ 2 ของฉันใช้งานไม่ได้เพราะฉันตั้งใจที่จะทำเช่นนั้น? แก้ไข: …

2
วิธีปิดการใช้งานการเคลื่อนไหวแกน Y ในเอนจินของกระสุนฟิสิกส์
ฉันต้องการสร้างวัตถุมากกว่าเคลื่อนที่ไปตามแกน X และ Z เท่านั้นในขณะที่ปิดการใช้งานแกน Y (มันเหมือนกับการเคลื่อนที่ใน 2D และวัตถุจะไม่ล้มลง) ขณะนี้ฉันกำลังใช้ข้อ จำกัด 6 dof เพื่อ จำกัด การเคลื่อนไหวในแกน Y แต่มันไม่ทำงาน: btRigidBody* zeroBody = new btRigidBody(0, NULL, NULL); // Create the body that we attach things to btRigidBody* robot = mCarChassis->getBulletRigidBody(); btGeneric6DofConstraint* constrict = new btGeneric6DofConstraint(*robot, *zeroBody, btTransform::getIdentity(), btTransform::getIdentity(), false); constrict->setLinearLowerLimit( btVector3( 1, …

1
กระสุนฟิสิกส์ - หล่อเรย์ลงมาจากร่างแข็ง (กล้องคนแรก)
ฉันติดตั้งกล้องคนแรกด้วยกระสุนปืน - มันเป็นกล้องที่มีรูปร่างเหมือนแคปซูล ฉันใช้ 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; …

2
มันคุ้มค่าไหมถ้าใช้ Bullet สำหรับฟิสิกส์ 2D แทนที่จะเป็น Box2D เพื่อการเรียนรู้ Bullet?
ไม่มีคำถามอีกมาก ฉันไม่ได้กังวลเกี่ยวกับค่าใช้จ่ายเนื่องจากฉันแน่ใจว่าพวกเขาทั้งคู่ดีสำหรับวัตถุประสงค์ของฉัน โดยพื้นฐานแล้วฉันคุ้นเคยกับแนวคิด Box2D เนื่องจาก Farseer Physics Engine แต่ฉันต้องการใช้ Bullet เมื่อฉันข้ามไปยังเนื้อหา 3 มิติ Bullet อาจมีค่าการศึกษาสำหรับฉันแม้แต่ในขอบเขต 2D หรือไม่? คำถามรุ่นทั่วไปคือฉันควรใช้เครื่องมือฟิสิกส์ 3 มิติสำหรับเกม 2 มิติถ้าฉันวางแผนที่จะใช้เครื่องมือฟิสิกส์ 3 มิติในอนาคต หรือเป็นการเสียเวลาซึ่งจะไม่ให้ค่าการศึกษา?

3
ฉันจะย้ายตัวละครในเกม RPG ด้วย Bullet Physics / Ogre3D ได้อย่างไร
เมื่อเร็ว ๆ นี้ฉันมีปัญหากับการย้ายตัวละครในเกม Ogre3D ของฉัน โดยทั่วไปฉันกำลังเคลื่อนไหวตัวละครด้วยRigidBody->translate()ฟังก์ชั่นกระสุนแต่เมื่อทำเช่นนั้นและชนเข้ากับกำแพงฉันก็ผ่านมันไปเล็กน้อยแล้วก็เด้งกลับมา ฉันสงสัยว่ามีวิธีที่ดีอีกวิธีหนึ่งในการย้ายตัวละครของฉัน (ที่มีรูปร่างทรงกลมปะทะกัน) ไปรอบ ๆ ในโลกแบบเครื่องบินเรียบๆกับกำแพงหรือไม่? ห้องสมุดที่ฉันใช้ซึ่งเกี่ยวข้องกับสิ่งนี้คือ 'Ogre3D' และ 'Bullet Physics'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.