Понедельник, 25 Ноября 2024, 09:08

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Рандомное появление объектов.
Just1uckyДата: Среда, 06 Августа 2014, 12:38 | Сообщение # 1
частый гость
Сейчас нет на сайте
Доброго времени суток, дорогие форумчане! Подскажите пожалуйста, как сделать рандомное появление объектов из-за комнаты? И чтобы они двигались по горизонтали. Второй день ищу примеры, смотрю уроки, а так же читал форум, но все не то. Везде не объясняется или что-то лишнее.


Вообщем хочу, что объекты не только вылетали рандомно из этих точек, которые показаны на картинке, а чтобы вылетали из любой точки по оси "Y".

Знаю, что вы все добрые и отзывчивые и надеюсь на вашу помощь:)


Сообщение отредактировал Just1ucky - Среда, 06 Августа 2014, 12:39
Raven84Дата: Среда, 06 Августа 2014, 13:10 | Сообщение # 2
старожил
Сейчас нет на сайте
что тут сложного? В событии создания объекта пишем y=random(600)
,где 600 (пикселей) высота комнаты.

Добавлено (06.08.2014, 13:02)
---------------------------------------------
Вообщем вот полный код,чтобы еще и двигались:

Код

y=random(600)
n=irandom(1)
if n=0 {x=-50 hspeed=10} else {x=850 hspeed=-10}

Добавлено (06.08.2014, 13:09)
---------------------------------------------
Вот тебе даже полное объяснение,разжевывание кода:
y=random(600) ,оператор random генерирует случайное число от 0 до числа в скобках,в данном случае 600. Т.е. y может быть равно 54, 160.8, 421, 37.3 .Короче как целые так и дробные числа.
n=irandom(1) ,оператор irandom генерирует случайное ЦЕЛОЕ число от 0 до числа в скобках, в данном случае 1. Т.е. n может быть равно либо 0 либо 1.
if n=0 {x=-50 hspeed=10} else {x=850 hspeed=-10} ,это проверка: если n=0 то объект появляется слева и получает скорость в 10 пикселей за шаг вправо, иначе (если n равно 1), то все наоборот.
Тут важно понимать,что 850 это значение чуть больше ширины комнаты (т.е. у тебя ширина допустим 800, то тут указываем 850).

Добавлено (06.08.2014, 13:10)
---------------------------------------------
Как видишь код всего из 3 строчек. А ты два,целых ДВА!!! дня ищешь как это сделать.
Отсюда совет: учи язык программирования.GML прост до нельзя.
Удачи!
Появятся вопросы-задавай. smile


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland
михаДата: Среда, 06 Августа 2014, 13:20 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Raven84, лучше:
y=random(room_height)
x=choose(-50,room_width+50)
hspeed=x*(-1)*0.2

так размеры комнаты можно брать любые - все будет ок
Just1uckyДата: Среда, 06 Августа 2014, 13:22 | Сообщение # 4
частый гость
Сейчас нет на сайте
Цитата Raven84 ()
Вообщем вот полный код,чтобы еще и двигались:
Код

y=random(600)
n=irandom(1)
if n=0 {x=-50 hspeed=10} else {x=850 hspeed=-10}


А как сделать, чтобы постоянно создавались объекты? А то 1 раз только вылетает объект, притом всегда из одной точки. Думаю, что как-то через Alarm.

Цитата Raven84 ()
Отсюда совет: учи язык программирования.GML прост до нельзя.

Я учу по примерам и по отдельным случаям, чтоб наглядно все было happy
Raven84Дата: Среда, 06 Августа 2014, 13:26 | Сообщение # 5
старожил
Сейчас нет на сайте
миха,
Цитата
y=random(room_height)
x=choose(-50,room_width+50)
hspeed=x*(-1)*0.2

Согласен! Это вообще идеальный код!
Я же лишь тупо хотел донести мысли о том,что нужно мыслить алгоритмами и просто предложил код не оптимизированный,чтобы автор понял суть.

Добавлено (06.08.2014, 13:26)
---------------------------------------------
Just1ucky,
Цитата
А как сделать, чтобы постоянно создавались объекты?

Для этого создай другой объект и задай таймер.
К примеру имя вылетающих обектов у тебя BULLET.
Тогда создай объект и назови его к примеру SHOOTER и помести один раз в комнату.
В нем в событии create задай переменную таймер, к примеру:
Код
timer=0

А в событии Step пропиши:
Код
if timer>=20 {instance_create(x,y,BULLET) timer=0}
timer+=1

Вот и вся беда. biggrin


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Среда, 06 Августа 2014, 13:28
михаДата: Среда, 06 Августа 2014, 13:30 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Just1ucky, а чтобы объекты из разных точек лезли, надо перед кодом вставить random_set_seed(seed), и вместо seed подставить что-то, что постоянно меняется. я обычно использую аремя, но сейчас некогда объяснять)
Just1uckyДата: Среда, 06 Августа 2014, 13:34 | Сообщение # 7
частый гость
Сейчас нет на сайте
Работает:) Но когда перезапускаю игру, то объекты вылетают из того же месте.
Raven84Дата: Среда, 06 Августа 2014, 13:48 | Сообщение # 8
старожил
Сейчас нет на сайте
Just1ucky,
Цитата
Работает:) Но когда перезапускаю игру, то объекты вылетают из того же месте.

Мы так с михой за тебя всю игру сделаем!!! biggrin
Для того,чтобы всегда в разных местах вылетало и после перезапуска достаточно добавить оператор randomize() и никакой random_set_seed не нужен. smile
Просто напиши это в событии создания вылетающего объекта.
Ну как теперь? Работает ? :-)


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Среда, 06 Августа 2014, 13:49
Just1uckyДата: Среда, 06 Августа 2014, 13:56 | Сообщение # 9
частый гость
Сейчас нет на сайте
Цитата Raven84 ()
Ну как теперь? Работает ? :-)


Да, все супер:D Теперь я понял принцип работы!:)

Спасибо огромное! Вы лучшая поддержка по gms happy


Сообщение отредактировал Just1ucky - Среда, 06 Августа 2014, 13:56
михаДата: Среда, 06 Августа 2014, 14:15 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Raven84, точно) я что то го не юзаю совсем, надо бы)
  • Страница 1 из 1
  • 1
Поиск:

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