首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Cocos2d-x Box2D 第二顆球穿透地板:fixture 綁定錯誤的 body

     編輯:程式設計綜合問答

錯誤代碼

// 建立球2
b2BodyDef ballBodyDef2;
ballBodyDef2.position.Set(300/PTM_RATIO, 300/PTM_RATIO);
b2Body *_body2 = _world->CreateBody(&ballBodyDef2);

// 錯誤:將 fixture 綁定給 _body(球1)而非 _body2
_body->CreateFixture(&ballShapeDef2); // 應為 _body2->CreateFixture

修正

_body2->CreateFixture(&ballShapeDef2); // 正確綁定給球2的 body

現象解釋

  • 球1 的 body 擁有兩個 fixture(球1 與球2 的形狀),質量、慣性張量疊加,行為異常。
  • 球2 的 body 無 fixture,**無碰撞形狀**,重力下直接穿透地板。

除錯技巧

  • 開啟 Box2D DebugDraw,檢視每個 body 的 fixture 形狀、AABB。
  • 建立 body 後立即檢查 body->GetFixtureList() 是否為預期數量。
  • 使用命名規範:ballBody, ballBody2 對應 ballFixture, ballFixture2。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved