私はゲームを持っています。ジャイロスコープを使って、いくつかのブロックを制御します。問題は、andengineコードにbox2dを追加したことですが、実際に物理的な処理を行う代わりに、ボディが互いに反応してオーバーラップしているようには見えません。
私のonCreateSceneには、次のものがあります。
@Override
protected Scene onCreateScene() {
this.mMainScene = new Scene();
backgroundSprite = new Sprite(0, 0, this.mBackgroundTextureRegion, getVertexBufferObjectManager());
physicsWorld = new PhysicsWorld(new Vector2(0, 0), false);
final Player oPlayer = new Player(centerX, centerY, this.goodTiledTextureRegion, this.getVertexBufferObjectManager(), MainActivity.this, playerID, 0);
player_fix = PhysicsFactory.createFixtureDef(10.0f, 0.2f, 1.0f);
body = PhysicsFactory.createBoxBody(physicsWorld, oPlayer, BodyType.DynamicBody, player_fix);
oPlayer.setBody(body);
playerID++;
players.add(oPlayer);
for (Player player : players) {
player.setPlayers(players);
mMainScene.attachChild(player);
physicsWorld.registerPhysicsConnector(new PhysicsConnector(player, body, true, false));
mMainScene.registerTouchArea(player);
}
this.mMainScene.registerUpdateHandler(physicsWorld);
this.mMainScene.registerUpdateHandler(new TimerHandler(0.1f, true, new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {
Player player = new Player(random, 5, goodTiledTextureRegion, getVertexBufferObjectManager(), MainActivity.this, playerID, 0);
body = PhysicsFactory.createBoxBody(physicsWorld, player, BodyType.DynamicBody, player_fix);
player.setBody(body);
players.add(player);
mMainScene.detachChildren();
mMainScene.attachChild(backgroundSprite);
for (Player player : players) {
player.setPlayers(players);
mMainScene.attachChild(player);
player.body.setLinearVelocity(AccelerometerHelper.TILTX * 5, AccelerometerHelper.TILTY * 5);
physicsWorld.registerPhysicsConnector(new PhysicsConnector(player, body, true, false));
mMainScene.registerTouchArea(player);
}
}
return this.mMainScene;
}
今、私はシーンを作成し、物理学の世界を作成します。次に、最初の「プレーヤー」を作成します(これはスプライトであり、移動します)。そのためのボディを作成し、そのボディをPlayer.class(エンティティ)に設定します。エンティティからすべてのプレーヤーのボディにアクセスできます。次に、2、3回の更新ごとに(コードは少し長くなりますが、物理とは関係のないものを取り出しました)、新しいプレーヤーを作成します。次に、アレイリスト内のすべてのプレーヤー(プレーヤー)に対して、加速度計の後に線形速度を設定して、加速度計を動かします。問題は、プレイヤーが別のプレイヤーにヒットした場合、それらはオーバーラップし、インパクトに反応しないことです。
プレーヤーのフィクスチャはどこでも同じでありplayer_fix = PhysicsFactory.createFixtureDef(10.0f, 0.2f, 1.0f);
、BodyTypeは常にDynamicBodyです。誰かが私が欠けているものを教えてもらえますか?