unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体)

unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体)

csharp 复制代码
/// <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;
    }
}
相关推荐
墨笺染尘缘4 小时前
Unity——鼠标是否在某个圆形Image范围内
unity·c#·游戏引擎
Thomas_YXQ5 小时前
Unity3D项目开发中的资源加密详解
游戏·3d·unity·unity3d·游戏开发
qq_428639619 小时前
虚幻基础-1:cpu挑选(14600kf)
游戏引擎·虚幻
杀死一只知更鸟debug12 小时前
Unity自学之旅05
unity·游戏引擎
qq_59821175712 小时前
Unity编辑拓展显示自定义类型
unity·游戏引擎
你疯了抱抱我13 小时前
【VRChat · 改模】Unity2019、2022的版本选择哪个如何决策,功能有何区别;
unity·vr·vrchat
东方猫13 小时前
UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理?
游戏引擎·虚幻
Thomas_YXQ15 小时前
Unity3D 动态骨骼性能优化详解
开发语言·网络·游戏·unity·性能优化·unity3d
Yungoal18 小时前
Unity入门1
unity·游戏引擎
qq_428639611 天前
虚幻基础1:hello world
游戏引擎·虚幻