BamsBamx
BamsBamx

Reputation: 4256

Andengine, making a sprite move in random direction

i want to make a sprite move when i click on it, but i have a problem... The sprite always goes to the upper left corner, i tried to put random values, but it gives no result

ballITexture = TextureRegionFactory.extractFromTexture(BaseActivity.getSharedInstance().ballTexture);
final Random rand = new Random();
sprite = new Sprite(0, 0, ballITexture, BaseActivity.getSharedInstance().getVertexBufferObjectManager()){
            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
               randomMove(rand.nextInt(4), pTouchAreaLocalX, pTouchAreaLocalY, this);

            };

mCamera = BaseActivity.getSharedInstance().mCamera;
sprite.setPosition(mCamera.getWidth() / 2 - sprite.getWidth() / 2, mCamera.getHeight() / 2 - sprite.getHeight() / 2);
moveable = true;

and this is randomMove method:

private void randomMove(int direction, float pTouchAreaLocalX, float pTouchAreaLocalY, Sprite sprite){

    switch(direction){
            case 0:
                sprite.registerEntityModifier(new MoveModifier(1, pTouchAreaLocalX, 1, pTouchAreaLocalY, 1));
                break;
            case 1:
                sprite.registerEntityModifier(new MoveModifier(1, pTouchAreaLocalX, 1, pTouchAreaLocalY, -1));
                break;
            case 2:
                sprite.registerEntityModifier(new MoveModifier(1, pTouchAreaLocalX, -1, pTouchAreaLocalY, 1));
                break;
            case 3:
                sprite.registerEntityModifier(new MoveModifier(1, pTouchAreaLocalX, -1, pTouchAreaLocalY, -1));
                break;
        }

}

my question is, why my sprite goes always to up-left corner when I touch it, instead of moving in random direction? How to solve it?

Upvotes: 1

Views: 1563

Answers (1)

BamsBamx
BamsBamx

Reputation: 4256

forget this, i passed incorrect params to MoveModifier, where i put 1 and -1 values should be any pixel of the camera

private void randomMove(int direction, float pTouchAreaLocalX, float pTouchAreaLocalY, Sprite sprite){

        sprite.registerEntityModifier(new MoveModifier(1, pTouchAreaLocalX, rand.nextInt(mCamera.getWidth()), pTouchAreaLocalY, rand.nextInt(mCamera.getHeight())));

Upvotes: 1

Related Questions