Пятница, 22 Ноября 2024, 18:43

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (Game Maker)
t111Дата: Четверг, 28 Ноября 2013, 23:35 | Сообщение # 4601
почетный гость
Сейчас нет на сайте
ну у меня суть была в том что объект враг ходит сам по себе, влево-вправо и взависимости в какую сторону он идёт, туда и image_xscale. Мне нужно было, если я приближаюсь к нему из за спины менее чем на 300, то он поворачивается ко мне лицом и начинает в меня стрелять...

Добавлено (28.11.2013, 23:25)
---------------------------------------------
если я ухожу с этого радиуса, то он разворачивается в сторону в какую шёл и продолжает движение. Ну естественно, если я приближаюсь к нему спереди, ему не надо разворачиваться, а он просто останавливается и стреляет. Если покидаю, то тоже самое...

Добавлено (28.11.2013, 23:30)
---------------------------------------------
решил проблему , дополнив к point distance фун-ю collision line, прикрепив к врагу линии с обоих сторон, которые начинались с точки относительно его x,y . Линия х слева заканчивалась в точке х-300, справа х+300. В какую линию попадал я, в ту сторону враг и разворачивался и стрелял...

Добавлено (28.11.2013, 23:35)
---------------------------------------------
иначе, как бы враг определял с какой стороны я от него нахожусь, со спины или спереди, пускай мой спрайт и повёрнут допустим вправо, я могу в таком положении находится от врага как и по левую сторону так и по правую. Вот я и парился сначала. smile ну щас всё норм smile


как известно, встречают по
одежке, а провожают
uninstall'ом"

KrososДата: Пятница, 29 Ноября 2013, 03:21 | Сообщение # 4602
постоянный участник
Сейчас нет на сайте
Цитата t111 ()
решил проблему , дополнив к point distance фун-ю collision line, прикрепив к врагу линии с обоих сторон, которые начинались с точки относительно его x,y . Линия х слева заканчивалась в точке х-300, справа х+300. В какую линию попадал я, в ту сторону враг и разворачивался и стрелял...

Я сделал сначала также ,но потом изменил код на этот:
Цитата
if distance_to_object(objPlayer)>200 {KEY_SHOOT_CHARGE=1}

if !collision_line(x,y,objPlayer.x,y,obj_Block,0,0) and y>objPlayer.y-10 and y<objPlayer.y+10 and grounded{
if distance_to_object(objPlayer)>200 {if Buster_3=1{KEY_SHOOT=1}else{KEY_SHOOT=0}}
if distance_to_object(objPlayer)<=200{KEY_SHOOT=1}
}else{KEY_SHOOT=0}


KEY_SHOOT - это стрельба , а KEY_SHOOT_CHARGE- это заряд бустера(как в мегамэне)
А разворот еще проще:
Цитата

if KEY_SHOOT=1{
KEY_SHOOT_CHARGE=0
KEY_LEFT=0
KEY_RIGHT=0
KEY_JUMP=0
if x>objPlayer.x{image_xscale=-1}else{image_xscale=1}}


Я делал моба , как игрока , дав новые условия тем же переменным.





Мой проект


Сообщение отредактировал Krosos - Пятница, 29 Ноября 2013, 03:23
JunkerKunДата: Пятница, 29 Ноября 2013, 15:13 | Сообщение # 4603
частый гость
Сейчас нет на сайте
Цитата t111 ()
ну у меня суть была в том что объект враг ходит сам по себе, влево-вправо и взависимости в какую сторону он идёт, туда и image_xscale. Мне нужно было, если я приближаюсь к нему из за спины менее чем на 300, то он поворачивается ко мне лицом и начинает в меня стрелять...


Код

if (abs(x-player.x)<300) {
if (player.y>y-24 && player.y< y+24) {
image_xscale=sign(player.x-x);
enemy_shoot();
};
};


Вот и все, никаких дополнительных функций больше не надо. Все функции на проверку столкновений жрут ЦП довольно сильно, поэтому использовать их лучше по минимуму.


Сообщение отредактировал JunkerKun - Пятница, 29 Ноября 2013, 15:15
KrososДата: Пятница, 29 Ноября 2013, 17:24 | Сообщение # 4604
постоянный участник
Сейчас нет на сайте
JunkerKun, ты забыл самое главное -наличие препятствий.ИИ не должен стрелять в стену за которой скрылся игрок.




Мой проект
rgs_hakerДата: Пятница, 29 Ноября 2013, 18:09 | Сообщение # 4605
постоянный участник
Сейчас нет на сайте
ну что мне никто не поможет, игроделы-программисты вы где http://gcup.ru/forum/1-33312-1?ltL08e

_____
t111Дата: Суббота, 30 Ноября 2013, 01:10 | Сообщение # 4606
почетный гость
Сейчас нет на сайте
кстати да, у меня он стреляет и в стену, если я в его поле видимости по оси х. Но для меня это пока не суть важно, поэтому, я и не парюсь. А за ваши варианты решения проблемы спасибо, можно взять на заметку. Ну и также поможет тем кто сейчас парится с ИИ.

как известно, встречают по
одежке, а провожают
uninstall'ом"

adast12Дата: Суббота, 30 Ноября 2013, 20:03 | Сообщение # 4607
почетный гость
Сейчас нет на сайте
Как сделать чтобы вот этот код не перекрывал спрайт объекта и не действовал на него?
draw_set_alpha(0.5);
draw_rectangle_color(0,0,room_width,room_height,c_blue,c_blue,c_blue,c_blue,0);
JunkerKunДата: Суббота, 30 Ноября 2013, 21:29 | Сообщение # 4608
частый гость
Сейчас нет на сайте
Цитата Krosos ()
JunkerKun, ты забыл самое главное -наличие препятствий.ИИ не должен стрелять в стену за которой скрылся игрок.

