有什么方法可以找到特定层中的每个RigidBody?

时间:2019-05-08 19:29:51

标签: c# unity3d

我正在做一个需要像物理学一样需要重力的游戏。我试图找到特定层中每个RigidBody(运行脚本的人)的重心。 我有这个:

get-process -IncludeUserName | 
  where-object { $_.username -eq 'bot1' -and $_.name -ne 'code' -and
  $_.name -ne 'outlook' } | stop-process -whatif

我朝着正确的方向前进吗? “ THELAYER”应该是什么?

2 个答案:

答案 0 :(得分:0)

您可以尝试将所有刚体放入您的foreach内,测试它们是否与所需的层相匹配。

会是这样的:

RigidBody2D[] allRigidBodies = (RigidBody2D[]) GameObject.FindObjectsOfType(typeof(RigidBody2D));

foreach(Rigidbody2D body in allRigidBodies)
 {
     if(body.gameObject.layer==THE_LAYER)
         // do stuff
 } 

答案 1 :(得分:0)

我认为没有内置函数。 我认为您可以做的是获取场景中的所有GameObject,然后循环获取所需的内容。例如:

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

您可以使用脚本忽略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()函数中运行此代码。