如何在Bevy rust中检查双击



我是新手,需要在游戏中执行双击系统,这就是我所尝试的。我得到了一些错误,特别是与包含即时的局部变量有关。我已经正确地导入了即时板条箱,但我不确定还需要什么才能使本地变量工作。

pub fn double_click(
mouse_button_input: Res<Input<MouseButton>>,
mut double_click_time: Local<Instant>,
) {
if mouse_button_input.just_pressed(MouseButton::Left) {
double_click_time = Instant::now();
}
println!("Time: {}", double_click_time.elapsed().as_secs());
}

我得到的一个错误是在Instant::now();,它是

expected struct `bevy::prelude::Local<'_, Instant, >`
found struct `Instant

当系统被添加时,它给出错误

the trait bound `for<'r, 's> fn(bevy::prelude::Res<'r, bevy::prelude::Input<bevy::prelude::MouseButton>>, bevy::prelude::Local<'s, Instant>) {inventory::double_click}: IntoSystem<(), (), _>` is not satisfied

如果有另一种方法来检测双击,那也是可行的!

根据你的错误和Local的文档(说它实现了DerefDerefMut),你只需要分配给Local内容,这应该修复你的编译错误:

*double_click_time = Instant::now();

我不认识Bevy,所以我不知道这是否是处理双击的最好方法。

谢谢,这是有效的,但我想出了另一种方法,我只是实现了双击超时到一个全局结构中用于一些其他相关的事情。

相关内容

  • 没有找到相关文章

最新更新