У меня есть объект с именем ball, и при нажатии кнопки «b» я хочу, чтобы их было три. Эти три будут основаны на том, где был первый мяч. Вот код, в котором я пытаюсь это сделать.Создание трех экземпляров одного игрового объекта
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
}
}
}
Я хочу есть, когда я нажимаю "Ъ", чтобы быть три шарика на экране. Я знаю, что они будут в том же положении, но это нормально. Кроме того, когда я говорю три шара, я имею в виду, что после выполнения кода будет три. Вышеприведенный код должен создать два. Вот образ шара объекта от инспектора:
Ball
скрипт это единственное, что получил вырезать из изображения.
При попытке кода он говорит следующее:
Вопрос: Как я могу это исправить и получить желаемые три шара, чтобы показать. Спасибо за любую помощь!
Вы вызываете RigidBody, прикрепленный к объекту Tripleball, поэтому проверьте, есть ли у вас RigidBody для TripleBall :) На вашем снимке показан только объект шара. –
Одной из проблем, связанных с вашим кодом, является 'Ball [amountOfBalls - 1];'. Это должно быть 'Ball [amountOfBalls];' если вы действительно хотите, чтобы суммарные ставки были amountOfBalls. – Programmer
Другая проблема заключается в том, что 'ballArray [i] = gameObject.AddComponent();' просто создайте новый скрипт Ball на объекте gameObject (текущий объект). Если вы хотите дублировать объект шара, вы должны сделать это 'ballArray [i] = (Ball) Instantiate (firstBall);' –
Matriac