Обнаружение ботами ГГ
|
|
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 луча в гг(по центру, и по краям), тут исходя из твоих условий отмечаем гг, как видимого.
+добавить всякие дополнительные условия, если гг стреляет, то временно увеличивать дистанцию и поле зрения. Ну и разные печеньки на выбор.
Ну а с такими мелочами, как вспышка от глушителя лучше не заморачиваться так сильно. В итоге заметят эту фишку единицы и потраченное время потом жалко будет.
З.Ы. С таким количеством лучей, как на скриншоте, можно и освещение простенькое посчитать.
Сообщение отредактировал 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 переменные.
|
|
| |