现在有一组三维坐标x,y,z的数据,想要使unity中的物体按照这组坐标数据依次进行移动,且每两秒移动一次,直到走完所有坐标。
在Unity中,可以使用协程(Coroutine)来实现按照一组坐标数据依次进行移动,并且每两秒移动一次的效果。具体实现步骤如下:
创建一个空物体,作为移动的目标物体。
在脚本中定义一个三维坐标数组,保存所有需要移动到的位置坐标。
在脚本中定义一个协程函数,用于实现物体的移动。协程函数的代码如下所示:
IEnumerator MoveToPositions(Vector3[] positions, float duration)
{
for (int i = 0; i < positions.Length; i++)
{
// 计算从当前位置到目标位置的移动方向和距离
Vector3 direction = (positions[i] - transform.position).normalized;
float distance = Vector3.Distance(positions[i], transform.position);
// 按照移动方向和距离移动物体,并等待指定时间
float time = 0;
while (time < duration)
{
transform.position += direction * (distance / duration) * Time.deltaTime;
time += Time.deltaTime;
yield return null;
}
// 等待两秒后再进行下一次移动
yield return new WaitForSeconds(2);
}
}
在脚本的Start方法中,启动协程函数,开始物体的移动。代码如下所示:
void Start()
{
StartCoroutine(MoveToPositions(positions, 2.0f));
}
在上面的代码中,positions是三维坐标数组,保存了所有需要移动到的位置坐标,2.0f表示每两秒进行一次移动。当协程函数被启动后,物体就会按照数组中的坐标数据依次进行移动,并且每两秒移动一次,直到走完所有坐标。
直接使用补间动画插件即可
插件名称:DOTween
至于用法,直接百度把。DOTween也算有名插件,公开资料成千上万。不难找