scene2d 中的 Lib gdx 和自定义演员
Lib gdx and custom actors in scene2d
我是 libgdx 的新手,很享受它为我提供的学习。
我目前正在创建一些自定义 actors(扩展 Actor class)并在屏幕上移动它们。
我的问题是,当使用 setX()、setY() 移动角色时,如何使用作为参数提供给 act 方法的传入浮点增量对其进行适当缩放?
示例,
@Override
public void act(float delta) {
if (wasTouched) {
setY(getY() - .5f);
}
}
如何使用增量正确缩放运动? libgdx Actor class 中是否有内置函数?
没有内置函数。我不知道您的 update
方法是什么样的,所以我不知道 wasTouched
是否在手指按下的每一帧都为真。
但是如果你想在手指按住物体的同时以一定的速度移动物体,那么首先你需要有一个想要的速度。它可以像
一样保持不变
private static final float SPEED_WHEN_TOUCHED = 5.0f; //in viewport units per second
或者它可能是一些随时间变化的变量,但无论哪种方式,它都应该以每秒视口(世界)单位为单位。
然后,当您想以该速度移动某物时,您可以将速度乘以增量时间(以秒为单位)以获得所需的运动量。
@Override
public void act(float delta) {
if (wasTouched) {
y += SPEED_WHEN_TOUCHED * delta;
positionChanged();
}
}
我是 libgdx 的新手,很享受它为我提供的学习。
我目前正在创建一些自定义 actors(扩展 Actor class)并在屏幕上移动它们。
我的问题是,当使用 setX()、setY() 移动角色时,如何使用作为参数提供给 act 方法的传入浮点增量对其进行适当缩放?
示例,
@Override
public void act(float delta) {
if (wasTouched) {
setY(getY() - .5f);
}
}
如何使用增量正确缩放运动? libgdx Actor class 中是否有内置函数?
没有内置函数。我不知道您的 update
方法是什么样的,所以我不知道 wasTouched
是否在手指按下的每一帧都为真。
但是如果你想在手指按住物体的同时以一定的速度移动物体,那么首先你需要有一个想要的速度。它可以像
一样保持不变private static final float SPEED_WHEN_TOUCHED = 5.0f; //in viewport units per second
或者它可能是一些随时间变化的变量,但无论哪种方式,它都应该以每秒视口(世界)单位为单位。
然后,当您想以该速度移动某物时,您可以将速度乘以增量时间(以秒为单位)以获得所需的运动量。
@Override
public void act(float delta) {
if (wasTouched) {
y += SPEED_WHEN_TOUCHED * delta;
positionChanged();
}
}