Префабы Unity действуют по-разному в зависимости от того, перетаскивают ли они их на сцену статически или динамически генерируют их с помощью кода

Если я создаю экземпляр сборного, вот так:

GameObject asteroid = GameObject.Instantiate(thing2spawn);
//then set the location and some other stuff

Столкновения астероида с заранее приготовленным пространством вообще не регистрируются, но если я просто перетащу астероид в сцену, столкновения будут работать точно так, как ожидается.

1 ответ

Догадаться.

У моего астероидного объекта есть два дочерних объекта, которые содержат коллайдеры, которые делают разные вещи. Удар по определенной части астероида исцеляет вас, тогда как удар по другой части причиняет вам вред. У этих двух детей были компоненты твердого тела, поэтому, когда я установил скорость астероида (родительский объект) в коде, эти два ребенка не могли двигаться вместе с ним. Так что казалось, что коллайдеры не работали, когда на самом деле их просто оставили в каком-то другом месте. Удаление твердых тел у детей устранило проблему.

Weird.

Другие вопросы по тегам