Вопрос - Ответ (Game Maker)
| |
Krosos | Дата: Среда, 21 Августа 2013, 00:26 | Сообщение # 4181 |
постоянный участник
Сейчас нет на сайте
| Anthem, создай 4 метки возле куста и пусть нпс движется на ближайшую.
Мой проект
|
|
| |
CreatingOver | Дата: Среда, 21 Августа 2013, 06:10 | Сообщение # 4182 |
ColdGamedev
Сейчас нет на сайте
| Dmi7ry, не, на distance_to_object полагаться не стоит. Лучше вообще не делай, или через массивы. Насчет массивов мне пиксай посоветовал, за что ему отдельное спасибо.
Я снова с вами:з Возвращение легенды. (нет)
|
|
| |
Dmi7ry | Дата: Среда, 21 Августа 2013, 11:50 | Сообщение # 4183 |
почетный гость
Сейчас нет на сайте
| Цитата (CreatingOver) не, на distance_to_object полагаться не стоит С чего это вдруг?
|
|
| |
CreatingOver | Дата: Среда, 21 Августа 2013, 12:23 | Сообщение # 4184 |
ColdGamedev
Сейчас нет на сайте
| Не так выразился. Не стоит его использовать, он дико нагружает FPS.
Я снова с вами:з Возвращение легенды. (нет)
|
|
| |
Dmi7ry | Дата: Среда, 21 Августа 2013, 14:39 | Сообщение # 4185 |
почетный гость
Сейчас нет на сайте
| Цитата (CreatingOver) Не так выразился. Не стоит его использовать, он дико нагружает FPS. Вы ошибаетесь. Это довольно "дешевая" операция.
|
|
| |
Anthem | Дата: Среда, 21 Августа 2013, 21:14 | Сообщение # 4186 |
Д'Артаньян
Сейчас нет на сайте
| Dmi7ry, спасибо. Krosos, предлагаешь сделать 4 объекта вместо одного?
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
Krosos | Дата: Среда, 21 Августа 2013, 21:23 | Сообщение # 4187 |
постоянный участник
Сейчас нет на сайте
| Anthem,нет , я например делаю ТРПГ , а ИИ направляю с помощью меток. Вот так например: Создание меток: Цитата with KleymoOfAlied{ //Избранные объекты создают 4 метки возле себя instance_create(x+64,y,AA) instance_create(x-64,y,AA) instance_create(x,y+64,AA) instance_create(x,y-64,AA) } with AA{ if distance_to_object(instance_nearest(x,y,KleymoOfAlied))=0 {instance_destroy()} \\Если метка создалась прямо на избранном объекте - удалить(Если 2 объекта стоят рядом) if distance_to_object(instance_nearest(x,y,KleymoOfEnemy))<16 and distance_to_object(global.Sunit)>16 {instance_destroy()} \\Другое условие удаления }
Движение к ним: Цитата if Moving=2{ \\Если моя переменная равна 2 if !instance_exists(AA){global.Phase12=1} \\Если метка не существует - закончить свой ход if mp_grid_path(global.Moving_mpgrid,path008,x,y,instance_nearest(x,y,AA).x,instance_nearest(x,y,AA).y,false)=true and path_get_number(path008) <=global.SP[O]{ \\Если путь к ближайшей метке существует и он достижим (но тут мы ищем именно ближайшую метку , а не ближайшую достижимую) path_start(path008,speeed,0,1) \\Начинаем путь к метке со скоростью speeed endpath=1 \\Конец пути-переменная для события End_Path (например при окончании пути нпс - начинает есть) }} Ну, вот что-то подобное
Мой проект
Сообщение отредактировал Krosos - Среда, 21 Августа 2013, 21:23 |
|
| |
Anthem | Дата: Среда, 21 Августа 2013, 21:38 | Сообщение # 4188 |
Д'Артаньян
Сейчас нет на сайте
| Наверно я мог бы это все как-то втиснуть в свой код, но т.к. я гуманитарий, мне мало что в нем понятно, поэтому лучше воздержусь. Спасибо, за пример, Krosos) Еще такой вопрос: я правильно понимаю, что в ГМ не считаются расстояния по диагонали?
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
Krosos | Дата: Среда, 21 Августа 2013, 21:39 | Сообщение # 4189 |
постоянный участник
Сейчас нет на сайте
| Anthem, считаются , но материться на это хочется....
Мой проект
|
|
| |
fruitymonster01 | Дата: Четверг, 22 Августа 2013, 15:48 | Сообщение # 4190 |
был не раз
Сейчас нет на сайте
| Не работает draw_self() Какой командой можно заменить?
|
|
| |
GameMix | Дата: Четверг, 22 Августа 2013, 15:52 | Сообщение # 4191 |
старожил
Сейчас нет на сайте
| fruitymonster01 Код draw_sprite(sprite_index, image_index, x, y);
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
fruitymonster01 | Дата: Четверг, 22 Августа 2013, 16:00 | Сообщение # 4192 |
был не раз
Сейчас нет на сайте
| GameMix, что именно нужно писать в скобочках? со вчерашнего дня так и не разобрался
Ага, думал в скобках нужно ещё что-то писать)) Благодарю!
Сообщение отредактировал fruitymonster01 - Четверг, 22 Августа 2013, 16:14 |
|
| |
Dmi7ry | Дата: Четверг, 22 Августа 2013, 17:11 | Сообщение # 4193 |
почетный гость
Сейчас нет на сайте
| Цитата (GameMix) draw_sprite(sprite_index, image_index, x, y); этот вариант не реагирует на поворот, масштабирование и другие параметры. если они необходимы, то нужно использовать Код draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha)
|
|
| |
GameMix | Дата: Четверг, 22 Августа 2013, 17:14 | Сообщение # 4194 |
старожил
Сейчас нет на сайте
| Dmi7ry, спасибо за поправку )
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Krosos | Дата: Четверг, 22 Августа 2013, 23:14 | Сообщение # 4195 |
постоянный участник
Сейчас нет на сайте
| Как задать вопрос - какой у тебя родитель? В справке не очень понятно , а у меня кажется не получилось=(
Код with KleymoOfEnemy{ with target{ if UnitSpeed>=100{ if O=ds_queue_dequeue(global.turn){ if object_get_parent(id)=AI_Warrior {scr_Phase2E() } if object_get_parent(id)=AI_Wizard {scr_Phase2EW()} if object_get_parent(id)=AI_Ranger {scr_Phase2ER()} if object_get_parent(id)=AI_Flayer {scr_Phase2EF()} }}}}
Мой проект
|
|
| |
djavaigames | Дата: Пятница, 23 Августа 2013, 01:15 | Сообщение # 4196 |
был не раз
Сейчас нет на сайте
| Для обхода препятствий, сделал маску только на нижнюю половину персонажа. Но зато пули теперь не сталкиваются с его верхней частью, не происходит событие столкновения. Есть ли выход из этой ситуации? Что можно вместо маски использовать для этих целей и можно ли как-то юзать 2 маски для разных ситуаций?
|
|
| |
Dmi7ry | Дата: Пятница, 23 Августа 2013, 06:38 | Сообщение # 4197 |
почетный гость
Сейчас нет на сайте
| Цитата (Krosos) if object_get_parent(id)=AI_Warrior {scr_Phase2E() } в качестве параметра функции должен идти id объекта, а не id экземпляра, поэтому нужно прописывать object_index вместо id: Код object_get_parent(object_index) Добавлено (23.08.2013, 06:38) --------------------------------------------- djavaigames, для пуль можно просто в end step персонажа проверять столкновение через collision_rectangle c указанием bbox_... что-то вроде этого: Код if collision_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, obj_bullet, false, true)>0 { // столкновение с пулей есть }
|
|
| |
djavaigames | Дата: Пятница, 23 Августа 2013, 11:35 | Сообщение # 4198 |
был не раз
Сейчас нет на сайте
| Цитата (Dmi7ry) djavaigames, для пуль можно просто в end step персонажа проверять столкновение через collision_rectangle c указанием bbox_... Сделал так, но возникла новая проблема - не знаю, как тогда удалить экземпляр пули при столкновении.
Попробовал перенести событие в код пули, но тогда не работает вообще
Код if collision_rectangle(emeny_obj.x-(emeny_obj.sprite_width/2),emeny_obj.y-(emeny_obj.sprite_height/2),emeny_obj.x+(emeny_obj.sprite_width/2),emeny_obj.y+(emeny_obj.sprite_height/2), obj_bul, false, true) { instance_destroy(); }
если что, emeny_obj - родительский объект для всех расстреливаемых
|
|
| |
Dmi7ry | Дата: Пятница, 23 Августа 2013, 12:46 | Сообщение # 4199 |
почетный гость
Сейчас нет на сайте
| Цитата (djavaigames) Сделал так, но возникла новая проблема - не знаю, как тогда удалить экземпляр пули при столкновении. так: Код a=collision_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, obj_bullet, false, true) if a>0 { with (a) { instance_destroy() } // свои действия }
|
|
| |
djavaigames | Дата: Пятница, 23 Августа 2013, 13:28 | Сообщение # 4200 |
был не раз
Сейчас нет на сайте
|
Спасибо огромное , только в родительском объекте enemy_obj не работает, придется запихивать в каждый объект врага по отдельности. Возможно я и сам разберусь в итоге, но мне непонятно, почему работает код
Код with (a) { instance_destroy() }
и что содержится в переменной a? есть догадка, что можно было бы использовать в чем-то дополнение .other
Сообщение отредактировал djavaigames - Пятница, 23 Августа 2013, 13:31 |
|
| |
|