Страница 1 из 1

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

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

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

СообщениеДобавлено: 04 ноя 2019, 13:19
Alex5
А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

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

СообщениеДобавлено: 04 ноя 2019, 13:21
Sarcasop
Alex5 писал(а):А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

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

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

СообщениеДобавлено: 04 ноя 2019, 13:22
1max1
Sarcasop писал(а):
Alex5 писал(а):А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

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

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

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

СообщениеДобавлено: 04 ноя 2019, 13:25
Sarcasop
1max1 писал(а):
Sarcasop писал(а):
Alex5 писал(а):А кто мешает сделать счётчик и им считать, сколько раз произошло соприкосновение?

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

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

Я не использую компонент ridigbody, поэтому не могу использовать OnCollisionEnter2D

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

СообщениеДобавлено: 04 ноя 2019, 13:43
1max1
Ну это костыли какие-то тогда нужно делать, там где проверка на соприкосновение нужно увеличивать счетчик и контролироваться самостоятельно выход объекта чтобы считчик не считал каждый фрейм. Ну это реально инвалидная коляска... :ymparty:

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

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

Только теперь отработка будет происходить не сразу, а после достижения нужного значения.

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

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

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

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

СообщениеДобавлено: 04 ноя 2019, 14:09
Alex5
Ну, как там всё делает ТС, можно только догадываться. Полного кода то нет.

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

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

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

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

Я могу, конечно кинуть весь код, но есть ли смысл? У меня два скрипта, в одном я проверяю было ли столкновение шара с платформой, если было, то идет рикошет. Второй скрипт, который висит уже на платформе, включает в себя то, что я скидывал выше.

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

СообщениеДобавлено: 04 ноя 2019, 15:02
Alex5
В том скрипте, который "висит уже на платформе" и можно сделать счётчик. Можно даже с "дамагом" от шаров. :)
P.S. Хотя лучше переделать сам алгоритм, конечно.

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

СообщениеДобавлено: 04 ноя 2019, 15:05
Sarcasop
Alex5 писал(а):В том скрипте, который "висит уже на платформе" и можно сделать счётчик. Можно даже с "дамагом" от шаров. :)

Вы имеете в виду сделать счётчик и при достижении определенного значения уничтожать платформу? Сложно будет рассчитать необходимое значение, но если другого выхода нет - сделаю так! Спасибо за помощь.

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

СообщениеДобавлено: 04 ноя 2019, 15:28
1max1
решил сделать без использования ridigbody

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

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

СообщениеДобавлено: 04 ноя 2019, 15:31
Sarcasop
1max1 писал(а):
решил сделать без использования ridigbody

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

Исключительно собственная инициатива)