java - 如何在指定方向旋转后移动 Sprite ? Libgdx-Java-Android

标签 java android libgdx

我有一个视频游戏,其中箭头在旋转箭头后向其指向的一侧移动,示例:

enter image description here

我需要将 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/

相关文章:

java - LibGDX 不使用 Android Assets 文件夹

java - Libgdx Scene2d 表和滚动 Pane 错误?

java - LibGDX + Box2D : Object Positioning

java - 使用 Java 进行硬盘基准测试,获得异常快的结果

java - 创建包含多个文件和目录的 Maven 版本

android - 忽略 TortoiseSVN 中的 android 库 bin 文件?

android - tabhost 安卓

android - Activity 在 onClick 方法中泄漏了窗口

java - 无法启动 RESTful Web 服务

java - 在 IntelliJ IDEA 中,如何创建以当前文件作为参数执行 shell 脚本的键绑定(bind)?