我有一个视频游戏,其中箭头在旋转箭头后向其指向的一侧移动,示例:
我需要将 Sprite 移动到旋转后箭头指向的相同方向。 我正在尝试做的一些代码:
int count = 0;
@Override
protected void handleInput() {
if(Gdx.input.justTouched()){
// move to the direction of pointing:
arrow.setPosition(x, y);
}
}
public void update(float dt){
count++;
// rotate sprite:
arrow.setRotation(count);
}
最佳答案
在“使用 LibGDX 开始 Java 游戏开发”一书中,作者制作了一个游戏,我认为它展示了您想要的行为。游戏是第 3 章的“海星收集者”。玩家移动一只乌龟来收集海星。左右方向键使乌龟旋转,向上方向键使乌龟向他当前面向的方向前进。
游戏源码可在作者Github账号下载here . (我不知道他为什么把它放在一个 zip 文件中。)
相关代码如下所示:
@Override
public void update(float dt) {
// process input
turtle.setAccelerationXY(0, 0);
if (Gdx.input.isKeyPressed(Keys.LEFT)) {
turtle.rotateBy(90 * dt);
}
if (Gdx.input.isKeyPressed(Keys.RIGHT)) {
turtle.rotateBy(-90 * dt);
}
if (Gdx.input.isKeyPressed(Keys.UP)) {
turtle.accelerateForward(100);
}
// ...
其中 turtle
扩展了一些扩展 Actor
的自定义类。
accelerateForward
的代码如下所示:
public void accelerateForward(float speed) {
setAccelerationAS(getRotation(), speed);
}
setAccelerationAS
的代码如下所示:
// set acceleration from angle and speed
public void setAccelerationAS(float angleDeg, float speed) {
acceleration.x = speed * MathUtils.cosDeg(angleDeg);
acceleration.y = speed * MathUtils.sinDeg(angleDeg);
}
请注意,最后一段代码可能正是 user unexistential 所指的内容。
(如果你正在学习 LibGDX 和游戏开发,我推荐这本书。非常好。)
另请参阅:
关于java - 如何在指定方向旋转后移动 Sprite ? Libgdx-Java-Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624721/