Я прикрепил сценарий к префабу, и сценарий выглядит следующим образом:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class destroyer: MonoBehaviour {
Circles circles;
Collider2D collider1;
Collider2D collider2;
private void Start() {
collider1 = gameObject.transform.GetChild(0).GetComponent < Collider2D > ();
collider2 = gameObject.transform.GetChild(1).GetComponent < Collider2D > ();
circles = FindObjectOfType < Circles > ();
}
private void Update() {
if (transform.position.y < 2) {
Destroy(gameObject);
circles.instantiator();
}
}
void OnTriggerStay2D(Collider2D other) {
if (collider1.bounds.Contains(other.bounds.max) && collider1.bounds.Contains(other.bounds.min)) {
print("2");
if (other.bounds.Contains(collider2.bounds.max) && other.bounds.Contains(collider2.bounds.min)) {
print("3");
if (transform.position.y > 3) {
print("4");
Destroy(other.gameObject);
Destroy(gameObject);
circles.instantiator();
}
}
}
}
}
OnTriggerStay2D
вызывается функция, но условие, когда GameObject полностью находится внутри коллайдера 1 и вне коллайдера 2, является никогда не истинно, даже если другой GameObject удовлетворяет условию. Раньше, когда я прикреплял оба коллайдера к префабу, это условие становилось истинным, когда игровой объект удовлетворял условию. Но после смены не работает. Я думаю, что я не обращаюсь к коллайдеру ребенка должным образом или есть другая ошибка. Пожалуйста, помогите мне решить эту проблему.
This is the pic of gameobject with two children each having circular collider
введите описание изображения здесь
и когда другой игровой объект, имеющий круговой коллайдер, оказывается между обоими круговыми коллайдерами, я хочу выполнить какое-то действие. В конечном итоге это то, чего я хочу достичь.
Изменить: та же функция работает нормально, и я получаю то, что хочу, когда помещаю сборный элемент на сцену и затем запускаю игру. Но он не работает с тем же префабом, который создается после запуска игры.