Arrays Unity-如何将游戏对象添加到阵列中并连接RigidBody2D,使其上下移动

Arrays Unity-如何将游戏对象添加到阵列中并连接RigidBody2D,使其上下移动,arrays,unity3d,foreach,Arrays,Unity3d,Foreach,我想添加几个对象(预制)(标记:MovingCloud)(数量因场景而异)。脚本附加到此预置。 我希望所有这些云都被探测到并上下移动。我尝试使用数组,但不知道如何使其工作 GameObject[]云; 游戏物体云; 刚体2d rb; 浮云速度=2f; 无效开始(){ clouds=GameObject.FindGameObjectsWithTag(“移动云”); foreach(云中的游戏对象云){ var rb=cloud.GetComponent(); } } 无效固定更新(){ if(变换

我想添加几个对象(预制)(标记:MovingCloud)(数量因场景而异)。脚本附加到此预置。 我希望所有这些云都被探测到并上下移动。我尝试使用数组,但不知道如何使其工作

GameObject[]云;
游戏物体云;
刚体2d rb;
浮云速度=2f;
无效开始(){
clouds=GameObject.FindGameObjectsWithTag(“移动云”);
foreach(云中的游戏对象云){
var rb=cloud.GetComponent();
}
}
无效固定更新(){
if(变换位置y<-3f){
rb.velocity=新矢量2(0,云速);
}
}
foreach(云中的游戏对象云)
{
var rb=cloud.GetComponent();
} 
这一行将继续重新分配您的
rb
变量,而不是引用每个云
Rigidbody


看看你的代码,我认为这样做是不对的。 从你的问题来看,我想你希望云随时间上下移动

从您提供的代码来看,似乎您正试图从一个中心脚本控制每一个云

我建议您在
Cloud
prefable中添加以下脚本,这样每个Cloud都将独立移动

将此连接到云预制:

使用UnityEngine;
使用系统集合;
公共类云:单一行为
{
公众浮标速度;
void Start()
{
//每5秒改变一次速度方向
调用重复(“更改速度方向”,5f,5f);
}
无效更新()
{
//移动此游戏对象
transform.position+=新矢量3(0f,速度*时间增量,0f);
}
void ChangeSpeedDirection()
{
速度*=-1;
}
}

这正是我需要的!非常感谢。没问题!:-)