Художник пытается освоить 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, Ладно, спасибо, я уже получил пинок в нужную сторону Теперь уже сам. Голова в правильном направлении заработала. Добавлено (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) --------------------------------------------- Я такого не делал сам никогда... просто как мне кажется, так должно работать... Поэтому напиши о результатах, интересно...
Сообщение отредактировал 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 пропишем: Думаю понятно что при этом координата Y у второго объекта, станет равна координате Y у первого объекта. Так как точки отсчета у обоих объектов одинаковые, то получается что первый и второй объект всегда будут на одном уровне по Y, относительно верхней границы (т.к. отсчет по Y начинается сверху). Теперь изменим у второго объекта в настройках его спрайта точку отсчета, например на 0:32 - таким образом теперь объекты будут не на одном и том же уровне. Второй объект будет на 32 пикселя ниже чем первый. С объектом и видом тоже самое. Сначала они становятся равными по координате Y, а потом мы опускаем вид по средствам отступа, т.е. меняем точку отсчета для вида. Ухх.. надеюсь понятно Просто представь, что вид это не что то призрачное, а рассматривай его, как обычный объект... И ещё раз перечитай, то что я на примере объектов написал...
Сообщение отредактировал LunarPixel - Понедельник, 11 Апреля 2011, 18:51 |
|
| |
|