AndEngine - 移动对象
AndEngine - move object
我在屏幕上有两个按钮和一个播放器对象。第一个按钮必须将玩家移动到左侧,第二个按钮必须将玩家移动到右侧,但玩家移动不流畅。怎样才能让播放器流畅的移动?
ButtonSprite rightButton = new ButtonSprite(360,700,this.resourceManager.RightButtonRegion,this.vertexManager)
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY)
{
player.MoveRight();
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
ButtonSprite leftButton = new ButtonSprite(50,700,this.resourceManager.LeftButtonRegion,this.vertexManager)
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY)
{
player.MoveLeft();
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
public class Player extends Sprite
{
...
public void MoveLeft()
{
float x = this.body.getPosition().x -0.2f;
float y = this.body.getPosition().y;
this.body.setTransform(x,y,0);
}
public void MoveRight()
{
float x = this.body.getPosition().x + 0.2f;
float y = this.body.getPosition().y;
this.body.setTransform(x, y, 0);
}
}
在您的 MoveLeft 方法中,您添加了一个预先固定的值,这不会缩放到帧速率。
你应该在这个方法中设置一个像 "movingLeft = true" 的标志,并且在你的 processLogics 中你应该根据帧速率移动位置。
我在屏幕上有两个按钮和一个播放器对象。第一个按钮必须将玩家移动到左侧,第二个按钮必须将玩家移动到右侧,但玩家移动不流畅。怎样才能让播放器流畅的移动?
ButtonSprite rightButton = new ButtonSprite(360,700,this.resourceManager.RightButtonRegion,this.vertexManager)
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY)
{
player.MoveRight();
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
ButtonSprite leftButton = new ButtonSprite(50,700,this.resourceManager.LeftButtonRegion,this.vertexManager)
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY)
{
player.MoveLeft();
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
public class Player extends Sprite
{
...
public void MoveLeft()
{
float x = this.body.getPosition().x -0.2f;
float y = this.body.getPosition().y;
this.body.setTransform(x,y,0);
}
public void MoveRight()
{
float x = this.body.getPosition().x + 0.2f;
float y = this.body.getPosition().y;
this.body.setTransform(x, y, 0);
}
}
在您的 MoveLeft 方法中,您添加了一个预先固定的值,这不会缩放到帧速率。
你应该在这个方法中设置一个像 "movingLeft = true" 的标志,并且在你的 processLogics 中你应该根据帧速率移动位置。