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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение Nubila 08 янв 2018, 22:25

Доброго времени суток. Делаю 2D стрелялку на ведро. Так как таргет девайс не обладает впечатляющими характеристиками, то хотелось бы уменьшить затраты ресурсов. Подскажите пожалуйста, какой самый оптимальный вариант для создания пуль? Я подозреваю что через партиклы, но лишние батчи меня немного пугают и хотелось бы узнать наверняка.
Аватара пользователя
Nubila
UNIт
 
Сообщения: 115
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

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

Сообщение Paul Siberdt 09 янв 2018, 00:04

Самый оптимальный - вообще без пуль, а рейкастом.
Потяжелее - выпускайте объект(например, растянутую плашку)... и, опять, рейкастите вперед на предмет столкновений.
Визуально проджектайлы хорошо смотрятся растянутыми плашками или даже линией от начала до конца.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5206
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

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

Сообщение Nubila 09 янв 2018, 00:57

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

А если выстрел дробовика? 7 рейкастов? А разве через партикл систем с 7 частицами у которых есть направление и немного рандома не будет оптимальным? У всех объектов , к которым может прилететь дробь будет OnCollisionEnter и здесь рейкасты не понадобятся.. Или это тяжелее будет?
Аватара пользователя
Nubila
UNIт
 
Сообщения: 115
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

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

Сообщение Msey 09 янв 2018, 11:25

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

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

В подобных ситуация я часто пользуюсь вопросом: "Насколько быстро это будет работать при тысяче таких объектов? А если десятки тысяч?" А потом сравниваю методы. Рейкаст - это луч. Никаких движений точки, никаких перемещений коллайдеров, и уж тем более отловов их коллизий. Если нужно сделать тайминг на полет пули, то это проще реализовать через паузу между звуком выстрела и рейкастом.
Аватара пользователя
Msey
UNIт
 
Сообщения: 103
Зарегистрирован: 31 мар 2015, 20:09
Откуда: Moscow
  • Сайт

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

Сообщение Nubila 10 янв 2018, 15:35

Вас понял. Спасибо)
Аватара пользователя
Nubila
UNIт
 
Сообщения: 115
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

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

Сообщение Fehler 10 янв 2018, 15:59

создаете пул для всех видов пуль!
при выстреле берете пулю из пула, работаете с ней, при уничтожении - помещаете ее снова в пул.

нет тяжеловесных Destroy/Instantiate
пули используются многократно
Fehler
UNец
 
Сообщения: 33
Зарегистрирован: 02 янв 2018, 11:41

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

Сообщение Nubila 11 янв 2018, 16:55

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

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

Дело в том, что я хотел вообще отказаться от пуль-объектов, думая что частичка в Particle System кушает ресурсов меньше чем обычный GameObject.
Как выше упомянул Msey, для сравнения необходимо взять 1000 объектов и 1000 частиц... и вот 1000 частиц грузит меньше систему.
Аватара пользователя
Nubila
UNIт
 
Сообщения: 115
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

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

Сообщение Paul Siberdt 11 янв 2018, 17:07

Частичка - это всего лишь визуальная часть довольно массивной системы. Зачем вам воротить гору эмиттеров под каждлое оружие, если можно ограничиться простеньким объектом?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5206
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

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

Сообщение Nubila 12 янв 2018, 19:22

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

Гору конечно же не хочется, а если один Particle System для всех типов оружия, но отдельный скрипт при смене оружия будет менять параметры и материал самого Particle System? Или это всё равно не выход?
Аватара пользователя
Nubila
UNIт
 
Сообщения: 115
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

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

Сообщение Paul Siberdt 12 янв 2018, 19:29

Конечно, выход. Разработка игр - это здание с миллионом выходов, каждый выбирает по вкусу и ширине.
Просто я лично думаю, что контролировать частицу и эммитер будет посложнее - чем одинокую плашку, присобаченную к оружию для отрисовки одного эффекта.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5206
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

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

Сообщение Nubila 14 янв 2018, 03:00

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

С этим я полностью с вами согласен!) Ну тогда буду использовать геймобжекты, а если уж всё будет так плохо то емиттеры)) Спасибо вам!
Аватара пользователя
Nubila
UNIт
 
Сообщения: 115
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

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

Сообщение Fehler 15 янв 2018, 11:34

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

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

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);
}
}
Вова
UNец
 
Сообщения: 1
Зарегистрирован: 24 мар 2018, 20:15


Вернуться в Почемучка

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

Сейчас этот форум просматривают: GoGo.Ru [Bot], Yandex [Bot] и гости: 13