gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 09:39:33 26 4
gpt4 key购买 nike

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

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/

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