我有一个名为ball的对象,并在按下按钮“b”时,我希望在那里有三个对象。这三个将基于第一球的位置。这是我正在尝试这样做的代码。生成一个gameobject的三个实例
public class TripleBall : MonoBehaviour {
public Ball firstBall;
private int amountOfBalls = 2;
private Ball[] ballArray;
private bool start, avail, located;
void Start() {
ballArray = new Ball[amountOfBalls - 1];
start = false;
for (int i = 0; i < ballArray.Length; i++)
ballArray[i] = gameObject.AddComponent<Ball>();
}
// Update is called once per frame
void Update() {
if (Input.GetKeyDown(KeyCode.B))
start = true;
if (start)
{
//Begin locator: Makes it so when the balls spawn they spawn where the first ball
if (!located) {
for (int i = 0; i < ballArray.Length; i++)
{
ballArray[i].transform.position = firstBall.transform.position;
}
located = true;
}
//End locator : if statement and loop
}
}
}
我想在那里,当我点击 “B” 是在屏幕上三个球。我知道他们会处于相同的位置,但没关系。另外,当我说三个球时,我的意思是代码执行后会有三个球。上面的代码应该创建两个。下面是检查球物体的图像:
的Ball
脚本是得到了切出的图像的唯一的事情。
当我尝试的代码,它说以下内容:
问:我怎样才能解决这个问题并得到所需的三个球露面。谢谢你的帮助!
你叫RigidBody附加到Tripleball对象,所以检查你是否有附加到TripleBall的RigidBody :)你的图片只显示球对象。 –
代码中有一个不相关的问题是'Ball [amountOfBalls - 1];'。这应该是'Ball [amountOfBalls];'如果你真的想让amountOfBalls成为amountOfBalls。 – Programmer
另一个问题是'ballArray [i] = gameObject.AddComponent();'只在对象gameObject(当前对象)上创建一个新的脚本Ball。如果你想复制球对象,你应该做这个'ballArray [i] =(Ball)Instantiate(firstBall);' –
Matriac