我试图通过单击移动对象(基本RTS运动)来使字符跟随移动对象,而且我听说使用协同例程比使用void节省了更多的计算能力。不过,我还不太熟悉日常生活,我需要一些帮助。
这是我的问题
MoveToPoint(),那么使用FollowTarget()将需要玩家点击对象两次才能开始跟踪,而不是一次,我似乎不知道为什么。UpdatePosition()将运行,如何使它在该对象上运行一次?(我的朋友大力点击一个物体,试图使字符走得更快,而它显然不是。)现在大约有10条共同例行的运行发布于 2017-09-14 12:53:39
1)您必须单击两次的原因可能是因为在您的协同机制中,您首先等待半秒钟,然后才更新目的地。考虑将yield return new WaitForSeconds(0.5)移动到while循环的末尾。
2)这是因为每次调用StartCoroutine时都会调用FollowTarget()。您可以通过使用布尔值(例如,bool coroutineRunning )并在开始时将其设置为false来避免这种情况。在coroutine开头将其设置为true,而不是在FollowTarget中调用FollowTarget,使用如下所示
if (!coroutineRunning)
{
StartCoroutine(UpdatePosition())`.
}3)不确定。确保您的脚本独立地为每个代理运行。
https://stackoverflow.com/questions/46218661
复制相似问题