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;
    }
}
相关推荐
十贺3 小时前
【Unity开发字典】分包、黏包基本概念和处理逻辑实现
unity·游戏引擎
淡海水8 小时前
01-认知篇-总览-HybridCLR是什么
unity·c#·aot·热更新·clr·hybrid
霸王•吕布12 小时前
游戏引擎中的BoundingBox
游戏引擎·aabb包围盒·obb包围盒
nnsix12 小时前
Unity AssetBundle(AB包) 笔记
笔记·unity·游戏引擎
mxwin12 小时前
Unity Shader Shiny SSRR
unity·游戏引擎·shader
happyprince13 小时前
06-Hugging Face Transformers 生成系统深度分析
网络·unity·游戏引擎
程序员JerrySUN1 天前
Jetson边缘嵌入式实战课程第五讲:Jetson Secure Boot - 安全启动
android·linux·服务器·人工智能·安全·unity·游戏引擎
Zik----1 天前
Unity 虚拟美术馆漫游系统
unity·vr·虚拟现实
十贺2 天前
【Unity开发字典】序列化基类
unity·c#·tcp
玄米乌龙茶1232 天前
LLM成长笔记(十三):系统设计与项目实战
笔记·unity·游戏引擎