すでにこの質問をAndengineフォーラムに投稿していますが、このトピックに関するいくつかの質問がありますが、いくつかの回答はありますが、私が知りたいものはまだ回答がありません。問題WeldJointをシミュレートする
スーパーマリオブラザーズのようなプレーヤーのジャンプをシミュレートしようとしています。まず、単純なコンタクトリスナーを使用して、ブール値をfalseに設定しました。だから、私は今WeldJointを使ってフットセンサーとしてもう一つの小さなボディをプレーヤーの底につけようとしています。しかし、私はそれを達成できませんでした。ウェルドジョイントはまったく固執しません。私は更新スレッドでWeldJointを作成しようとしましたが、何もしませんでした。私はsetpositionメソッドを使ってプレーヤーのセンサー位置を更新しようとしましたが、センサーを地面の下に置きます。 何か提案がありがとうございます。ここで私は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);
}