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;
    }
}
相关推荐
玉夏7 小时前
【Shader基础】ShaderLab 语法
unity·游戏引擎
玖玥拾8 小时前
Cocos学习笔记:自定义字体、骨骼动画与项目架构
游戏引擎·cocos2d
玖玥拾11 小时前
Cocos学习笔记:渲染组件、摄像机系统与物理关节
游戏引擎·cocos2d
WarPigs11 小时前
Unity部署MessagePack
unity·游戏引擎
☆平常心☆12 小时前
Unity插件MagicLightmapSwitcher修改灯光强度大于100
unity·游戏引擎
平行云1 天前
实时云渲染预启动技术解析:UE数字孪生应用的延迟优化机制(二)
linux·unity·ue5·webgl·实时云渲染·云桌面·像素流
WiChP1 天前
【V0.1B10】从零开始的2D游戏引擎开发之路
java·数据库·游戏引擎
心前阳光1 天前
Unity之PhotonServer使用注意
unity·游戏引擎
玖玥拾1 天前
Cocos学习笔记:关节机制与物理交互
游戏引擎·cocos2d
Mark White1 天前
行为树(Behavior Tree):从 ROS 机器人到 Unity 游戏 AI 的统一决策范式
游戏·unity·机器人