Префабы Unity действуют по-разному в зависимости от того, перетаскивают ли они их на сцену статически или динамически генерируют их с помощью кода
Если я создаю экземпляр сборного, вот так:
GameObject asteroid = GameObject.Instantiate(thing2spawn);
//then set the location and some other stuff
Столкновения астероида с заранее приготовленным пространством вообще не регистрируются, но если я просто перетащу астероид в сцену, столкновения будут работать точно так, как ожидается.
1 ответ
Догадаться.
У моего астероидного объекта есть два дочерних объекта, которые содержат коллайдеры, которые делают разные вещи. Удар по определенной части астероида исцеляет вас, тогда как удар по другой части причиняет вам вред. У этих двух детей были компоненты твердого тела, поэтому, когда я установил скорость астероида (родительский объект) в коде, эти два ребенка не могли двигаться вместе с ним. Так что казалось, что коллайдеры не работали, когда на самом деле их просто оставили в каком-то другом месте. Удаление твердых тел у детей устранило проблему.
Weird.