Очередной вопросник дабы не плодить кучу тем
|
|
neksins | Дата: Понедельник, 14 Марта 2011, 15:50 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Всем привет, в своей игре использую следующий код для мобов: Code image_angle=direction; friction=0.05; if distance_to_object(Player) <= 540 {
alarm[0]=11 }
if distance_to_object(Player) <=100 && distance_to_object(Player)>=150 { mp_potential_step(Player.x,Player.y,3,0) }
if distance_to_object(Player)>=0 && distance_to_object(Player)<=10 { mp_potential_step(Player.x,Player.y,-3,0) }
if hp<1
{ instance_destroy(); } alarm[0] = instance_create(x,y,enemylazer); alarm[0]=11 при этом мобы сильно лагают: 1) реагируют на обьект игрока когда тот слишком близко расположен к ним (реагируют=поворачиваются в его сторону) 2) стреляют непойми как - сначала нестреляют вообще, потом когда отлетаешь начинают (в тот момент они уже за кадром) 3) небегают за игроком пытался корректировать значения if distance_to_object(Player) <= 540 и тому подобные - неспасает. как вылечить? мобы должны стрелять в зоне видимости игрока (игра 800х600, игрок по середине экрана) бегать за ним (хотя медленнее чем игрок) отлетать только если игрок очень близко (не допускать "состыковки")
Мой проект по типу Guitar Hero ИГРА ВЫПУЩЕНА!
Сообщение отредактировал neksins - Понедельник, 14 Марта 2011, 22:15 |
|
| |
Made_In_USSR | Дата: Понедельник, 14 Марта 2011, 15:58 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Quote (neksins) if distance_to_object(Player) <=100 && distance_to_object(Player)>=150 { mp_potential_step(Player.x,Player.y,3,0) Обьект не может быть на расстоянии меньше 100 и больше 150 одновременно.
Новичкам изучающим GML кликать сюда. Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
|
|
| |
neksins | Дата: Понедельник, 14 Марта 2011, 16:00 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| ой я лол все понял ошибка в том что у меня одновременно если дистанция МЕНЬШЕ 100 и БОЛЬШЕ 150Добавлено (14.03.2011, 16:00) --------------------------------------------- Made_In_USSR, опередил
Мой проект по типу Guitar Hero ИГРА ВЫПУЩЕНА!
|
|
| |
Made_In_USSR | Дата: Понедельник, 14 Марта 2011, 16:03 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| Внимательнее нужно быть, батенька
Новичкам изучающим GML кликать сюда. Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
|
|
| |
fack3637363 | Дата: Понедельник, 14 Марта 2011, 16:04 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| заместо mp_potential_step поставь функцию move_towards_point
|
|
| |
neksins | Дата: Понедельник, 14 Марта 2011, 16:05 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| но стреляют они всеравно покосному О_О вот сейчас протестил. подлетел к одному мобу он за мной дернулся а стрелять начал второй, третий вообще стоит непричем, второй пострелял раз 10 да и прекратил, первый так и не начал О_ОДобавлено (14.03.2011, 16:05) --------------------------------------------- fack3637363, что это изменит?
Мой проект по типу Guitar Hero ИГРА ВЫПУЩЕНА!
|
|
| |
Dva_Kota | Дата: Понедельник, 14 Марта 2011, 16:20 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Вместо Code if distance_to_object(Player)>=0 && distance_to_object(Player)<=10 { mp_potential_step(Player.x,Player.y,-3,0) } можно было написать Code if distance_to_object(Player)<=10 { mp_potential_step(Player.x,Player.y,-3,0) } (расстояние же и так не может быть меньше 0, по этому можно не выполнять первую проверку) Теперь по проблеме: стрельбу сделал не правильно. У тебя когда игрок рядом постоянно выполняется alarm[0]=11, т.е. событие alarm0 не выполнится пока ты рядом. Нужно создать переменную, которая будет отвечать за "перезарядку", например canshoot=true (в событии создания моба) Вместо alarm[0]=11 поставь код: Code if canshoot { instance_create(x,y,enemylazer); canshoot=false; alarm[0]=11; } В событии alarm0 код:
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Понедельник, 14 Марта 2011, 16:21 |
|
| |
neksins | Дата: Понедельник, 14 Марта 2011, 16:29 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Dva_Kota, огромное спасибо, все понятно и все работает
Мой проект по типу Guitar Hero ИГРА ВЫПУЩЕНА!
|
|
| |
AGENTX001 | Дата: Понедельник, 14 Марта 2011, 17:12 | Сообщение # 9 |
почётный гцупер
Сейчас нет на сайте
| Quote (fack3637363) заместо mp_potential_step поставь функцию move_towards_point О_о Этого не нужно! fack3637363, ты хоть справку глянул-бы! Эта функция заставляет обьект двигаться обходя все другие обьекты. В данном случае немного не верно, т. к. бот у тебя начнёт обходить кровь, трупов и т. д. Лучше всего создать родителя для всех объектов которые боту нада обходить, и воспользоваться функцией: Quote mp_potential_step_object
|
|
| |
Made_In_USSR | Дата: Понедельник, 14 Марта 2011, 18:47 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Quote (AGENTX001) В данном случае немного не верно, т. к. бот у тебя начнёт обходить кровь, трупов и т. д. Это космосим
Новичкам изучающим GML кликать сюда. Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
|
|
| |
neksins | Дата: Понедельник, 14 Марта 2011, 22:17 | Сообщение # 11 |
постоянный участник
Сейчас нет на сайте
| Теперь у меня вопрос, касаемый стрельбы обьекта Player в степе стоит такой код if global.weapons > 0 if mouse_check_button_pressed(mb_left) { alarm[1]=5 } в аларме кнопкой создание лазера, затем задаю alarm[1]=5 думал будет цикл, а вот и нет почему неработает цикл стрельбы? как можно сделать стрельбу пока зажата левая кнопка мыши? Добавлено (14.03.2011, 22:17) --------------------------------------------- разумеется, стрельбу с интервалами (маленькими) а не просто бесконечный потом выстрелов
Мой проект по типу Guitar Hero ИГРА ВЫПУЩЕНА!
|
|
| |
Dva_Kota | Дата: Понедельник, 14 Марта 2011, 23:51 | Сообщение # 12 |
заслуженный участник
Сейчас нет на сайте
| Делай все точно так же как у моба, а вместо mouse_check_button_pressed(mb_left) пиши mouse_check_button(mb_left). Код такой: В криейт В степ Code if mouse_check_button(mb_left) { if canshoot { instance_create(x,y,enemylazer); canshoot=false; alarm[0]=11; } } ну и в alarm0
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
neksins | Дата: Вторник, 15 Марта 2011, 09:26 | Сообщение # 13 |
постоянный участник
Сейчас нет на сайте
| Dva_Kota, спасибо, выручил)
Мой проект по типу Guitar Hero ИГРА ВЫПУЩЕНА!
|
|
| |