【发布时间】:2020-01-26 13:12:55
【问题描述】:
我在 Unity 2D 项目中有一个航点系统,其中游戏对象将按顺序跟随每个航点,然后重复该过程,我希望游戏对象在每个点停止一段固定的时间,我认为我可以实现这使用协程但不完全确定如何实现这一点,到目前为止我所做的是创建一个名为 WaitAtPoint 的协程,然后在每个航路点移动时调用它但无济于事,不确定我做错了什么。
public class BrainBoss : MonoBehaviour {
[SerializeField]
Transform[] waypoints;
[SerializeField]
float moveSpeed = 2f;
int waypointIndex = 0;
// Start is called before the first frame update
void Start()
{
transform.position = waypoints[waypointIndex].transform.position;
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
transform.position = Vector2.MoveTowards(transform.position,
waypoints[waypointIndex].transform.position, moveSpeed * Time.deltaTime);
if(transform.position == waypoints[waypointIndex].transform.position)
{
StartCoroutine(WaitAtPoint());
waypointIndex += 1;
}
if(waypointIndex == waypoints.Length)
{
waypointIndex = 1;
}
}
IEnumerator WaitAtPoint()
{
yield return new WaitForSeconds(3f);
}
}
【问题讨论】: