1

私は初めてAndEngineです。画面に 3 つの長方形があります。onAreaTouchedこれらの長方形を設定しました。

それらが衝突する場合、これらの長方形のいずれかを移動すると、それらは互いに重なり合っています。

this.mScene.registerUpdateHandler(new IUpdateHandler() {

        @Override
        public void onUpdate(float pSecondsElapsed) {

            if (rect1.collidesWith(rect2)
                    || rect1.collidesWith(rect3)) {
                // rect1 should not move further 
            }
        }

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

        }

    });

それらをオーバーラップさせたくない rect1 が rect2 と衝突した場合、rect1 はそれ以上動かないはずです。

4

1 に答える 1

0

以下のコードを試してみてください。役に立つと思います。

this.mScene.registerUpdateHandler(new IUpdateHandler() {

    @Override
    public void onUpdate(float pSecondsElapsed) {

        if (isMoveTouch && (rect1.collidesWith(rect2)
                || rect1.collidesWith(rect3))) {
              isMoveTouch=false
            // rect1 should not move further 
        }
    }

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

    }

});

@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {

    if (pSceneTouchEvent.isActionDown()) {
        return true;
    }
    if (pSceneTouchEvent.isActionMove() && isMoveTouch) {
        // rect1 movement code
        return true;
    }
    if (pSceneTouchEvent.isActionUp()) {
        isMoveTouch = true;
        return true;
    }

    return false;
}
于 2013-03-15T07:05:09.613 に答える