Четверг, 07 Июля 2022, 16:48

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Художник пытается освоить GML
AGENTX001Дата: Вторник, 05 Апреля 2011, 16:36 | Сообщение # 161
почётный гцупер
Сейчас нет на сайте
LunarPixel, тогда - да.
FerrumelДата: Пятница, 08 Апреля 2011, 11:52 | Сообщение # 162
почти ветеран
Сейчас нет на сайте
Вот столкнулся с интересной вещью, под названием интерфейс. И как решить онную задачу ума не приложу. В чем заключается трудность. Я настроил вид у своего персонажа, теперь он перемещается, находясь все время в середине комнаты. Все нормально все хорошо. Теперь было бы хорошо прилепить внизу экрана интерфейс игры. Вот как сделать это, ума не дам. Гугл со справкой не дали подобной информации. Тоесть я не знаю как и какими средствами это реализовать. В чем задача.
Хочу разделить экран на две части
1-большая и основная часть, это игровое поле
2-нижняя узкая полоска интерфейс.
Все что до этого находил касалось именно момента что допустим жизни висят в левом верхнем углу экрана, но герой может попасть так, что скрывается например за healthbar полоской. Этого не надо. Еще бы с удовольствием реализовал красивую рамку экрана. Подскажите, как такое реализуется!


все серо и пусто
QvantДата: Пятница, 08 Апреля 2011, 12:01 | Сообщение # 163
почти ветеран
Сейчас нет на сайте
Quote (Ferrumel)
прилепить внизу экрана интерфейс игры

чтоб при изменении вида объект оставался неподвижным на экране используй это
x = view_xview[0] + смещение
y = view_yview[0] + смещение
LunarPixelДата: Пятница, 08 Апреля 2011, 12:11 | Сообщение # 164
старожил
Сейчас нет на сайте
Ferrumel, т.е. вариант цепляния интерфейса к виду тебе не подходит? Тебе нужно именно на два экрана разделять? т.е. тебе нужно чтобы он не мог допрыгнуть до панели и очутиться за ней?

Вот тебе пример ПРЯМО ТУТ с двумя видами, с разделением экрана.

Добавлено (08.04.2011, 12:11)
---------------------------------------------
Ferrumel, но с двумя экранами - это не самый хороший вариант.
Обычно реализуется так, как сказал Qvant.


FerrumelДата: Пятница, 08 Апреля 2011, 12:23 | Сообщение # 165
почти ветеран
Сейчас нет на сайте
Ой мама. Задам вопрос по другому. Как делаются интерфейсы в ГМ? Куда надо посмотреть и почитать?

Так сейчас выдам скриншот


все серо и пусто

Сообщение отредактировал Ferrumel - Пятница, 08 Апреля 2011, 12:25
LunarPixelДата: Пятница, 08 Апреля 2011, 12:31 | Сообщение # 166
старожил
Сейчас нет на сайте
Ferrumel, интерфейс можно сделать или отрисовкой спрайтов или отрисовкой объектов.
т.е. например рисуешь панельку как спрайт..
ставишь этот спрайт объекту. Объект помещаешь в комнату. И в событии Step у этого объекта пишешь
x = view_xview[0]+0 //+0 указал для намека на смещение
y = view_yview[0]+0
Теперь этот объект будет привязан к координате 0:0... меняя эти нолики можно сдвигать объект. Но он всегда будет привязан к зоне видимости.

Аналогично с прорисовкой. Создавай объект, в нем событие Draw и пиши
draw_sprite(тут название спрайта,-1,view_xview[0]+0,view_yview[0]+0)

Действует так же, как и в предыдущем случаи, только тут панелька - не объект, а просто спрайт.


FerrumelДата: Пятница, 08 Апреля 2011, 12:35 | Сообщение # 167
почти ветеран
Сейчас нет на сайте
LunarPixel, мда, у меня походу затык мозга скорее всего очевидных вещей понять не могу, сейчас попробуем реализовать.

все серо и пусто
LunarPixelДата: Пятница, 08 Апреля 2011, 12:39 | Сообщение # 168
старожил
Сейчас нет на сайте
Ferrumel, попробуй нарисовать панельку, как спрайт.
Потом создай объект какой нибудь, без спрайта.
В нем создай событие Draw.
А туда вставь код:
draw_sprite(тут название спрайта,-1,view_xview[0]+0,view_yview[0]+0)

