Много вопросов по GM
| |
marsep | Дата: Суббота, 03 Ноября 2012, 14:53 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Всем привет! Недавно начал понимать тонкости этого конструктора и уже столкнулся с некоторыми вопросами:
1. Создаю 2 объекта: А и В. В А создаю такое событие: если нажимаешь на объект А левой клавишей мыши, то происходит следующее: instance_create(point_obj.x, point_obj.y, B); instance_destroy(); Т.е. в координатах объекта А должен создаваться объект В, а сам объект А уничтожаться. Но у меня почему то, это действие происходит не всегда, чаще всего объект А уничтожается, но В не создается на его месте. Т.е. в комнате стоит 10 объектов А и если нажать в игре на каждый, то объект В создается раза 3-5, т.е. выполняется это действие не всегда. Хотя сам объект А удаляется всегда. В чем может быть проблема?
2. Чтобы объявить глобальные переменные или выполнить те действия, которые не относятся к объектам в целом (таймер какой-нибудь), то это нужно делать в выделенном объекте? Т.е. создать объект без спрайта и использовать его в качестве "хранилища глобальных операций".
3. Какие действия могут быть заданы при написание кода в самой комнате (Room - Setting - Set Scripting)?
4. Я прописал у объекта следующее: draw_set_font(font1); draw_text(x1, y1, "Hello,World!"); draw_set_font(font2); draw_text(x2, y2, "Hello,World!"); Так почему текст хоть и появляется в игре, но второй текст появляется с тем же шрифтом, что и первый (font1), хотя должен быть font2. Как это делается вообще, чтобы нарисовать несколько текстов, но с разными шрифтами?
5. Когда игрок нажимает Escape появляется окно (меню)... Как сделать, чтобы комната темнела или просто накладывался черный фон с прозрачностью где-то 50%, но с самим окном (меню) ничего не происходило?
6. Как сделать, чтобы при навидении на объект курсором его спрайт менялся на другой, а когда курсор не на нем, то его спрайт становится стандартным (первоначальным)?
7. С помощью Path объект движется по комнате. Как сделать, чтобы он останавливался, когда перед ним оказывался другой заданный объект и через некоторое время этот объект уничтожался, и первый объект продолжал двигаться по своему пути Path ?
8. Как можно вывести текст (типо очки игрока) и чтобы выглядел этот текст так: 000000 и по мере получения очков количество цифр не менялось - менялось только значение. Т.е. если игрок получил 10 очков, то стало так: 000010, а если еще 255 получил, то так: 000265. Как можно сделать такое?
P.S. Использую GM: Studio... Заранее спасибо за помощь!!!
7.
|
|
| |
Drac | Дата: Суббота, 03 Ноября 2012, 17:46 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Quote (marsep) 8. Как можно вывести текст (типо очки игрока) и чтобы выглядел этот текст так: 000000 и по мере получения очков количество цифр не менялось - менялось только значение. Т.е. если игрок получил 10 очков, то стало так: 000010, а если еще 255 получил, то так: 000265. Как можно сделать такое?
000000 это рассматриваем так - сотни тысяч, десятки тысяч, тысячи, сотни, десятки, единиц. Как реализовать думай сам, саму логику я дал.
Всем добра =)
|
|
| |
Raven84 | Дата: Суббота, 03 Ноября 2012, 18:21 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Quote 6. Как сделать, чтобы при навидении на объект курсором его спрайт менялся на другой, а когда курсор не на нем, то его спрайт становится стандартным (первоначальным)? В событии STEP объекта,которому нужна менять спрайт напиши: Code if place_meeting (x,y,cursor) {sprite_image=sprite1} else {sprite_image=sprite2} Думаю разъяснять не надо,сам разберешься что к чему.
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
Hamster099 | Дата: Суббота, 03 Ноября 2012, 23:12 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| 1. замени 1 строчку на Code with instance_create(point_obj.x, point_obj.y, B ) {show_message('объект B создан!')}; Возможно ты его просто не видишь, либо он создаётся в той же точке что и предыдущий. point_obj это идентификатор объекта насколько я понимаю, если тебе надо создавать в той же точке что и А и код запускается из А, используй просто x, y
2. Не обязательно но рекомендуется. Также не обязательно объявлять все переменные глобальными, можно получать доступ к ним, указывая этот самый объект.
3. Любые, но однократные. Выполняются при входе в комнату. Можно вставить загрузку чегото, но удобнее как в пункте 2
4. возможно у тебя шрифты одинаковые, кодом все верно
5. рисуй полупрозрачный прямоугольник на весь вид. Можно прямо в драве объекта меню, самой первой строчкой, до рисования спрайтов текстов и тд: Code draw_set_color(c_black); draw_set_alpha(0.5); draw_rectangle(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,false);
7. path_speed=0
8. Quote (Drac) 000000 это рассматриваем так - сотни тысяч, десятки тысяч, тысячи, сотни, десятки, единиц. Как реализовать думай сам, саму логику я дал. Нифига ты не дал, это всё не нужно. score=10, к примеру. Заводишь переменную score_draw Code score_draw=string(score); while string_length(score_draw)<6 {score_draw='0'+score_draw} draw_text(x,y,score_draw);
P.S. Quote (marsep) Использую GM: Studio... юзаю 8.0, если какие операторы не распознает кури справку, принцип действия подобен
Сообщение отредактировал Hamster099 - Суббота, 03 Ноября 2012, 23:14 |
|
| |
marsep | Дата: Воскресенье, 04 Ноября 2012, 12:42 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Hamster099, большое тебе спасибо за помощь!!! Добавлено (04.11.2012, 12:42) ---------------------------------------------
Quote (marsep) 1. Создаю 2 объекта: А и В. В А создаю такое событие: если нажимаешь на объект А левой клавишей мыши, то происходит следующее: instance_create(А.x, А.y, B); instance_destroy(); Т.е. в координатах объекта А должен создаваться объект В, а сам объект А уничтожаться. Но у меня почему то, это действие происходит не всегда, чаще всего объект А уничтожается, но В не создается на его месте. Т.е. в комнате стоит 10 объектов А и если нажать в игре на каждый, то объект В создается раза 3-5, т.е. выполняется это действие не всегда. Хотя сам объект А удаляется всегда. В чем может быть проблема?
А как сделать по подобному примеру (см.выше), чтобы после того как ставишь объект В, объект начинал стрелять в объект С, в качестве снаряда использовался бы объект D. Как сделать, чтобы он летел в объект С?
|
|
| |
Hamster099 | Дата: Воскресенье, 04 Ноября 2012, 17:33 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| объект B (в alarm-е): Code with instance create(x,y,D) {direction=point_direction(other.x,other.y,C.x,C.y)}
Сообщение отредактировал Hamster099 - Воскресенье, 04 Ноября 2012, 17:34 |
|
| |
marsep | Дата: Воскресенье, 04 Ноября 2012, 20:28 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Hamster099, еще раз спасибо за помощь!
|
|
| |
|