0
我已经在Andengine论坛上发布了这个问题,但已经有一些关于这个主题的问题,有些有回复,但是我想知道的还没有任何回复。模拟WeldJoint的问题
我试图模拟一个像超级马里奥兄弟一样的玩家跳转。首先,我使用一个简单的接触监听器,当接触发生时有一个布尔值错误,但接触发生在墙壁地面,一切。所以,我现在正在试图使用WeldJoint将另一个小身体附加到球员的底部作为脚传感器。但我无法做到这一点。 WeldJoint根本不会坚持。我试图在更新线程上创建WeldJoint,什么都没有。我试着用设置方法来更新传感器的位置,但它只是将传感器放置在地下。 任何建议,将不胜感激。这是我试图创建WeldJoint的方式。
播放器和传感器
mPlayer = new AnimatedSprite(100, 150, PlayerTextureRegion);
PlayerBody = PhysicsFactory.createBoxBody(this.mPhysicsWorld,mPlayer,BodyType.DynamicBody, PLAYER_FIXTURE_DEF);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(mPlayer, PlayerBody, true, true));
mScene.getLastChild().attachChild(mPlayer);
final Shape mSensor= new Rectangle(mPlayer.getX()+4,mPlayer.getY()+mPlayer.getHeight(),10,4);
final Body SensorBody = PhysicsFactory.createBoxBody(this.mPhysicsWorld,mSensor,BodyType.DynamicBody, SENSOR_FIXTURE_DEF);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(mSensor, SensorBody, true, true));
mScene.getLastChild().attachChild(mSensor);
mScene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() { }
@Override
public void onUpdate(final float pSecondsElapsed) {
this.createJoint(PlayerBody,SensorBody);
.......
联合法
private void createJoint(Body Anchor, Body Sensor){
final WeldJointDef join = new WeldJointDef();
join.initialize(Anchor,Sensor,Anchor.getWorldCenter());
this.mPhysicsWorld.createJoint(join);
}