[英]Bodies not colliding properly in Box2D(LibGDX)
因此,在我的游戲中,我有一個多邊形多邊形的box2D動態實體作為我的玩家,一個鏈狀的box2D靜態實體作為靜態盒子。 調試渲染器正確顯示所有框。 當玩家從頂部與盒子碰撞時,它會碰撞,但是當從任一側碰撞時,它都會向右走。 我試圖將多邊形用於靜態框,但是它的行為很奇怪。 我不知道怎么了。
這是代碼:
球員身體和固定裝置的定義:
bdef=new BodyDef();
bdef.position.set((WIDTH/2+169)/PPM,100/PPM);
bdef.type=BodyType.DynamicBody;
body=world.createBody(bdef);
PolygonShape shape=new PolygonShape();
shape.setAsBox(16/PPM,16/PPM);
fdef=new FixtureDef();
fdef.shape=shape;
fdef.filter.categoryBits=B2DVars.BIT_PLAYER;
fdef.filter.maskBits=B2DVars.BIT_BLOCK;
body.createFixture(fdef).setUserData("player");
靜態箱體和夾具的定義:
bdef=new BodyDef();
fdef=new FixtureDef();
bdef.type=BodyType.StaticBody;
bdef.position.set((col+0.5f)*tileSize/PPM,(row+0.5f)*tileSize/PPM);
ChainShape chainShape=new ChainShape();
Vector2[] v=new Vector2[5];
v[0]=new Vector2(-tileSize/2/PPM,-tileSize/2/PPM);
v[1]=new Vector2(tileSize/2/PPM,-tileSize/2/PPM);
v[2]=new Vector2(tileSize/2/PPM,tileSize/2/PPM);
v[3]=new Vector2(-tileSize/2/PPM,tileSize/2/PPM);
v[4]=new Vector2(-tileSize/2/PPM,-tileSize/2/PPM);
chainShape.createChain(v);
fdef.friction=0;
fdef.shape=chainShape;
fdef.isSensor=false;
fdef.filter.categoryBits=B2DVars.BIT_BLOCK;
fdef.filter.maskBits=B2DVars.BIT_PLAYER;
world.createBody(bdef).createFixture(fdef).setUserData("block");
編輯:問題不復存在,這是我通過變換設置播放器位置的問題,但是現在我不知道,當我按下按鈕時又如何使播放器移動並在釋放按鈕時停止播放器?
移動DynamicBody
不應通過setTransform
完成。 設置DynamicBody
位置的最流暢方法是通過MouseJoint
,但它是否對您有幫助,取決於您要進行哪種移動。 這個例子是一個很好的起點。
以這種方式使用聯系人監聽器檢查沖突
'if((contact.getFixtureA().getBody() == bodyEdgeScreen &&
contact.getFixtureB().getBody() == body2)
||
(contact.getFixtureA().getBody() == body2 &&
contact.getFixtureB().getBody() == bodyEdgeScreen))'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.