本文主要是介绍unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体)
/// <summary>
/// 给所有子物体随机分配位置
/// </summary>
void RandomLocation()
{// 获取当前物体下的所有子物体Transform[] childTransforms = GetComponentsInChildren<Transform>(true);// 获取子物体位置并保存到列表Vector3[] childPositions = new Vector3[childTransforms.Length - 1];for (int i = 1; i < childTransforms.Length; i++)//排除自身物体{childPositions[i - 1] = childTransforms[i].localPosition;}// 随机分配位置Shuffle(childPositions); 将位置分配给子物体for (int i = 0; i < childPositions.Length; i++){transform.GetChild(i).localPosition = childPositions[i];}
}
/// <summary>
/// 随机分配位置
/// </summary>
void Shuffle(Vector3[] array)
{// Fisher-Yates 洗牌算法for (int i = array.Length - 1; i > 0; i--){int j = Random.Range(0, i + 1);Vector3 temp = array[i];array[i] = array[j];array[j] = temp;}
}
这篇关于unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!