-1

だから私は私のキャラクターのために歩くことができないはずのスプライトを持っています。

問題は、これを行う方法がわからないことです。

ここに私がしようとしているものがあります。スプライトがレベルからロードされるときにリンク リストにスプライトを追加しています。

次に、リストを繰り返し処理して、キャラクターが歩けないスプライト/タイルと衝突しているかどうかを検出します。

これは、毎秒実行されるエンジン更新スレッドで行います。

これが私がこれを行う方法です:

mScene.registerUpdateHandler(new IUpdateHandler(){

        @Override
        public void onUpdate(float pSecondsElapsed) {


            Iterator<Sprite> wall_collision = unwalkable_Sprites.iterator();

            while(wall_collision.hasNext()){
                Sprite sprite = wall_collision.next();

                if(character_sprite.collidesWith(sprite)){


                }
            }

        }

        @Override
        public void reset() {
            // TODO Auto-generated method stub

        }

    });

問題は、歩行不可能なタイルと衝突したときにキャラクターをどのように配置して、キャラクターがタイルに交差しないようにするかです..ユーザーにとっては、境界のように見えるはずです。

誰か提案がありますか、これを行う方法を知っていますか?

4

1 に答える 1

2

この例を見てください

例の「地面」と同じコードを歩けないタイルに使用します。静的なボディを使用する必要があります。

this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);
final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0, 0.5f, 0.5f);

ここでは、例または例として Sprite のように Shape を使用できます。

//final Shape yourTile = new Rectangle(0, CAMERA_HEIGHT - 2, CAMERA_WIDTH, 2); Sprite yourTile = new Sprite(...); PhysicsFactory.createBoxBody(this.mPhysicsWorld, yourTile, BodyType.StaticBody, wallFixtureDef);

ここでは、 AndEngineの box2dExtensionを見つけることができます(ボディを使用するために必要です)。

私の英語で申し訳ありません:)これがお役に立てば幸いです。

PS、この問題の衝突をチェックする必要はもうありません。

于 2012-12-03T05:52:06.010 に答える