Определение цели и выбор атаки
|
|
Rikstone26 | Дата: Четверг, 25 Сентября 2014, 23:14 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Сижу я значит и смотрю одно видео http://www.youtube.com/watch?v=p7qmg6Tfha0 и на 4-ой минуте можно увидеть, что робот сначала стреляет в людей, но как только подлетает вертолёт, он перестаёт атаковать людей и атакует вертолёт(ну тут можно увидеть, что существует некий приоритет). Тут мне стало интересно, а как же проделать такую штуку? Получается робот должен устраивать проверку, как только появляется в области проверки противник, атаковать его, если во время атаки появляется более сильный враг(враг с более высоким приоритетом), атаковать его(в данном случае - другим типом оружия). Ну примерно так я думаю будет выглядеть расшифровка кода, но как только я попробовал сделать нечто подобное в game maker, я застопорился в самом начале, а как сделать эту проверку-то? Как сделать приоритет? Понятное дело, что вряд ли мне тут распишут целую кучу кода(хотя я втайне надеюсь на это), но хотя бы примерно объяснить, да скинуть пару исходников или статей на эту тему... Хотя код готовый скинуть тоже неплохо Если кто поможет, на плюсы в карму, я не жадный;)
|
|
| |
MartinKitten | Дата: Четверг, 25 Сентября 2014, 23:17 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Rikstone26, Приоритет лишь в порядке кода. Т.е. перед каждой атакой проверять сначала на вертолет,а потом на человека.
Per aspera ad astra __________________
|
|
| |
Fill_Freeman | Дата: Пятница, 26 Сентября 2014, 08:02 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Ну смотри, что первое пришло мне в голову. Например сделать список с врагами в порядке убывания приоритета. И каждый шаг, циклично идти по этому списку пока не встретится кто-нибудь из него. Как только кто-то нашелся, выбирать его как цель, и выходить из цикла.
Сразу вижу недостаток такого подхода. Если, например, есть несколько врагов высшего приоритета, то есть вероятность, что робот будет менять противника каждый раз. Чтобы этого избежать можно после выхода из цикла проверять - если приоритет текущего врага такой-же как у новой цели, то не менять цель.
Ну вот как-то так.
![](http://leninxiii.890m.com/publish/xiiilogo_128h.png) ![](http://leninxiii.890m.com/publish/ad+google_128h.png)
|
|
| |
Rikstone26 | Дата: Пятница, 26 Сентября 2014, 21:42 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| умно! Теперь буду изучать циклы и буду учиться делать область проверки
Сообщение отредактировал Rikstone26 - Пятница, 26 Сентября 2014, 21:54 |
|
| |
zzzzza | Дата: Вторник, 30 Сентября 2014, 16:36 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Не вижу смысла делать цикл. Можно просто в каждом объекте задать переменную(допустим "priority") и присвоить ей значение 0-... . А в step'e остается только написать условия.
|
|
| |