Единичное столкновение одного объекта с другим

У меня есть код, мне нужно чтобы при касании объекта 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);

}

}

У ваших Player и Bomb есть коллайдер объектов?

ItzHex 09.05.2022 18:39

@ItzHex Конечно, мне просто нужно исключить bg_ из условия

Ilya 09.05.2022 18:42

Ваше утверждение if должно исключать bg_ из условия. Вы уверены, что ваш объект _bg не имеет тега bomb?

ItzHex 09.05.2022 18:45

Нет, у ''bg_'' есть тег ''bg''

Ilya 09.05.2022 18:47

Выполняется код внутри вашего оператора if или нет?

ItzHex 09.05.2022 18:50

Да, но выполняется сразу из-за того, что bg_ (background) касается бомб, мне нужно чтобы эти действия выполнялись только когда игрок касается бомб

Ilya 09.05.2022 18:54

Ваш файл Player_.cs прикреплен к объекту игрока, верно? OnTriggerEnter2D следует вызывать только тогда, когда объект, к которому прикреплен скрипт, сталкивается с объектом с триггерным коллайдером.

ItzHex 09.05.2022 18:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

На вашей бомбе у вас может быть OnTriggerEnter2D, и когда что-то его запускает, вы просто смотрите на тег и делаете соответствующую реакцию.

void OnTriggerEnter2D (Collider2D other){
    if (other.gameObject.tag == "Player")
    {
        Do Something();
    }
}

Таким образом, когда что-то еще запускает его, ничего не происходит.

Ответ принят как подходящий

Хотя теги будут работать для ваших нужд, я хотел бы предостеречь от их использования.

Вместо этого используйте Столкновение на основе слоев и используйте слои вместо тегов. Это фактически делает то же самое, но на самом деле полностью предотвращает физическое взаимодействие, предотвращая напрасную трату вычислительной мощности.

Вместо добавления тега к игроку создайте слой для «Игрок» и слой для «Взаимодействующие элементы» (или «Бомбы», если у вас есть игрок, взаимодействующий только с бомбами). Установите соответствующие слои и измените матрицу столкновений, чтобы только объекты в Player могли сталкиваться с Interactables. Таким образом, другие объекты даже не вызовут столкновение, и вам не нужно создавать логику для его игнорирования.

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