gpt4 book ai didi

android - AndEngine:动画 Sprite 不适用于物理处理程序

转载 作者:太空狗 更新时间:2023-10-29 12:46:18 24 4
gpt4 key购买 nike

动画 Sprite 不使用物理处理程序执行动画:

我正在使用 AndEngine GLES2AnalogOnScreenControl 来移动 Sprite 。 Sprite 是一个人,所以为了显示腿部运动,我将其设为动画 Sprite :

final AnimatedSprite person = new AnimatedSprite(personX, personY,
this.mPersonTextureRegion, vertexBufferObjectManager);
person.setScaleCenterY(this.mPersonTextureRegion.getHeight());
person.setScale(2);

我正在为运动创建一个物理处理器:

final PhysicsHandler physicsHandler = new PhysicsHandler(person);
person.registerUpdateHandler(physicsHandler);
scene.attachChild(person);

这是屏幕控制的代码:

    final AnalogOnScreenControl analogOnScreenControl = new AnalogOnScreenControl(
0, CAMERA_HEIGHT
- this.mOnScreenControlBaseTextureRegion.getHeight(),
this.mCamera, this.mOnScreenControlBaseTextureRegion,
this.mOnScreenControlKnobTextureRegion, 0.1f, 200,
this.getVertexBufferObjectManager(),
new IAnalogOnScreenControlListener() {
@Override
public void onControlChange(
final BaseOnScreenControl pBaseOnScreenControl,
final float pValueX, final float pValueY) {
physicsHandler
.setVelocity(pValueX * 100, pValueY * 100);
person.animate(new long[] { 200, 200, 200 }, 3, 5,
false);

}

屏幕控制对于动画 Sprite 来说是完美的,但是当我创建物理处理程序时它没有动画。但是当我不创建物理处理程序时它会动画。那么为什么当我创建一个物理处理程序时它没有动画呢?

最佳答案

如果您一直重新启动动画,您的动画将只显示第一个图 block 。使用“isAnimationRunning()”检查动画是否正在运行。

public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) 
{
if(person!= null)
{
//Move your person
final Vector2 velocity = Vector2Pool.obtain(pValueX * 10, pValueY * 10);
person.setLinearVelocity(velocity);
Vector2Pool.recycle(velocity);
//Check if person is moving. Don't start a new animation, when your animation is already running
if((pValueX != 0 || pValueY != 0) && person.isAnimationRunning() == false)
{
person.animate(new long[] { 200, 200, 200 },0,2,false);
}
//Stop animation, when there is no movement
else if(pValueX == 0 && pValueY == 0 && person.isAnimationRunning() == true)
{
person.stopAnimation();
}
}
}

关于android - AndEngine:动画 Sprite 不适用于物理处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17825284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com