其他分享
首页 > 其他分享> > android-如何通过使用AndEngine对其进行滑动来扔/扔球?

android-如何通过使用AndEngine对其进行滑动来扔/扔球?

作者:互联网

我的屏幕上有一个球精灵,当我触摸并滑动该精灵时,它必须沿特定的滑动方向移动.

我在那个球上加了物理学.

我想做一些类似paper toss的事情

谁能帮我吗.
提前致谢.

解决方法:

您需要重写Sprite的onAreaTouched方法,如下所示.您可以从pSceneTouchEvent,pTouchAreasLocalX和pTouchAreaLocalY变量获取有关触摸事件的信息,并使用它们来确定移动球的方式.

您不希望对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() {

      }

标签:andengine,android
来源: https://codeday.me/bug/20191009/1877673.html