А, ну тогда да, без collision_line никак, согласен =)

Цитата adast12 ()
Как сделать чтобы вот этот код не перекрывал спрайт объекта и не действовал на него?
draw_set_alpha(0.5);
draw_rectangle_color(0,0,room_width,room_height,c_blue,c_blue,c_blue,c_blue,0);


В каком смысле не действовал?
Чтобы квадрат не перекрывал спрайт, нужно рисовать его до самого спрайта. Либо поставить depth у объекта, который рисует квадрат, в значение больше, чем у того, что рисует спрайт.
adast12Дата: Воскресенье, 01 Декабря 2013, 14:11 | Сообщение # 4609
почетный гость
Сейчас нет на сайте
Как сделать чтобы при деактивации объекта спрайт его был виден?
JunkerKunДата: Воскресенье, 01 Декабря 2013, 15:07 | Сообщение # 4610
частый гость
Сейчас нет на сайте
Цитата adast12 ()
Как сделать чтобы при деактивации объекта спрайт его был виден?


Никак. Если ты его деактивировал, он больше вообще никак не обрабатывается.
GameMixДата: Воскресенье, 01 Декабря 2013, 15:34 | Сообщение # 4611
старожил
Сейчас нет на сайте
adast12, вариант всё же есть. Можно просто перед деактивацией сохранить спрайт и координаты в переменные какого-нибудь объекта-контроллера, находящегося в этой комнате:
Код
o_controller.ox = x;
o_controller.oy = y;
o_controller.osprite = sprite_index;

И после деактивации рисовать этот спрайт в сохраненных координатах. o_controller (Draw):
Код
draw_sprite(osprite, 0, ox, oy);


Steel Standoff - 2D аркада.
Мои статьи
JunkerKunДата: Воскресенье, 01 Декабря 2013, 18:07 | Сообщение # 4612
частый гость
Сейчас нет на сайте
Цитата GameMix ()
Можно просто перед деактивацией сохранить спрайт и координаты в переменные какого-нибудь объекта-контроллера, находящегося в этой комнате:


А, точно. Вечно я забываю об очевидных методах >__>
t111Дата: Понедельник, 02 Декабря 2013, 17:19 | Сообщение # 4613
почетный гость
Сейчас нет на сайте
доброго времени суток! Когда я хочу воспроизвести видео в игре, я загружаю его через глоб.настройки во 'вложеные файлы', потом в объекте использую кнопку splash video. Но проблема в том, что в игре это видео можно закрыть на крестик не досмотрев или щёлкнув мышкой просто. Как это предотвратить? Уберание курсора в настройках не помогает. Охото, чтобы видео закрывалось, когда оно заканчивается...

Добавлено (02.12.2013, 17:19)
---------------------------------------------
...а не когда этого захочет игрок. Может его загрузить как то в игру по другому или что? Чтобы его нельзя было так просто закрыть преждевременно.


как известно, встречают по
одежке, а провожают
uninstall'ом"

GameMixДата: Понедельник, 02 Декабря 2013, 17:43 | Сообщение # 4614
старожил
Сейчас нет на сайте
t111, для воспроизведения видео используй дополнения для Game Maker (dll или gex/ged). Тогда будет больше возможностей контролировать этот процесс.

Steel Standoff - 2D аркада.
Мои статьи
t111Дата: Понедельник, 02 Декабря 2013, 17:55 | Сообщение # 4615
почетный гость
Сейчас нет на сайте
а, хорошо буду гуглить. В справке нашёл код который отключает прерывание видео мышкой, но когда ввожу воспроизведение видео с помощью кода splash_show_video(asd.wmv,0) он не понимает кода.

как известно, встречают по
одежке, а провожают
uninstall'ом"

GameMixДата: Понедельник, 02 Декабря 2013, 17:57 | Сообщение # 4616
старожил
Сейчас нет на сайте
asd.wmv - должна быть строкой ("asd.wmv"). А сейчас это у тебя обращение к переменной wmv в объекте asd.

Steel Standoff - 2D аркада.
Мои статьи
t111Дата: Понедельник, 02 Декабря 2013, 18:14 | Сообщение # 4617
почетный гость
Сейчас нет на сайте
да я чёто затупил, пардон))))
проблема уже решена smile


как известно, встречают по
одежке, а провожают
uninstall'ом"

MakcTHCДата: Понедельник, 02 Декабря 2013, 21:00 | Сообщение # 4618
был не раз
Сейчас нет на сайте
Привет всем. Не могу понять что не так:
Код

В Draw:
draw_sprite(s_monstr,0,x,y);
image_speed = 1;

Не проигрывается анимация.
buftlerДата: Понедельник, 02 Декабря 2013, 21:21 | Сообщение # 4619

Добряк

Сейчас нет на сайте
MakcTHC,в draw нельзя указывать image_speed, или create или step

Сообщение отредактировал buftler - Понедельник, 02 Декабря 2013, 21:22
MakcTHCДата: Понедельник, 02 Декабря 2013, 22:26 | Сообщение # 4620
был не раз
Сейчас нет на сайте
buftler, Не получается ни в Create ни в Step, единственное, если убрать событие Draw вообще и поставить спрайт в настройках у объекта, тогда анимация проигрывается...

Добавлено (02.12.2013, 22:26)
---------------------------------------------
Всё разобрался. Просто нужно было subimg -1 ставить а не 0

Код
draw_sprite(s_monstr,-1,x,y);  
image_speed = 0.8;
Поиск:

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