Спрайт отрисуется в комнате, в позиции 0:0 и всегда будет в зоне видимости.


FerrumelДата: Пятница, 08 Апреля 2011, 12:43 | Сообщение # 169
почти ветеран
Сейчас нет на сайте
Все ясно, сделано. Нее, мне такая фиговинка мало подходит. Дело в том что интерфейс хочу сделать "тяжелым", главная его особенность, чтобы он не мешал игре. Тоесть герой до него никогда не смог бы "добраться".
Получилось вот так. Тоесть когда герой подбирается к верху экрана вида, получаем что лазим внутри интерфейса.


все серо и пусто

Сообщение отредактировал Ferrumel - Пятница, 08 Апреля 2011, 12:44
LunarPixelДата: Пятница, 08 Апреля 2011, 12:50 | Сообщение # 170
старожил
Сейчас нет на сайте
Ferrumel, хм.. сделай комнату выше. Чтобы высота была такой, что при максимальном прыжке, герой не мог бы долететь до панельки. Панелька то будет вместе с героем подниматься..

Добавлено (08.04.2011, 12:50)
---------------------------------------------
Или используй мой пример с видами, который я тебе кинул. Там можно сделать так, как ты хочешь, хотя тоже есть свои минусы.
Если что то там не понятно, напиши.


QvantДата: Пятница, 08 Апреля 2011, 12:53 | Сообщение # 171
почти ветеран
Сейчас нет на сайте
Quote (Ferrumel)
Тоесть когда герой подбирается к верху экрана вида, получаем что лазим внутри интерфейса

Вот это тебе поможет


Сообщение отредактировал Qvant - Пятница, 08 Апреля 2011, 12:54
FerrumelДата: Пятница, 08 Апреля 2011, 12:58 | Сообщение # 172
почти ветеран
Сейчас нет на сайте
Вот это я туплю... У меня реально затык мозга. Ведь блин, можно же учитывать при построении комнаты место для интерфейса в крайне нижнем положении героя, также и в крайне верхнем. Меня только вот что смущает. Интерфейс с небольшим опозданием реагирует на движения персонажа. Вообще, все какие то привязанные объекты в ГМ так реагируют. В свое время отказался от варианта когда к башке персонажа был прикручен объект для цепляния к платформам. Персонаж прыгал двигался подпрыгивал, объект несколько отставал в своих движениях.

все серо и пусто

Сообщение отредактировал Ferrumel - Пятница, 08 Апреля 2011, 13:03
LunarPixelДата: Пятница, 08 Апреля 2011, 13:00 | Сообщение # 173
старожил
Сейчас нет на сайте
Ferrumel, объекты, да, дергаются....
Поэтому надо прорисовывать, как я написал... Через событие Draw все будет хорошо работать.


