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