Вторник, 19 Ноября 2024, 09:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
OnTriggerStay(Collider)
andarkyДата: Понедельник, 22 Декабря 2014, 19:13 | Сообщение # 1
старожил
Сейчас нет на сайте
Вот в чем суть:
я хочу чтобы можно было ставить метки через определенное расстояние.
у меня к персу чилдом привинчен объект с большим триггером(сфер)
я жму пробел и если с триггером ничего не пресекается (с такими же тэгами) то метка создается

метка - объект с коллайдером и ригидБоди и тэгом 'flag'
как выявлять пересечения триггеров - я не понял... это вообще можно?

Изначально делал через методы OnTriggerEnter() / OnTriggerExit() но выяснилось что это ненадежно.
Тогда я решил использовать OnTriggerStay() и... как оказалось и этот метод тоже даёт сбои...

я даже счетчик поставил в Update() чтобы после создания метки он считал до 50 - не помогло...

Я поставил функцию
OnTriggerStay() строкой выше перед Update() в котором расчеты...

все равно сбои: можно поставить рядом две и более метки

я в панике... как мне быть?



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
allodsДата: Понедельник, 22 Декабря 2014, 20:28 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
1 из двух триггеров в движении? а то когда 2 триггера стоят на месте могут быть сбои. Можно хоть один триггер двигать на 0,000001 и сбоев не будет.
RangerДата: Понедельник, 22 Декабря 2014, 20:37 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Цитата
OnTriggerStay is called once per frame for every Collider other that is touching the trigger.

Событие возникает на каждый коллайдер каждый кадр.
Сложно говорить не видя кода, но предполагаю так:
Каждый кадр происходит пересечение с несколькими коллайдерами.
и твой флажок _МОЖНОСТАВИТЬИЛИНЕТ просто переписывается.

2й момент.
OnTriggerStay работает в случае пересечения коллайдеров. если один будет внутри другого - события пересечения не будет.

Мой совет: не заморачивайся коллайдерами, записывай метки в список и проверяй расстоянием.


andarkyДата: Вторник, 23 Декабря 2014, 10:59 | Сообщение # 4
старожил
Сейчас нет на сайте
Ranger, а если и ооооочень много?
пробегать массив и вычислять Distance() ?

Цитата Ranger ()
2й момент.
OnTriggerStay работает в случае пересечения коллайдеров. если один будет внутри другого - события пересечения не будет.

вот тут спасибо. Не знал.
Возможно оно и есть причина. У меня ведь сфера, а тут получается надо наверное мешколлидер делать в форме диска



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
RangerДата: Вторник, 23 Декабря 2014, 11:05 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата andarky ()
пробегать массив и вычислять Distance() ?

Да.
Поверь, коллайдеры жрут больше.
Хочешь соптимизировать, проверяй квадрат дистанции, чтобы не пользовать квадратный корень.
Проверка у тебя идет по событию (пробелу), а не каждый кадр. Так что это не повлияет на общий фпс.


andarkyДата: Среда, 24 Декабря 2014, 13:38 | Сообщение # 6
старожил
Сейчас нет на сайте
я сделал меш-коллайдер-блинчик и это помогло!

дает сбои но ооочень редко



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг