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

Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 08 янв 2018, 22:25
Nubila
Доброго времени суток. Делаю 2D стрелялку на ведро. Так как таргет девайс не обладает впечатляющими характеристиками, то хотелось бы уменьшить затраты ресурсов. Подскажите пожалуйста, какой самый оптимальный вариант для создания пуль? Я подозреваю что через партиклы, но лишние батчи меня немного пугают и хотелось бы узнать наверняка.

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 09 янв 2018, 00:04
Paul Siberdt
Самый оптимальный - вообще без пуль, а рейкастом.
Потяжелее - выпускайте объект(например, растянутую плашку)... и, опять, рейкастите вперед на предмет столкновений.
Визуально проджектайлы хорошо смотрятся растянутыми плашками или даже линией от начала до конца.

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 09 янв 2018, 00:57
Nubila
Paul Siberdt писал(а):Самый оптимальный - вообще без пуль, а рейкастом.
Потяжелее - выпускайте объект(например, растянутую плашку)... и, опять, рейкастите вперед на предмет столкновений.
Визуально проджектайлы хорошо смотрятся растянутыми плашками или даже линией от начала до конца.

А если выстрел дробовика? 7 рейкастов? А разве через партикл систем с 7 частицами у которых есть направление и немного рандома не будет оптимальным? У всех объектов , к которым может прилететь дробь будет OnCollisionEnter и здесь рейкасты не понадобятся.. Или это тяжелее будет?

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 09 янв 2018, 11:25
Msey
Nubila писал(а):
Paul Siberdt писал(а):Самый оптимальный - вообще без пуль, а рейкастом.
Потяжелее - выпускайте объект(например, растянутую плашку)... и, опять, рейкастите вперед на предмет столкновений.
Визуально проджектайлы хорошо смотрятся растянутыми плашками или даже линией от начала до конца.

А если выстрел дробовика? 7 рейкастов? А разве через партикл систем с 7 частицами у которых есть направление и немного рандома не будет оптимальным? У всех объектов , к которым может прилететь дробь будет OnCollisionEnter и здесь рейкасты не понадобятся.. Или это тяжелее будет?

В подобных ситуация я часто пользуюсь вопросом: "Насколько быстро это будет работать при тысяче таких объектов? А если десятки тысяч?" А потом сравниваю методы. Рейкаст - это луч. Никаких движений точки, никаких перемещений коллайдеров, и уж тем более отловов их коллизий. Если нужно сделать тайминг на полет пули, то это проще реализовать через паузу между звуком выстрела и рейкастом.

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 10 янв 2018, 15:35
Nubila
Вас понял. Спасибо)

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 10 янв 2018, 15:59
Fehler
создаете пул для всех видов пуль!
при выстреле берете пулю из пула, работаете с ней, при уничтожении - помещаете ее снова в пул.

нет тяжеловесных Destroy/Instantiate
пули используются многократно

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 11 янв 2018, 16:55
Nubila
Fehler писал(а):создаете пул для всех видов пуль!
при выстреле берете пулю из пула, работаете с ней, при уничтожении - помещаете ее снова в пул.

нет тяжеловесных Destroy/Instantiate
пули используются многократно

Дело в том, что я хотел вообще отказаться от пуль-объектов, думая что частичка в Particle System кушает ресурсов меньше чем обычный GameObject.
Как выше упомянул Msey, для сравнения необходимо взять 1000 объектов и 1000 частиц... и вот 1000 частиц грузит меньше систему.

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 11 янв 2018, 17:07
Paul Siberdt
Частичка - это всего лишь визуальная часть довольно массивной системы. Зачем вам воротить гору эмиттеров под каждлое оружие, если можно ограничиться простеньким объектом?

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 12 янв 2018, 19:22
Nubila
Paul Siberdt писал(а):Частичка - это всего лишь визуальная часть довольно массивной системы. Зачем вам воротить гору эмиттеров под каждлое оружие, если можно ограничиться простеньким объектом?

Гору конечно же не хочется, а если один Particle System для всех типов оружия, но отдельный скрипт при смене оружия будет менять параметры и материал самого Particle System? Или это всё равно не выход?

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 12 янв 2018, 19:29
Paul Siberdt
Конечно, выход. Разработка игр - это здание с миллионом выходов, каждый выбирает по вкусу и ширине.
Просто я лично думаю, что контролировать частицу и эммитер будет посложнее - чем одинокую плашку, присобаченную к оружию для отрисовки одного эффекта.

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 14 янв 2018, 03:00
Nubila
Paul Siberdt писал(а):Конечно, выход. Разработка игр - это здание с миллионом выходов, каждый выбирает по вкусу и ширине.
Просто я лично думаю, что контролировать частицу и эммитер будет посложнее - чем одинокую плашку, присобаченную к оружию для отрисовки одного эффекта.

С этим я полностью с вами согласен!) Ну тогда буду использовать геймобжекты, а если уж всё будет так плохо то емиттеры)) Спасибо вам!

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 15 янв 2018, 11:34
Fehler
Nubila писал(а):...Делаю 2D стрелялку на ведро. ...Подскажите пожалуйста, какой самый оптимальный вариант для создания пуль? ...

к любому проэкту необходимо подходить творчески , но и не забывать про математику/статистику...
вы делаете не стратегию, в которой может быть сотни, а то и тысячи игровых обьектов.
вы делаете 2D стрелялку в которой ...
а вот и вопрос) сколько одновременно будет пуль ?
я не знаю что вы делаете конкретно, но не думаю что у вас будет более 5-10 стреляющих юнитов, а если топ-даун шутер то еще меньше)
пускай 10 юнитов , скорострельность 10 выстрелов в секунду и продолжительностью полета пули (пока она не улетит за екран или попадет в цель) не более 2-3сек.
то есть 10*10*3=300 обьектов одновременно
не так и много чтобы при правильном использовании повесить "калькулятор"
тем более что, если! все же много, то можно сделать как в первом старкрафте маринес стреляют) видно вспышки выстрелов и попадания по цели, самих пуль - нет.
да и в большинстве топ-даун шутерах сделано так же.

Re: Как лучше реализовать пули и стрельбу?

СообщениеДобавлено: 24 мар 2018, 20:20
Вова
Добрый день. У меня есть проблема, когда я стреляю и идут много врагов и их коллайдеры пересекаются, то пуля наносит урон нескольким врагам. Как сделать чтоб пуля наносила урон только одному врагу? Проверку я делаю через OnTriggerEnter2D.
Пример:
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == enemyName)
{
Destroy(gameObject);
DamageEnemy(collision.transform);
}
}

void DamageEnemy(Transform enemy)
{
Enemy e = enemy.GetComponent();

if (e != null)
{
e.TakeDamage(damage);
}
}