У меня есть код, мне нужно чтобы при касании объекта player_ объекта с тегом bomb происходили следующие действия, а при касании объекта bg_ объекта с тегом bomb ничего не должно происходить, как это написать?
public class Player_ : MonoBehaviour{
public GameObject player_;
public GameObject bg_;
public static bool lose = false;
void Awake(){
lose = false;
}
void OnTriggerEnter2D (Collider2D other){
if (other.gameObject.tag == "bomb")
lose = true;
player_.gameObject.SetActive (false);
bg_.gameObject.SetActive (false);
}
}
@ItzHex Конечно, мне просто нужно исключить bg_ из условия
Ваше утверждение if должно исключать bg_ из условия. Вы уверены, что ваш объект _bg не имеет тега bomb?
Нет, у ''bg_'' есть тег ''bg''
Выполняется код внутри вашего оператора if или нет?
Да, но выполняется сразу из-за того, что bg_ (background) касается бомб, мне нужно чтобы эти действия выполнялись только когда игрок касается бомб
Ваш файл Player_.cs прикреплен к объекту игрока, верно? OnTriggerEnter2D следует вызывать только тогда, когда объект, к которому прикреплен скрипт, сталкивается с объектом с триггерным коллайдером.





На вашей бомбе у вас может быть OnTriggerEnter2D, и когда что-то его запускает, вы просто смотрите на тег и делаете соответствующую реакцию.
void OnTriggerEnter2D (Collider2D other){
if (other.gameObject.tag == "Player")
{
Do Something();
}
}
Таким образом, когда что-то еще запускает его, ничего не происходит.
Хотя теги будут работать для ваших нужд, я хотел бы предостеречь от их использования.
Вместо этого используйте Столкновение на основе слоев и используйте слои вместо тегов. Это фактически делает то же самое, но на самом деле полностью предотвращает физическое взаимодействие, предотвращая напрасную трату вычислительной мощности.
Вместо добавления тега к игроку создайте слой для «Игрок» и слой для «Взаимодействующие элементы» (или «Бомбы», если у вас есть игрок, взаимодействующий только с бомбами). Установите соответствующие слои и измените матрицу столкновений, чтобы только объекты в Player могли сталкиваться с Interactables. Таким образом, другие объекты даже не вызовут столкновение, и вам не нужно создавать логику для его игнорирования.
У ваших
PlayerиBombесть коллайдер объектов?