Пятница, 15 Ноября 2024, 17:50

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (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 (например при окончании пути нпс - начинает есть)
}}

Ну, вот что-то подобное wacko





Мой проект


Сообщение отредактировал 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, что именно нужно писать в скобочках? со вчерашнего дня так и не разобрался wacko

Ага, думал в скобках нужно ещё что-то писать)) Благодарю!


Сообщение отредактировал 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 маски для разных ситуаций? cry
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
был не раз
Сейчас нет на сайте
Цитата (Dmi7ry)
так:


Спасибо огромное biggrin , только в родительском объекте enemy_obj не работает, придется запихивать в каждый объект врага по отдельности.
Возможно я и сам разберусь в итоге, но мне непонятно, почему работает код

Код
with (a) { instance_destroy() }


и что содержится в переменной a?
есть догадка, что можно было бы использовать в чем-то дополнение .other


Сообщение отредактировал djavaigames - Пятница, 23 Августа 2013, 13:31
Поиск:

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