Суббота, 23 Ноября 2024, 12:00

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Обнаружение ботами ГГ
DantorSДата: Пятница, 20 Июня 2014, 13:41 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте

Всем привет. Я вроде как сделал нормальную систему обнаружения. Но тут возник вопрос - что если гг будет за укрытием и стрелять с помощью глушителя. На картинке выше показано что, если делать рэйкастами - то вспышка от выстрела не всегда может попасть в рэйкаст. Здесь поидее нужен не рэйкаст а что объемное (к примеру конус, которы сможет отрезать от себя препятствия).
Вот что я имею ввиду

Какие есть идеи?


Сообщение отредактировал DantorS - Пятница, 20 Июня 2014, 13:41
romgermanДата: Пятница, 20 Июня 2014, 13:45 | Сообщение # 2
старожил
Сейчас нет на сайте
ГГ стреляет = тру; рэйкаст хит по гг = тру {
ололо, мочим гг
}
DantorSДата: Пятница, 20 Июня 2014, 20:31 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
up
romgermanДата: Пятница, 20 Июня 2014, 20:39 | Сообщение # 4
старожил
Сейчас нет на сайте
Цитата DantorS ()
Какие есть идеи?

Цитата romgerman ()
ГГ стреляет = тру; рэйкаст хит по гг = тру {
ололо, мочим гг
}

Не заметно?
HPlusDieseДата: Пятница, 20 Июня 2014, 20:46 | Сообщение # 5
участник
Сейчас нет на сайте
Можно обойтись всего 5 проверками. И не нужно пускать кучу лучей.
1 - проверяем расстояние от бота до гг, если меньше необходимого, то шаг 2.
2 - проверяем, входит ли гг в поле зрения(угол зрения,напр. 180 градусов), если поподает, то шаг 3.
Угол находиnтся просто - арккосинус скалярного произведения векторов a и b, где a - направление взгляда бота, b - направление от бота к игроку.
3 - бросаем 3 луча в гг(по центру, и по краям), тут исходя из твоих условий отмечаем гг, как видимого.

+добавить всякие дополнительные условия, если гг стреляет, то временно увеличивать дистанцию и поле зрения. Ну и разные печеньки на выбор.

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

З.Ы.
С таким количеством лучей, как на скриншоте, можно и освещение простенькое посчитать. biggrin


Сообщение отредактировал HPlusDiese - Пятница, 20 Июня 2014, 21:03
robertonoДата: Пятница, 20 Июня 2014, 20:56 | Сообщение # 6
Чокнутый Кот
Сейчас нет на сайте
romgerman, наверно он подумал, что это троллинг
DantorSДата: Пятница, 20 Июня 2014, 22:00 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
HPlusDiese, я 2d то всё легко. Забыл указать у меня 3d. Поэтому как раз и нужно что-то объёмное.
robertono, так и есть
romgerman, не понятно что это можещь нормально объснить?
HPlusDieseДата: Пятница, 20 Июня 2014, 22:12 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата DantorS ()
я 2d то всё легко. Забыл указать у меня 3d. Поэтому как раз и нужно что-то объёмное.

Алгоритм универсальный. Без проблем применим и к 3D(с незначительными модификациями).
Я в 3D проекте такой использую.


Сообщение отредактировал HPlusDiese - Пятница, 20 Июня 2014, 22:14
romgermanДата: Пятница, 20 Июня 2014, 22:14 | Сообщение # 9
старожил
Сейчас нет на сайте
Цитата DantorS ()
не понятно что это можещь нормально объснить?

Цитата DantorS ()
Здесь поидее нужен не рэйкаст а что объемное (к примеру конус, которы сможет отрезать от себя препятствия).

Я имел ввиду, что нужно сделать переменную (bool), которая будет показывать стреляет ли персонаж или нет. И тогда не нужен будет какой-то левый конус, если я понял, о чём ты и что тебе надо сделать, а то сам объяснил не особо понятно.
HPlusDieseДата: Пятница, 20 Июня 2014, 22:18 | Сообщение # 10
участник
Сейчас нет на сайте
Цитата DantorS ()
не понятно что это можещь нормально объснить?

