私はすでにこの質問をAndengineフォーラムに投稿しましたが、このトピックに関してすでにいくつかの質問があり、いくつかは返信がありますが、私が知りたいものはまだ返信がありません。
スーパーマリオブラザーズのようにプレーヤーのジャンプをシミュレートしようとしています。最初に、単純な接触リスナーを使用して、接触が発生したときにブール値がfalseになるようにしましたが、接触は壁の地面などすべてで発生します。そこで、WeldJointを使用して、足センサーとしてプレーヤーの下部に別の小さなボディを取り付けようとしています。しかし、私はそれを達成することができませんでした。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);
}