FerrumelДата: Пятница, 08 Апреля 2011, 13:03 | Сообщение # 174
почти ветеран
Сейчас нет на сайте
Попробую таки видами сделать. Фишка в другом, о красивой рамке игры в этом случае можно забыть(

все серо и пусто
LunarPixelДата: Пятница, 08 Апреля 2011, 13:17 | Сообщение # 175
старожил
Сейчас нет на сайте
Ferrumel, хм, а в чем ещё проблема?
У меня всегда прорисовкой все получалось делать замечательно.
Можно даже объект кажется сделать недергащимся. Просто координаты объекта меняй в событии Draw.


QvantДата: Пятница, 08 Апреля 2011, 13:19 | Сообщение # 176
почти ветеран
Сейчас нет на сайте
Ferrumel, посмотри на Сообщение # 171 ещё разок в рамке выделенным красным показаны границы где начинается изменение вида при слежении за объектом ...

скажем твой интерфейс 100 пикселей и находится вверху - ставь ограничении по верхней границе например 120 , тогда как только гг прыгнет то при 120 пикселей от верхней границе вид начнёт перемещаться вверх и гг никогда недопрыгнет до интерфейса .
Также можно сделать и с низом и слева и справа !

FerrumelДата: Понедельник, 11 Апреля 2011, 17:28 | Сообщение # 177
почти ветеран
Сейчас нет на сайте
Qvant, Ладно, спасибо, я уже получил пинок в нужную сторону biggrin Теперь уже сам. Голова в правильном направлении заработала.

Добавлено (11.04.2011, 17:28)
---------------------------------------------
И снова тут по поводу интерфейса, точнее его логического размещения на экране. Вроде бы изготовил по типу пустой объект отрисовывает спрайт на экране. Но мне не нравится одна маленькая особенность. Никак не могу настроить сам вид. ГГ слишком близко находится к интерфейсу, поэтому многие прыжки вниз можно назвать "опасными", такие "прыжки веры" получаются. Сам интерфейс не дает увидеть что ниже. Был бы крайне признателен, если кто нибудь надоумил бы, как увеличить видимое пространство внизу хотя бы на 150рх.
Под спойлером скриншот проблемы и настройки комнаты. Красное, зона панели.



все серо и пусто

Сообщение отредактировал Ferrumel - Понедельник, 11 Апреля 2011, 17:29
LunarPixelДата: Понедельник, 11 Апреля 2011, 17:55 | Сообщение # 178
старожил
Сейчас нет на сайте
Ferrumel, пропиши в step у героя
Code
view_yview[0]=object.y

где object - герой.

Потом меняй в настройках вида значение Y гр., которое сейчас у тебя 340. Чем оно меньше будет, тем выше будет герой в виде.
Проверь, посмотри как получится.

Добавлено (11.04.2011, 17:55)
---------------------------------------------
Я такого не делал сам никогда... просто как мне кажется, так должно работать... Поэтому напиши о результатах, интересно... biggrin




Сообщение отредактировал LunarPixel - Понедельник, 11 Апреля 2011, 17:48
FerrumelДата: Понедельник, 11 Апреля 2011, 18:08 | Сообщение # 179
почти ветеран
Сейчас нет на сайте
LunarPixel,

БЛИН!!! ИДЕАЛЬНО!!!
А можно на пальцах в 2х предложениях объяснить что произошло? Я что то не вкушаю эту часть кода.


все серо и пусто
LunarPixelДата: Понедельник, 11 Апреля 2011, 18:40 | Сообщение # 180
старожил
Сейчас нет на сайте
Напишу как я рассудил...

view_yview[0] - позиция вида в комнате по координате Y.
view_yview[0]=object.y - помещает вид по Y на ту же высоту что и герой.

т.е. если герой в позиции 100 по Y, то и вид перемещается в позицию 100 по Y, относительно героя. Т.к. отсчет по Y начинается сверху с 0, то вид автоматически прицепится к герою своей верхней границей. Плюс к этому мы добавляем отступ - это равносильно тому, что мы меняем точку отсчета у вида, т.е. если мы ставим отступ 100, то точка отсчета у вида по Y будет равна 100.

Это проще объяснить на примере двух спрайтов. Не секрет что в настройках спрайта можно установить точку отсчета. Изначально она равно 0:0. Возьмем два спрайта, с точкой отсчета 0:0.
Создадим два объекта o1 и o2. Зададим им эти спрайты. И в объекте o1 в событии Step пропишем:

Code
o2.y=o1.y

Думаю понятно что при этом координата Y у второго объекта, станет равна координате Y у первого объекта. Так как точки отсчета у обоих объектов одинаковые, то получается что первый и второй объект всегда будут на одном уровне по Y, относительно верхней границы (т.к. отсчет по Y начинается сверху).
Теперь изменим у второго объекта в настройках его спрайта точку отсчета, например на 0:32 - таким образом теперь объекты будут не на одном и том же уровне. Второй объект будет на 32 пикселя ниже чем первый.

С объектом и видом тоже самое. Сначала они становятся равными по координате Y, а потом мы опускаем вид по средствам отступа, т.е. меняем точку отсчета для вида.

Ухх.. надеюсь понятно biggrin

Просто представь, что вид это не что то призрачное, а рассматривай его, как обычный объект... И ещё раз перечитай, то что я на примере объектов написал... happy




Сообщение отредактировал LunarPixel - Понедельник, 11 Апреля 2011, 18:51
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Поиск:

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