Разрушить объект после двух столкновений

Программирование на Юнити.

Разрушить объект после двух столкновений

Сообщение Sarcasop 04 ноя 2019, 13:09

Добрый день, сейчас делаю игру, суть в том, что есть платформа и если по ней ударяет шар, то отнимается одна жизнь. При втором касании, платформа должна разрушиться. Проблема в том, что решил сделать игру без использовании компонента rigidbody, соответственно не могу использовать OnTriggerEnter. Ниже код как я определяю соприкасается ли шар с платформой, внутри платформы есть два пустых объекта и при помощи OverlapAreaAll определяю пересек ли шар платформу.
Синтаксис:
Используется csharp
foreach (Collider2D col in Physics2D.OverlapAreaAll(_leftPos.position, _rightPos.position, _mask))
        {
            gameObject.SetActive(false);
        }
 
Sarcasop
UNец
 
Сообщения: 14
Зарегистрирован: 31 окт 2019, 00:38

Re: Разрушить объект после двух столкновений

Сообщение Alex5 04 ноя 2019, 13:19

А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?
Linux это просто
Экономика это просто
Forex это просто
Мой канал на YouTube
Аватара пользователя
Alex5
Старожил
 
Сообщения: 507
Зарегистрирован: 22 авг 2019, 17:37

Re: Разрушить объект после двух столкновений

Сообщение Sarcasop 04 ноя 2019, 13:21

Alex5 писал(а):А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

Проблема в том, что счётчик увеличивается не на 1, как я хотел бы, а каждый фрейм, т.к. находится в Update.
Sarcasop
UNец
 
Сообщения: 14
Зарегистрирован: 31 окт 2019, 00:38

Re: Разрушить объект после двух столкновений

Сообщение 1max1 04 ноя 2019, 13:22

Sarcasop писал(а):
Alex5 писал(а):А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

Проблема в том, что счётчик увеличивается не на 1, как я хотел бы, а каждый фрейм, т.к. находится в Update.

А зачем его совать в апдейт если его нужно использовать в OnCollisionEnter2D?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Разрушить объект после двух столкновений

Сообщение Sarcasop 04 ноя 2019, 13:25

1max1 писал(а):
Sarcasop писал(а):
Alex5 писал(а):А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

Проблема в том, что счётчик увеличивается не на 1, как я хотел бы, а каждый фрейм, т.к. находится в Update.

А зачем его совать в апдейт если его нужно использовать в OnCollisionEnter2D?

Я не использую компонент ridigbody, поэтому не могу использовать OnCollisionEnter2D
Sarcasop
UNец
 
Сообщения: 14
Зарегистрирован: 31 окт 2019, 00:38

Re: Разрушить объект после двух столкновений

Сообщение 1max1 04 ноя 2019, 13:43

Ну это костыли какие-то тогда нужно делать, там где проверка на соприкосновение нужно увеличивать счетчик и контролироваться самостоятельно выход объекта чтобы считчик не считал каждый фрейм. Ну это реально инвалидная коляска... :ymparty:
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Разрушить объект после двух столкновений

Сообщение Alex5 04 ноя 2019, 13:51

В чём костыли со счётчиком? Счётчик можно сделать в том же скрипте, в котором и происходит
Код: Выделить всё
gameObject.SetActive(false);

Только теперь отработка будет происходить не сразу, а после достижения нужного значения.
Linux это просто
Экономика это просто
Forex это просто
Мой канал на YouTube
Аватара пользователя
Alex5
Старожил
 
Сообщения: 507
Зарегистрирован: 22 авг 2019, 17:37

Re: Разрушить объект после двух столкновений

Сообщение 1max1 04 ноя 2019, 13:53

Alex5 писал(а):В чём костыли со счётчиком? Счётчик можно сделать в том же скрипте, в котором и происходит
Код: Выделить всё
gameObject.SetActive(false);

Он каждый фрейм кидает оверлэпы как я понял)) Очень производительно канешно... :))
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Разрушить объект после двух столкновений

Сообщение Alex5 04 ноя 2019, 14:09

Ну, как там всё делает ТС, можно только догадываться. Полного кода то нет.
Linux это просто
Экономика это просто
Forex это просто
Мой канал на YouTube
Аватара пользователя
Alex5
Старожил
 
Сообщения: 507
Зарегистрирован: 22 авг 2019, 17:37

Re: Разрушить объект после двух столкновений

Сообщение Sarcasop 04 ноя 2019, 14:46

1max1 писал(а):
Alex5 писал(а):В чём костыли со счётчиком? Счётчик можно сделать в том же скрипте, в котором и происходит
Код: Выделить всё
gameObject.SetActive(false);

Он каждый фрейм кидает оверлэпы как я понял)) Очень производительно канешно... :))

Да, я каждый фрейм проверяю через оверлэп было ли соприкосновение с шариком. Не спорю, не очень производительно, но по другому я не понял как сделать, потому что опять же, решил сделать без использования ridigbody
Alex5 писал(а):Ну, как там всё делает ТС, можно только догадываться. Полного кода то нет.

Я могу, конечно кинуть весь код, но есть ли смысл? У меня два скрипта, в одном я проверяю было ли столкновение шара с платформой, если было, то идет рикошет. Второй скрипт, который висит уже на платформе, включает в себя то, что я скидывал выше.
Sarcasop
UNец
 
Сообщения: 14
Зарегистрирован: 31 окт 2019, 00:38

Re: Разрушить объект после двух столкновений

Сообщение Alex5 04 ноя 2019, 15:02

В том скрипте, который "висит уже на платформе" и можно сделать счётчик. Можно даже с "дамагом" от шаров. :)
P.S. Хотя лучше переделать сам алгоритм, конечно.
Последний раз редактировалось Alex5 04 ноя 2019, 15:05, всего редактировалось 1 раз.
Linux это просто
Экономика это просто
Forex это просто
Мой канал на YouTube
Аватара пользователя
Alex5
Старожил
 
Сообщения: 507
Зарегистрирован: 22 авг 2019, 17:37

Re: Разрушить объект после двух столкновений

Сообщение Sarcasop 04 ноя 2019, 15:05

Alex5 писал(а):В том скрипте, который "висит уже на платформе" и можно сделать счётчик. Можно даже с "дамагом" от шаров. :)

Вы имеете в виду сделать счётчик и при достижении определенного значения уничтожать платформу? Сложно будет рассчитать необходимое значение, но если другого выхода нет - сделаю так! Спасибо за помощь.
Sarcasop
UNец
 
Сообщения: 14
Зарегистрирован: 31 окт 2019, 00:38

Re: Разрушить объект после двух столкновений

Сообщение 1max1 04 ноя 2019, 15:28

решил сделать без использования ridigbody

Это фетиш такой или есть на то адекватная причина?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Разрушить объект после двух столкновений

Сообщение Sarcasop 04 ноя 2019, 15:31

1max1 писал(а):
решил сделать без использования ridigbody

Это фетиш такой или есть на то адекватная причина?

Исключительно собственная инициатива)
Sarcasop
UNец
 
Сообщения: 14
Зарегистрирован: 31 окт 2019, 00:38


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8