c# - 有没有办法找到特定层中的每个 RigidBody?

标签 c# unity3d

我正在制作一款需要像物理一样需要引力的游戏。我试图找到特定层中每个刚体(运行脚本的刚体除外)的质心。 我有这个:

float AvrgMass;
float count = 0f;
Vector3 AvrgPoisition = Vector3.zero;

void Update(){

    foreach (Rigidbody2D Body in "THELAYER")
    {
        AvrgPoisition += Body.transform.position;
        AvrgMass += Body.mass;
        count++;
    }

    AvrgPoissition -= ThisBody.transform.position;
    AvrgMass -= ThisBody.mass;
    AvrgPoisition /= count;
    AvrgMass /= count;
}

我的方向是否正确? “THELAYER”应该是什么?

最佳答案

我认为没有内置函数。 我认为你可以做的是获取场景中的所有游戏对象,然后循环获取你想要的东西。例如:

GameObjects[] gameObjects=GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[];

您可以使用脚本忽略游戏对象。

foreach(GameObject go in gameObjects){
if(go.name!="GameManager" && go.layer=="layerName"){
RigidBody2D rb2d=go.GetComponent<RigidBody2D>();
//Do some stuff
AvrgPoisition += rb2d.transform.position;
 AvrgMass += rb2d.mass;
 count++;
//Etc
}
}

不过要小心,您不想在 Update() 函数中运行此代码。

关于c# - 有没有办法找到特定层中的每个 RigidBody?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56047797/

相关文章:

c# - 从 byte[] 创建 AudioClip

c# - Unity C# 中的运动脚本

c# - 对多种 Material 应用不同的纹理(Unity3D)

c# - 在特定位置删除 char,从字符串末尾开始计算

c# - 如何在 DQN(深度 Q 网络)中分配状态?

c# - UWP c# 如何获取应用程序下载文件夹的 StorageFolder 对象

c# - 从文件读取的行中删除\r

c# - 使用 .NET Core 2.2 从 Azure 存储获取所有 Blob

c# - 替换 <pre> 标签之间的换行符

c# - 获取列表中每个项目的对象集合(产品)