2015-03-09 3 views
1

У меня проблема с расширением Andengine Box2d.Box2d in Andengine - есть детские тела - возможно ли

У меня есть 2 прямоугольника: основа и fuelStation.

fuelStation является дочерним из базы. Когда я вращаюсь основание с setTransform метод, fuelStation sprite также вращается, но тело остается в том же положении.

Red - base, Cyan - child

base = new Rectangle(CAMERA_WIDTH/2, CAMERA_HEIGHT/2 - 200, 200, 200, vbom); 
fuelStation = new Rectangle(base.getWidth()/2, 0, 500, 10, vbom); 

this.attachChild(base); 
base.attachChild(fuelStation); 

final FixtureDef objectFixtureDef1 = PhysicsFactory.createFixtureDef(1, 0.0f, 0.5f); 
final FixtureDef objectFixtureDef2 = PhysicsFactory.createFixtureDef(1, 0.0f, 0.5f); 

baseBody = PhysicsFactory.createBoxBody(physicsWorld, base, BodyType.StaticBody, objectFixtureDef1); 
baseBody.setUserData("base"); 

fuelStationBody = PhysicsFactory.createBoxBody(physicsWorld, fuelStation, BodyType.KinematicBody, objectFixtureDef2); 
fuelStationBody.setUserData("station"); 

physicsWorld.registerPhysicsConnector(new PhysicsConnector(base, baseBody, true, true)); 
// physicsWorld.registerPhysicsConnector(new PhysicsConnector(fuelStation, fuelStationBody, 
// true, true)); 

Когда я удалить комментарий от последней строки - изменения позиции спрайта, но по-прежнему не работает должным образом (тело замирает).

Как правильно подключить эти 2 тела?

+0

Как вы тестировали, что тело не движется, а спрайт движется? – Harry

ответ

1

Вы должны иметь в виду, что все преобразования, которые вы делаете с сущностями (спрайтами), будут влиять только на «визуальное» содержимое, другими словами, никогда не повлияют на физические тела. Если вы хотите повлиять на сущности и тела, вы только достигнете этого, применяя силы к физическим телам и, поскольку они связаны с PhysicsConnector, эти преобразования будут влиять как на физическое тело, так и на спрайт («зрительное тело») ,
Итак, имея fuelStating в детстве основание ничего не повлияет. Чтобы воздействовать на два тела, вам нужно «соединение» между ними, и вы можете достичь этого, создав соединение, которое соединит два тела: http://www.iforce2d.net/b2dtut/joints-overview

Надеюсь, это поможет.