Поскольку коллайдеры создают проблемы, когда GameObject создается внутри другого коллайдера.Я рекомендовал вам сначала проверить, будет ли создана пуля внутри стены, и в этом случае напрямую не создавать ее.Я считаю, что это сделает код более эффективным.
Итак, сначала вам нужно добавить Стену в слой ( Здесь , вы можете увидеть, как создать новый слой и назначить ему стену).слой).Передайте его в качестве параметра сценарию, который вы используете для создания экземпляров пуль (например, сценарий танка).
public LayerMask wallLayer;
Вы сохраняете преобразование танка в переменной
// Variable with position of the Tank
Transform _transform;
void Awake () {
_transform = GetComponent<Transform> ();
}
Следующая вещь, которую вы генерируете Physics2D.Linecast
. Источник .Предполагая, что вы используете сценарий, прикрепленный к резервуару GameObject, для выстрела пуль:
// Linecase goes from the tank position to the place where you would be instantiating the bullet
boolean insideWall = Physics2D.Linecast(_transform.position, firepoint1.position, wallLayer);
Тогда вы создаете экземпляр пули только в том случае, если вы не создали его внутри стены.
if(!insideWall)
Instantiate(bullet1, firepoint1.position, firepoint1.rotation);