我正在尝试使我的角色不会永远持续破折号,但是会有一定的延迟,然后能够再次破折号。我的角色有时会决定有延迟,然后其他时候,当我单击该键时,它将连续无延迟地破折号。谁能帮我解决这个问题?谢谢。
编辑有人告诉我开始使用协程,但是我不确定它是如何工作的,我编辑了代码以使用“ yield”,但是我也不清楚它是如何工作的。有人可以告诉我这对我想要的是正确的,以及如何解决的吗?谢谢
if (hasTeleportedRecently == false)
{
transform.position = transform.position + transportVector;
hasTeleportedRecently = true;
yield return 3;
hasTeleportedRecently = false;
}
答案 0 :(得分:0)
您可以不使用协程。设置类型为float
的字段,在其中存储再次传送时的时间,并在播放器尝试传送时将当前时间与当前时间进行比较:
float now = Time.time;
if (now >= teleportAvailableAt) {
transform.position += transportVector;
teleportAvailableAt = now + 3f;
}
提示:
请勿将布尔值与true
或false
进行比较。完全省略== true
并将== false
替换为!
运算符。它更短且更不容易出现错误(您可以不小心写出if (flag = false) ...
-您在这里 assign false,并且仍然可以编译)
答案 1 :(得分:-1)
https://github.com/tim12332000/TimUnityUtility/blob/master/Assets/ScheduleHelper/ScheduleHelper.cs
使用它,例如,使任务延迟3秒。
hasTeleportedRecently = true;
ScheduleHelper.Instance.DelayDo(()=> {hasTeleportedRecently = false;},3f);