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