У меня есть 4 игровых объекта (я, скорее всего, буду делать префабы). Все 4 объекта находятся внутри родительского объекта, к которому я прикрепил скрипт, чтобы определить объект, который будет контролироваться игроком в данный момент времени.
Я получаю ссылку на каждый игровой объект следующим образом:
private void getPlayers()
{
//Get player Game Objects and place in this array
players = new GameObject[4];
for (int i = 0; i < players.Length; i++)
players[i] = transform.GetChild(i).gameObject;
}
Это успешно получает все ссылки и дает мне возможность вносить изменения непосредственно в каждый игровой объект, например:
getObjects();
currentObject = object[2];
rb = currentObject.GetComponent<Rigidbody>();
Я хочу добавить некоторую силу к currentObject
, но это не так, как ожидалось. Он стреляет в объект в любом направлении, в котором движется игрок, в позе, чтобы катиться в этом направлении. Вот как я добавляю силу:
float x = Input.GetAxis("Horizontal"),
y = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(x, 0.0f, y);
rb.AddForce(movement * speed);
Я использовал этот метод, прежде чем добавить силу, и он работает безупречно. Но добавление этой строки ломает все:
players[i] = transform.GetChild(i).gameObject;
Кроме того, я должен отметить, что я начинающий разработчик Unity.
Обновление:
Эта проблема не имеет ничего общего со ссылкой на дочерний объект. Проблема была связана с моей ошибкой изменения значения Time.fixedDeltaTime
. Не обновляйте это значение в своем проекте, так как оно может нарушить физические вычисления во время выполнения.