Пятница, 29 Марта 2024, 11:01

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » помогите написать код (простой код)
помогите написать код
DivESДата: Вторник, 30 Июня 2020, 13:27 | Сообщение # 21
заслуженный участник
Сейчас нет на сайте
Normanof, а если поставить в конец шага?

По поводу второго пункта MagicHero всё правильно написал:
Код

if place_meeting(x, y, имя_объекта_ямы)

x, y — координаты игрока, а не каждого объекта ямы!
SpaceOwlДата: Вторник, 30 Июня 2020, 13:53 | Сообщение # 22
уже был
Сейчас нет на сайте
Я аж зарегистрировался на форуме для ответа, так что - цени)
Ключи у тебя отнимаются, потому что команду global.blackkey=global.blackkey-1 ничего не ограничивает. То есть ты встал на яму и каждый игровой шаг (1/60 секунды) отнимается по ключу.
Я вижу 2 очевидных варианта решения твоей задачи.
1. Если тебе нужно чтобы ключ отнимался каждый раз как встаешь на яму.
В Create создаешь переменную couldown = 0; она будет ограничивающим таймером.
В Step пишешь
couldown -= 1; //каждый игровой шаг отнимать 1
if place_meeting(x,y,Grid) && couldown<0
{
if (global.blackkey>0)
{
global.blackkey -= 1;
couldown = 120;
}
}
Таким макаром пока ты стоишь на яме, каждые 2 секунды будет отниматься по 1 ключу, пока ключи вообще есть. Время можешь подставить любое.

2. Зашел на яму = -1 ключ. Зашел снова = еще -1.

Опять же, в Create ямы создаешь переменную, скажем,
timer = 1;
И реальный таймер типа
alarm_set(0,60);
Теперь создаешь событие таймера и прописываешь
if !place_meeting(x,y,Player) && timer == 0 //если не трогает игрока и таймер равен нулю
{timer = 1;}
alarm_set(0,60); //перезапускаешь таймер.

В Collision игроку пишешь что-то типа

if (global.blackkey>0) && other.timer == 1
{
global.blackkey -= 1;
other.timer = 0;
}
Вообще такие ограничивающие переменные часто используются когда тебе нужно чтобы что то произошло 1 раз. А первый пример отлично подхоит еще и для пулеметной стрельбы.
MagicHeroДата: Вторник, 30 Июня 2020, 16:21 | Сообщение # 23
участник
Сейчас нет на сайте
Цитата DivES ()
Описывать каждую яму по отдельности — утомительно.


Каждую яму описывать не надо, я же написал что в функции пишешь имя_обьекта_ямы. Я надеюсь автор вопроса для всех ям использует один объект а не разные. Если по мимо ям есть ещё объекты которые отнимают ключи когда попадаешь в них то надо создать родительский объект (можно полностью пустой) и прикрепить к нему всё что отнимает ключи а его название указать в функции place_meeting.

Цитата DivES ()
К тому же place_meeting(...) звучит как функция проверки столкновения с местом, а не с объектом. Поищи в сторону функции столкновения с объектом, тогда обойдёшься строчкой кода.


place_meeting как раз и проверяет маски коллизии игрока и обьекта яма по текущим координатам игрока, там же написаны x и y координаты игрока. Можно наоборот добавлять к координатам значения чтобы проверять перед игроком или как душе захочется.


Сообщение отредактировал MagicHero - Вторник, 30 Июня 2020, 16:30
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » помогите написать код (простой код)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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