Автор | Сообщение |
|
| |
Пост N: 22
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 07.05.11 12:14. Заголовок: Мои вопросы по Gm
Я хочу сделать A.I в Комической леталке(Вид с верху) Что бы он не тупо летел за какимто обектом, а мог уварчиватся от пуль, убегать. Ну или хотя бы просто что бы он не резко поворачивал а медлено как настоящий самолёт (типа direction+=1 ).
|
|
|
Ответов - 27
[только новые]
|
|
|
| |
Пост N: 404
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 07.05.11 14:58. Заголовок: Сначала попробуй сде..
Сначала попробуй сделать без плавного поворота. Придумай алгоритм по которому ИИ будет работать, напиши его на русском, а затем реализуй в гамаке. Это не такая уж и простая штука, тут подумать немало нужно :)
|
|
|
|
| |
Пост N: 23
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 09.05.11 10:46. Заголовок: Как то так У врага Е..
Как то так У врага Если дистанция до Игрока менее 15 и Если direction менее 50 до point_direction(игрока) и Если скорость больше 7 то скорость равна больше семи direction = direction // это бред но может получиться что враг пролетит мимо из-за невозможности быстро повернуть. // теперь надо сделать разворот а то враг так и улетит на совсем. Хотя если у врага direction равна point_direction(игрока) то возможно враг начнёт разворачиватся. Ну это моя гипотеза так что не пишите что я какую то фигню написал.
|
|
|
|
Отправлено: 09.05.11 20:04. Заголовок: PERLOVKA пишет: Есл..
PERLOVKA пишет: цитата: | Если скорость больше 7 то скорость равна больше семи |
| Логично!
|
|
|
|
| |
Пост N: 25
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 10.05.11 11:07. Заголовок: Ну да ) ..
Ну да ) я кеп Надо скорость равна 7
|
|
|
|
| |
Пост N: 26
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 10.05.11 18:31. Заголовок: Код будет выглядеть ..
Код будет выглядеть как то так : if distance_to_object(o_player)<15 { if direction<50.point_direction(x,y,o_player,x,o_player,y) //В этой строчке я не уверен может кот знает, как записать? { if speed>7 { speed=7 direction=direction // Здесь тоже что то не то, надо чтобы direction не изменялась. } } }
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2610
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 10.05.11 18:52. Заголовок: что значит if direct..
что значит if direction<50.point_direction ? и что значит direction=direction?
|
|
|
|
| |
Пост N: 27
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 11.05.11 11:04. Заголовок: if direction<50...
if direction<50.point_direction этой записью я хотел сказать что если корбль врага повёрнут от игрока больше чем не 50 градусов. а direction=direction я точно не знаю как записать надо чтобы градус в который повёрнут объект остался а не начал изменятся из-за direction=point_direction(x,y,o_player,x,o_player,y).
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2611
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 11.05.11 11:42. Заголовок: в первой строке 50.p..
в первой строке 50.point непонятно что означает эта точка, почему там не запятая или знак доллара какойнибудь? понимаете, то что вам нужно сделать не пишется в 2 строчки которые можно безмозгло вставить и всё будет работать. Тут дело в том, что ИИ пишется в зависимости от игры, в кажой свои детали учитываются, нет оригинального варианта который подойдет вам. поэтому единственный выход писать самому. Но, вы незнаете синтаксис и пишите <50.point мну например незнаю что означает точка, вы пишите direction=direction написать 10=10 подсилу только К.О. А главное за просто так писать вам игру никто не будет. Есть два выхода: -оплачиваете работу программисту и он делает всё за вас -изучаете сами. второй вариант займет больше времени и придется много думать. рекомендую ставить эксперименты, много и часто. перед тем как чтото сделать в игре, создаете новый проект в гамаке ставите туда шарики и экспериментируете с ними начиная с самого простого для начала сделайте чтобы он просто тупо летал и тупо стрелял. потом сделайте чтобы он тупо летал случайным образом поворачивая и тупо стрелял также потом обдумайте и сделайте чтобы он стрелял только тогда когда смотрит в сторону игрока. и потихоньку-постепенно усложняйте код. если вы не смогли разобраться в 5 строчках кода с радаром, то что уж говорить о 15-20 строчках ИИ. начинайте с малого, самого простого и примитивного
|
|
|
|
| |
Пост N: 405
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 11.05.11 12:06. Заголовок: И еще небольшой сове..
И еще небольшой совет :) Все эти if можно записать в одну строчку, и код станет проще. Все вот это Скрытый текст
цитата: | if distance_to_object(o_player)<15 { if direction<50.point_direction(x,y,o_player,x,o_player,y) //В этой строчке я не уверен может кот знает, как записать? { if speed>7 { speed=7 direction=direction // Здесь тоже что то не то, надо чтобы direction не изменялась. } } } |
|
| можно записать так: цитата: | if distance_to_object(o_player)<15 && direction<point_direction(x,y,o_player,x,o_player,y) && speed>7 { speed=7 direction=direction } |
| Вместо && можно использовать and.
|
|
|
|
| |
Пост N: 28
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 12.05.11 12:19. Заголовок: Я же сказал что это ..
Я же сказал что это моя гипотеза. И я не срисовал её откуда-нибудь а придумывал. Это как раз и есть мой "експеремент". Вот поэтому и точка, что експеремент.
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2612
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 12.05.11 16:05. Заголовок: PERLOVKA пишет: Вот..
PERLOVKA пишет: цитата: | Вот поэтому и точка, что експеремент. |
| когда ставите эксперименты надо ставить знаки $ и @ вместо точек, иначе работать небудет а вообще повторюсь, открываете гм, создаете новый проект и пытаетесь там сделать самое простое. если не получается, делаете ещё проще выкидывая сложные детали.
|
|
|
|
|
| |
Пост N: 29
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 14.05.11 09:47. Заголовок: На сколько я знаю ес..
На сколько я знаю если поставть @ или $ то работать точно не будет.
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2613
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 14.05.11 10:56. Заголовок: не узнаете, пока не ..
не узнаете, пока не прочтете хелп по гм. благо есть переведенный русский вариант
|
|
|
|
| |
Пост N: 32
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 07.06.11 14:25. Заголовок: Я насчёт медленного ..
Я насчёт медленного поворота у врага if direction<point_direction(x,y,o_player.x,o_player.y) { direction+=5 } if direction>point_direction(x,y,o_player.x,o_player.y) { direction-=5 } if direction=point_direction(x,y,o_player.x,o_player.y) { direction-=0 //тут можно написать + } Всё бы ни чего только например если у врага direction=14 а у игрока 354 то у врага direction увеличивается то есть он идёт в круговую вместо выгодново поворота. Можно устранить это так: if direction=14 && direction>point_direction(x,y,o_player.x,o_player.y) { direction-=5 } if direction=14 && direction<point_direction(x,y,o_player.x,o_player.y) { direction+=5 } Но как же остальные градусы? Не прописовать же каждый. Надо сделать как периоды типа с 0-90 градус, с 91-180 и так далее... Тока как прописать эти периоды?
|
|
|
|
| |
Пост N: 33
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 10.06.11 09:38. Заголовок: Да уж как я сразу н..
Да уж как я сразу не додумался цитата: | if direction<90 && direction<point_direction(x,y,o_player.x,o_player.y) { direction=+5 } if direction>270 && direction<point_direction(x,y,o_player.x,o_player.y) { direction=-5 } |
| Теперь надо это проверить.
|
|
|
|
| |
Пост N: 34
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 10.06.11 10:24. Заголовок: Хм... Почему то не р..
Хм... Почему то не работает Я даже сделал объект для отрисовки direction игрока и т.д. Что бы убедится что все direction и т.д. работают. Переменные та работоют а алгоритм нет ( Как будто я его не написал в Step'е у врага! Может что не так. А.I
|
|
|
|
| |
Пост N: 1056
Зарегистрирован: 26.06.07
Откуда: Россия, Владивосток
Награды:
|
|
Отправлено: 10.06.11 14:27. Заголовок: Код поворота пушки в..
Код поворота пушки в игре Jacal тот прицип что тебе нужен цитата: | distance=ceil(point_distance(x,y,plar.px,plar.py)) image_angle=ceil(image_angle) if distance<dist && !collision_line(x,y,plar.x,plar.y,o_rockbord,1,1) { tochka=floor(point_direction(x,y,plar.px,plar.py)) } else { if ch=180 { gg=0 } if gg=0 { if timerr>room_speed*paus { tochka=floor(random(360/pov))*pov gg=1 timerr=0 } timerr+=1 } } if image_angle>tochka { ch=image_angle-tochka } if image_angle<tochka { ch=image_angle+(360-tochka) } if image_angle=tochka { ch=180 } if ch>180 { image_angle+=spd } if ch<180 { image_angle-=spd } if image_angle<0 image_angle=359 if image_angle>359 image_angle=0 |
| В коде реализовано так, если игрока в радиусе distance не видно { то рандомом придумывать точку поворота } иначе точка поворота игрок далее определяется оптимальный угол поворота http://www.gamecreating.ru/zuko/МоиПроекты/jacal исходники тут есть
|
|
|
|
| |
Пост N: 35
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 22.06.11 08:50. Заголовок: Для меня это сложный..
Для меня это сложный код. Много чего не понятно, но разбираться я буду не много поже. У меня другой вопрос. В платформере как сделать что бы враг изменял свой спрайт в зависимости куда он идёт?
|
|
|
|
| |
Пост N: 409
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 22.06.11 12:41. Заголовок: Писал как-то очень х..
Писал как-то очень хитрый код на эту тему, но приведу слегка упрощенный :) Используй draw_sprite_ext(). в нем есть такой аргумент как xscale. Это растяжение спрайта по оси x. Если его значение равно 1, то спрайт рисуется как обычно. Если присвоить значение -1, то спрайт будет рисоваться наоборот. Проверить в какую сторону движется враг можно с помощью x и xprevios. Вотъ) Если сам не поймешь как сделать, то сделаю примерчик.
|
|
|
|
| |
Пост N: 990
Зарегистрирован: 13.02.07
Откуда: Южная Африка, Глушь лесная
|
|
Отправлено: 03.07.11 15:13. Заголовок: Тупой вопрос, а когд..
Тупой вопрос, а когда выйдет ГМ 9?
|
|
|
|
| |
Пост N: 410
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 03.07.11 17:41. Заголовок: Думаю не скоро) Еще ..
Думаю не скоро) Еще не все баги в 8.1 исправили, так что..
|
|
|
|
|
| |
Пост N: 36
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 03.07.11 18:47. Заголовок: sanchez пишет: Тупо..
sanchez пишет: Ну тупой не тупой я всё же новичок )
|
|
|
|
| |
Пост N: 992
Зарегистрирован: 13.02.07
Откуда: Южная Африка, Глушь лесная
|
|
Отправлено: 03.07.11 21:34. Заголовок: PERLOVKA да я не про..
PERLOVKA да я не про твой вопрос говорю) не подумай)
|
|
|
|
| |
Пост N: 37
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 04.07.11 13:06. Заголовок: А это про Gm 9, ну т..
А это про Gm 9, ну тогда понятно )
|
|
|
|
| |
Пост N: 39
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 26.07.11 12:35. Заголовок: Вобще я нарисовал дв..
Вобще я нарисовал два спрайта. И решил эту проблему так. Если A.I. у врага вот такой: if distance_to_object(o_player)<300 { direction=point_direction(x,y,o_player.x,o_player.y) speed=3 vspeed=0 } то ниже надо прописать: if direction>90 { sprite_index=s_enemy_1_1 } if direction<90 { sprite_index=s_enemy_1_2 } И всё заработало
|
|
|
|
| |
Пост N: 415
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 26.07.11 20:57. Заголовок: Проверь ситуацию, ко..
Проверь ситуацию, когда игрок справа-снизу от врага. По-моему, в этом случае враг будет не в ту сторону смотреть :)
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 15.01.11
Откуда: Россия, Томск
|
|
Отправлено: 02.08.11 09:43. Заголовок: А ну тогда код полно..
А ну тогда код полностью будет такой: if distance_to_object(o_player)<300 { direction=point_direction(x,y,o_player.x,o_player.y) speed=3 vspeed=0 } if direction>90 && direction<270 { sprite_index=s_enemy_1_1 } if direction<90 { sprite_index=s_enemy_1_2 } if direction>270 { sprite_index=s_enemy_1_2 }
|
|
|
|