Алгоритм romgerman,а в нормальном объяснении.
псевдокод:
Цитата
if( гг_стреляет && лучём_поподаем_по_гг )
{
//гг видим. Вещаем ему люлей.
}


Сообщение отредактировал HPlusDiese - Пятница, 20 Июня 2014, 22:18
romgermanДата: Пятница, 20 Июня 2014, 22:20 | Сообщение # 11
старожил
Сейчас нет на сайте
Цитата HPlusDiese ()
Алгоритм romgerman,а в нормальном объяснении.

Мой псевдокод лучше.
HPlusDieseДата: Пятница, 20 Июня 2014, 22:26 | Сообщение # 12
участник
Сейчас нет на сайте
Цитата romgerman ()
Мой псевдокод лучше.

Ты хочешь поговорить об этом?
DantorSДата: Пятница, 20 Июня 2014, 22:57 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
romgerman, аааааа понял спасибо.

Добавлено (20.06.2014, 22:57)
---------------------------------------------
ХОТЯ это не то. Я имею ввиду что гг может быть спрятан за укрытий. Но мб видна вспышка, когда гг стреляет, которая не всегда может попасть под рэйкасты. Именно поэтому я и говорю что нужно что-то по типу объёмного конуса (как в играх показывается поле зрения камеры видеонаблюдения)

romgermanДата: Пятница, 20 Июня 2014, 23:05 | Сообщение # 14
старожил
Сейчас нет на сайте
Цитата DantorS ()
Я имею ввиду что гг может быть спрятан за укрытий. Но мб видна вспышка

Не особо это представляю.
DantorSДата: Пятница, 20 Июня 2014, 23:23 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Как я понял ттак обнаруживали гг в сплинтер селл блэкслист. Когда стреляешь из укрыттия видно только оружие, и соответсвенно вспышку. Там ещё озвучивали так: "я видел, стрелок оттуда"
robertonoДата: Суббота, 21 Июня 2014, 00:43 | Сообщение # 16
Чокнутый Кот
Сейчас нет на сайте
DantorS, ты на озвучку то не смотри) Если в battlefield 4 ты увидишь вражеский квадроцикл, то русская озвучка какого то хача будет звучать так : C4 Сейчас взорвеца!
(Дада и плевать что это квадроцикл а не c4 и на квадроцикле нету c4).
DantorSДата: Суббота, 21 Июня 2014, 00:47 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
robertono, я просто привёл пример. вопрос остаётся открытым
robertonoДата: Суббота, 21 Июня 2014, 00:48 | Сообщение # 18
Чокнутый Кот
Сейчас нет на сайте
DantorS, Я никогда не работал с AI и никогда не писал свои. Даже не знаю как они работают. Но первое что мне пришло в голову - дать каждому боту мозг.
MozgBota.cs
Этот мозг будет знать видит ли этот бот врага, или ищет его. Или он просто гуляет и не о чем не подозревает.
Когда ты стреляешь, если у тебя нету глушителя то я бы где то задал переменную - точка последнего выстрела. Боты будут думать что стрелок в последней точке. Я бы каждому мозгу ботов сказал что стрелок в этой точке, режим поиска врага.
Сделал бы какой то тайм аут, что бы когда допустим пройдет минута боты перестанут искать тебя.

Добавлено (21.06.2014, 00:48)
---------------------------------------------
И никакие лучи не нужны. Лишняя трата производительности..

DantorSДата: Суббота, 21 Июня 2014, 01:06 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
robertono, ты не понял. Попробую объснить ещё раз

Линни от бота - это три штуки изображенные на картинке выше. Они находятся: в ногах, по середине, из головы (т.е. начало идёт оттуда). Т.е. они все вместе могут онаружить гг. Но если гг стреляет из укрытия - то оружие может и не попасть в эти три штуки
robertonoДата: Суббота, 21 Июня 2014, 01:44 | Сообщение # 20
Чокнутый Кот
Сейчас нет на сайте
DantorS, помоему ты мудришь, тут лучи и нафиг не нужны. Всё что нужно так это Vector3 и bool переменные.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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