How to throw / throw a ball by clicking on it with AndEngine?

I have a sprite ball on the screen when I touch and sit on this sprite. It should move in a certain direction of the napkin.

I added physics to this ball.

I wanted to do something like a paper throw

Can anyone help me. Thanks in advance.

+1
source share
2 answers

You need to override the onAreaTouched help method as shown below. You can get touch event information from your pSceneTouchEvent, pTouchAreasLocalX, and pTouchAreaLocalY variables and use them to determine how the ball moves.

- OnAreaTouched, - , . , onAreaTouched , .

: , . if , . ( ), , ( ), ( ).

mSprite = new Sprite(x, y ,mRegion, mEngine.getVertexBufferObjectManager()){
        @Override
        public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) 
        {

            //set flag member variable that sprite has been touched
            if (pSceneTouchEvent.isActionDown())
            {
                //here is where the touch was initiated so you 
                //can store the x,y location. You obtain it by using pSceneTouchEvent.getX()
                // and pSceneTouchEvent.getY()
            }

            if (pSceneTouchEvent.isActionMove())
            {
               //This will be called when you slide your finger, so you
               //can get the new coordinates by again using pSceneTouchEvent.getX()
               // and pSceneTouchEvent.getY()

            }

            if (sSceneTouchEvent.isActionUp())
            {
               //this will be called when you release the sprite
               // and tell the update handler to apply the force
            }
        }
    };


this.registerUpdateHandler(new IUpdateHandler(){
        @Override  
        public void onUpdate(float pSecondsElapsed) {
            //if flag is set apply a force to the physics body
            //set flag to false to wait for next touch event
        }

        @Override
        public void reset() {

      }
+3

jteezy answer , touchevents Sprite. , IOnSceneTouchListener. onSceneTouchEvent (Scene pScene, final TouchEvent pSceneTouchEvent). yourscene.setOnSceneTouchListener(this);

:

public class GameManager implements IOnSceneTouchListener{

    private boolean mSelected = false;
    private boolean mThrown = false;
    private float mX;
    private float mY;
    private float velX;
    private float velY;
    private TouchEvent mTouchEvent[] = {null, null, null, null, null};

  callThatMethodSomeWhere(){

 mScene.setOnSceneTouchListener( this );

mİşaretçiSprite = new Sprite( 0, 0, mİşaretçiTextureRegion, mEngine.getVertexBufferObjectManager() );

}

@Override
    public boolean onSceneTouchEvent(Scene pScene, final TouchEvent pSceneTouchEvent)
    {
        if( pSceneTouchEvent.isActionDown() && mİşaretçiSprite.contains( pSceneTouchEvent.getX() , pSceneTouchEvent.getY())){ //This part is so important that you check if the touch w

            mX = pSceneTouchEvent.getX();
            mY = pSceneTouchEvent.getY();

            mSelected = true;
        }

        else if( pSceneTouchEvent.isActionMove() && mSelected ){

            if( mTouchEvent[0] == null ){
                mTouchEvent[0] = pSceneTouchEvent;
            }else if( mTouchEvent[1] == null ){
                mTouchEvent[1] = pSceneTouchEvent;
            }else if( mTouchEvent[2] == null ){
                mTouchEvent[2] = pSceneTouchEvent;
            }else if( mTouchEvent[3] == null ){
                mTouchEvent[3] = pSceneTouchEvent;
            }else if( mTouchEvent[4] == null ){
                mTouchEvent[4] = pSceneTouchEvent;
            }else{
                velX = mTouchEvent[4].getX() - mX;
                velY = mTouchEvent[4].getY() - mY;

                mThrown = true;
                mSelected = false;


                Body.applyForceToCenter( velX*10, velY*10);


            }
        }

        else if ( pSceneTouchEvent.isActionUp() && mSelected ){

            velX = pSceneTouchEvent.getX() - mX;
            velY = pSceneTouchEvent.getY() - mY;

            mBody.applyForceToCenter( velX*10, velY*10);
            mThrown = true;


        }

        return false;
    }

: , , , , .   velX velY , .

0

All Articles