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;
    }
}
相关推荐
etp_1 天前
Unity Avater
unity·游戏引擎
唐小墨同学1 天前
工程场景数字化初体验-145分钟极速版
unity·机械
JIes__1 天前
Unity(三)——DoTween/TimeLine
unity·游戏引擎
WarPigs1 天前
基于泛型+反射的Excel万能导表工具
unity·c#·excel·反射
心前阳光1 天前
Mirror网络库插件使用4
java·linux·网络·unity·c#·游戏引擎
呆呆敲代码的小Y1 天前
【Unity-AI开发篇】| Unity-MCP最新指南:让AI接管游戏开发
人工智能·游戏·unity·ai·游戏引擎·mcp·unitymcp
音视频开发_AIZ1 天前
语聊房实时语音SDK选型:即构 vs 声网 vs 腾讯云深度对比
flutter·unity·uni-app·实时音视频·ai降噪·实时语音·语音社交
HahaGiver6661 天前
Unity Shader Graph 2D - 一个液体瓶子效果
unity·游戏引擎
前端不太难1 天前
OpenClaw:经典 2D 游戏引擎解析
游戏引擎·状态模式
R-sz1 天前
虚幻 UE5 像素流多用户部署,像素流多实例部署
ue5·游戏引擎·虚幻