gpt4 book ai didi

java - LibGDX 输入仅运行我的循环一次,并且在单击鼠标时不会连续运行

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

public void update(float delta){
position.x = getX();
if(Gdx.input.justTouched()){
for(;position.x < 864; position.x = position.x + 0.5f){
setX(getX() + 3f*delta);
}
}
}

上面的代码显示了使 block 移动的循环,就像角色从屏幕的一侧移动到另一侧,并在到达 x 坐标 864 时停止。循环在单独运行时运行良好,但它我一编译游戏就运行。我想要它做的是当鼠标单击屏幕上的任意位置时运行循环。但实际发生的情况是,它只运行一次循环,我必须在循环完成之前多次单击鼠标,并且 block 位于屏幕的另一侧(下图)。有人可以告诉我如何设置它,以便它运行整个循环并通过单击鼠标将 block 从左向右移动。

非常感谢。

图片:这是 block 开始的地方:/image/n5CDU.png这就是我希望单击鼠标时的结果:/image/lnZA1.png

最佳答案

您不能在update中使用这样的循环,因为它们会阻塞渲染循环。渲染循环已经提供了循环,因此您只需在每次调用更新时增加它。保留一个 boolean 值来决定是否需要开始运动。像这样的事情:

boolean hasBeenTapped = false;

public void update(float delta){

if (Gdx.input.justTouched())
hasBeenTapped = true;

if (hasBeenTapped && getX() < 864)
setX(getX() + 3f*delta);

}

如果您想使用scene2d ,那么它有自己的操作系统来为你处理这些东西,可能比这更直观。不过,我个人仅将 scene2d 用于 UI 内容,因为我发现设置游戏代码太耗时/限制性太强。

关于java - LibGDX 输入仅运行我的循环一次,并且在单击鼠标时不会连续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26454880/

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