Unity: 延迟旋转生成的圆柱体
如果你想在所有代码执行完毕后再旋转生成的圆柱体,你可以使用'Coroutine'来实现延迟旋转。
首先,在'GenerateCylinders'函数中,生成圆柱体的克隆,并将它们存储在一个列表中:
List<GameObject> cylinders = new List<GameObject>();
void GenerateCylinders()
{
if (prefab != null)
{
for (int i = 0; i < cloneCount; i++)
{
// 在指定位置生成预制体,并设置旋转方向
GameObject newObject = Instantiate(prefab, transform.position, Quaternion.identity);
newObject.transform.SetParent(transform); // 设置生成的预制体为当前物体的子物体
// 设置圆柱体的缩放和位置
newObject.transform.localScale = new Vector3(radius * 2, height, radius * 2);
newObject.transform.localPosition = new Vector3(0f, i * height, 0f);
cylinders.Add(newObject);
}
}
}
然后,在适当的时机调用一个协程来延迟旋转圆柱体。例如,在'Start'函数中调用协程:
void Start()
{
GenerateCylinders();
StartCoroutine(RotateCylinders());
}
在协程'RotateCylinders'中,你可以使用'yield return new WaitForSeconds'来延迟旋转操作。例如,延迟1秒后旋转所有圆柱体:
IEnumerator RotateCylinders()
{
yield return new WaitForSeconds(1f);
foreach (GameObject cylinder in cylinders)
{
cylinder.transform.Rotate(Vector3.up, 90f);
}
}
在上述代码中,我们使用'yield return new WaitForSeconds(1f)'来延迟1秒。然后,使用'foreach'循环遍历存储在'cylinders'列表中的圆柱体,对每个圆柱体进行旋转操作。
这样,生成的圆柱体将在所有代码执行完毕后延迟1秒进行旋转。你可以根据需要调整延迟的时间和旋转的角度。
原文地址: https://www.cveoy.top/t/topic/vy4 著作权归作者所有。请勿转载和采集!