gpt4 book ai didi

java - 瓷砖每秒移动一次

转载 作者:行者123 更新时间:2023-12-02 12:12:13 25 4
gpt4 key购买 nike

我的更新方法如下所示:

@Override
public void update(Input input, int delta) {

/* if UP, move player 5 tiles upwards */
if (input.isKeyPressed(Input.KEY_UP) {
y -= 5;
setY(y);
}

/* if DOWN, move player 5 tiles downwards */
if (input.isKeyPressed(Input.KEY_DOWN) {
y += 5;
setY(y);
}

/* if LEFT, move player 5 tiles to the left */
if (input.isKeyPressed(Input.KEY_LEFT) {
x -= 5;
setX(x);
}

/* if RIGHT, move player 5 tiles to the right */
if (input.isKeyPressed(Input.KEY_RIGHT) {
x += 5;
setX(x);
}
}

我的世界级更新循环:

public void update(Input input, int delta) 
throws SlickException {

// Update every sprite eg. Player, Blocks etc.
for (Sprite sprite : list) {
sprite.update(input, delta);
}
}

其中 setX()setY() 只是我的类中的 setter ,它们处理玩家应该以图 block 的形式移动多少像素。每个图 block 为 32 像素。

到目前为止,这会将我的玩家从一个位置移动到另一个位置,向下、向上、向左或向右 5 格。我想知道这是否是一种让玩家每 0.25 秒移动一个方 block 到目的地的方法?例如,每 0.25 秒,玩家就会向左、向右、向下或向上移动 32 个像素。我希望添加此功能,这样玩家看起来就像是在图 block 上滑动,而不是直接传送到其位置。

我如何使用计时器来实现这一目标?我可以使用 delta 来做到这一点吗?任何形式的帮助将不胜感激。

最佳答案

请参阅此答案:

Java slick2d moving an object every x seconds

您绝对应该使用 delta 来实现此目的,因为您想要 framerate independent motion在你的游戏中。

关于java - 瓷砖每秒移动一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46463234/

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