Как разрешить перемещение спрайта только из стороны в сторону? - PullRequest
0 голосов
/ 06 ноября 2011

Я использую angengine для создания проекта для школы.

У меня есть Sprite, который я позволяю пользователю трогать и перемещать.

Спрайт находится на вершине мозаичной карты в моем проекте.

Что я хотел бы сделать, так это создать способ, чтобы пользователь не мог перемещать спрайт вверх или вниз. Только из стороны в сторону

Вот то, что я использую до сих пор, чтобы позволить пользователю перемещать спрайт куда угодно.

player = new Sprite(PlayerX, PlayerY, mHippoTextureRegion){
         @Override
         public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
                 this.setPosition(pSceneTouchEvent.getX() - this.getWidth() / 2, pSceneTouchEvent.getY() - this.getHeight() / 2);
                 return true;
         }
 };

Любые идеи или помощь будут с благодарностью.

1 Ответ

1 голос
/ 06 ноября 2011

Просто не используйте значение Y из сенсорного события:

player = new Sprite(PlayerX, PlayerY, mHippoTextureRegion){
    @Override
    public boolean onAreaTouched(final TouchEvent pSceneTouchEvent,
                                 final float pTouchAreaLocalX,
                                 final float pTouchAreaLocalY) {
        this.setX(pSceneTouchEvent.getX() - this.getWidth() / 2);
        return true;
     }
};

Или если Sprite не имеет метода setX, но имеет метод getY:

player = new Sprite(PlayerX, PlayerY, mHippoTextureRegion){
    @Override
    public boolean onAreaTouched(final TouchEvent pSceneTouchEvent,
                                 final float pTouchAreaLocalX,
                                 final float pTouchAreaLocalY) {
        this.setPosition(pSceneTouchEvent.getX() - this.getWidth() / 2,
                         this.getY());
        return true;
     }
};
...