coder_For_Life22
coder_For_Life22

Reputation: 26971

How to allow sprite to be moved from side to side only?

I am using angengine to create a project for school.

I have a Sprite that i allow the user to touch and move.

The sprite is on top of the tiled map in my project.

What i would like to do is create a way so that the user cannot move the sprite up or down. Only side to side

Here is what i am using so far to allow the user to move the sprite anywhere they choose.

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;
         }
 };

Any ideas or help will be greatly appreciated.

Upvotes: 0

Views: 239

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1500375

Simply don't use the Y value from the touch event:

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;
     }
};

Or if Sprite doesn't have a setX method but does have a getY method:

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;
     }
};

Upvotes: 1

Related Questions