Результаты поиска
| |
gameshulker | Дата: Воскресенье, 18 Апреля 2021, 11:54 | Сообщение # 1 | Тема: Создание объекта с параметрами |
был не раз
Сейчас нет на сайте
| Цитата MagicHero ( ) temp.selectedButton=number; // number - тип действия
Подожди, разве selectedButton=number не присвоется сразу ко всем кнопкам? То есть у меня 10 кнопок, и я пишу temp.selectedButton=5. SelectedButton будет равно 5 у всех кнопок же?
Емаеее, я допёр. То есть temp это как бы именно тот экземпляр, который мы создаем. А если сделать temp2 = instance_create, то это получается что свойства temp не будут касаться temp2, хотя и то и то есть объект кнопки.
Спасибо, вот этого не знал.
Сообщение отредактировал gameshulker - Воскресенье, 18 Апреля 2021, 12:04 |
|
| |
gameshulker | Дата: Суббота, 17 Апреля 2021, 20:41 | Сообщение # 2 | Тема: Создание объекта с параметрами |
был не раз
Сейчас нет на сайте
| Так выходит, что я задаю четвёртый вопрос подряд. Этот вопрос был интересен мне давно, но я как-то откладывал его и решал "костылями". Самый простой пример того, что я хочу:
Допустим у меня есть один объект с кнопкой (к примеру oButton), и есть переменная (пусть будет selectedButton). И мне, чтобы не делать кучу объектов с кнопками (поскольку мне нужно много разных кнопок с разными действиями), нужно чтобы у меня был один объект и с помощью selectedButton я бы проверял идентификатор кнопки на которую я нажал.
И из этого выливается следующий вопрос. Как я могу сделать 10 кнопок в instance_create и задать каждой кнопке разный selectedButton при создании? А потом при нажатии проверить selectedButton кнопки, на которую я нажал и в зависимости от этого делать разные действия у кнопок.
Заранее спасибо!
|
|
| |
gameshulker | Дата: Четверг, 15 Апреля 2021, 22:57 | Сообщение # 3 | Тема: Отрисовка инвентаря по сетке |
был не раз
Сейчас нет на сайте
| Fire_Phoenix, окей, спасибо. Но у меня как всегда куча глупых вопросов, я сделал для примера изображение 24х8, с тремя иконками. В движке разбил в одном спрайте (название icons) это всё на 3 кадра по 8х8 пикселей, var frames_count = 3; var resourcesIco = sprite_add(icons, frames_count, 0, 0, 0, 0);
Вот тут почему-то отрисовка несуществующего спрайта (trying to draw non-exiting sprite) draw_sprite(resourcesIco, i, 5 + resourcesDrawCount * 10, 10); // спрайт с иконкой.
Но я ещё толком не копался, пока что буду думать.
А так, ты снова подкинул мысль. Теперь у вещей есть id, надо сделать табличку с id'шниками, и грамотно всё располагать в спрайте с иконками.
Исходя из справки fname - имя файла, а в файле должны быть спрайты в линию. С размером длину линии/кол-во спрайтов в линии. Я по сути разобрался в функции, но не понимаю как это применитьДобавлено (15 Апреля 2021, 23:35) --------------------------------------------- Fire_Phoenix, в очередной раз спасибо тебе большое! Почему ты не снимаешь туториалы/уроки? Я думаю тебя ждал бы успех в этом, на русском языке, тем более именно про новый GMS 2 нет ничего путёвого, только мануалы и видео переводить остаётся, хорошо что в английском я не совсем дубовый. Инвентарь то что надо, я уже давно рыл их, и ничего путёвого не нашёл почти. За месяц уже даже как-то дизмораль пошла. Я вот так и хотел, чтобы добавление вещей не было на миллиард строк кода, а тут я могу в массив добавить нужно значение и всё. Спасибо ещё раз!
Сообщение отредактировал gameshulker - Четверг, 15 Апреля 2021, 23:11 |
|
| |
gameshulker | Дата: Среда, 14 Апреля 2021, 16:26 | Сообщение # 4 | Тема: Отрисовка инвентаря по сетке |
был не раз
Сейчас нет на сайте
| Так, сначала спасибо заранее всем кто не пройдёт мимо.
Такой вопрос, у меня есть enum resources {}, в котором, очевидно вещи, количество которых изначально нулевое (к примеру gold = 0, iron = 0, diamond = 0 и т.д.). И в draw GUI я просто отрисовываю спрайт с иконкой(icoIron, icoGold и т.д.) нужного предмета и этот самый resources.diamond, resources.iron и так далее. Я хочу сделать так, чтобы отрисовывалось только то, что у меня есть и по порядку.
Вот как это есть сейчас: https://imgur.com/a/u47fJfA
Вот код который у меня есть
create: enum resources {iron = 0, gold = 0, wood = 0}
drawGUI: draw_text(10, 10, icoIron);draw_text(20, 10, icoGold); //И так для всех предметов draw_sprite(icoIron, -1, 5, 10);draw_sprite(icoGold, -1, 15, 10); //И так для всех предметов
|
|
| |
gameshulker | Дата: Понедельник, 29 Марта 2021, 21:59 | Сообщение # 5 | Тема: Переменная в которой объекты |
был не раз
Сейчас нет на сайте
| Так, есть у меня куча объектов(к примеру: objTree, objRock, objLog, objFurnace). И я уже храню их в родительском объекте objObjects. Но это всё не суть, суть в том, что хранить эти объекты в двух родительских объектах нельзя, родитель у объекта может быть только один. И мне нужно хранить некоторые объекты(например те, что выше) в переменной или как-то так, чтобы я вместо other мог юзать эту переменную. Всё началось с того, что мне нужно было чтоб действие происходило только на некоторой группе объектов, а не на всём other. То есть я хочу это использовать например в instance_position(mouse_x, mouse_y, и вместо other сделать эту переменную) и потом проверять: if эта самая переменная с объектами.image_xscale/image_angel/и так далее. Надеюсь понятно, я пытался в enum записать объекты, но не вышло, не стал гадать и сразу пришла идея обратиться к великим гениям форумчанам.
Говорю переменную потому-что знаю что можно в переменную записать choose(и тут перечислить объекты), типа Nature = choose(objTree, objRock, objLog), тогда в переменной будет рандомный объект. Но мне нужен не рандомный, а мои нужные мне объекты.
Вот немного кода, где я хочу использовать вместо other какую-то свою переменную с группой объектов: if mouse_check_button_pressed(mb_right) and instance_position(mouse_x ,mouse_y, other ) { other.dragged = true other.xx = x - mouse_x; other.yy = y - mouse_y; }
if mouse_check_button_released(mb_right) and instance_position(mouse_x ,mouse_y, other) { other.dragged = false }
if other.dragged = true { x = mouse_x + xx; y = mouse_y + yy; move_snap(24,24) }
Сообщение отредактировал gameshulker - Понедельник, 29 Марта 2021, 22:03 |
|
| |
gameshulker | Дата: Вторник, 23 Марта 2021, 11:27 | Сообщение # 6 | Тема: Курсор на спрайте |
был не раз
Сейчас нет на сайте
| Fire_Phoenix, спасибо, я попробую с этим шаманить, но, если тебе не сложно, то я так и не понял, почитав справку, что такое #define, и можно об return рассказать на пальцах, я буду безумно благодарен. А ещё, вместо "sprite" писать названия спрайтов моих кнопок, и для каждой кнопки проверять курсор отдельно? Я не так давно в GMS 2, я разобрался немного в массивах, циклах основных, но всё же непросто пока что это всё.
Вот, что такое спрайт? И что такое "drawn"?В #define компилятор тоже не понимает что такое sprite: https://imgur.com/HXu8LUU
Окей, остался чертов #define: https://imgur.com/R1OezRC
Ну как я понял, define это что-то типа функции. И вот что вышло, можно комментарии? https://imgur.com/a/vn1nISu
Теперь курсор пугает неизвестно что, но я уже ближе. https://imgur.com/GIw6OyB https://imgur.com/Euef1zJ Я пытаюсь подстроить чтобы было ровно, но получается что всё правильно, только съезжает вправо и вниз, как я мог бы это исправить?
Добавлено (23 Марта 2021, 19:53) ---------------------------------------------
Цитата Fire_Phoenix ( ) нужно добавить в функцию отрисовки (draw), чтобы сбросить drawList.
Аааа, дошло. Я весь день менял значения, и оказалось что я не внимательно прочитал. Я использую draw GUI, мне для интерфейса, как это можно адаптировать под DrawGUI? В событии draw работает как надоДобавлено (23 Марта 2021, 20:46) ---------------------------------------------
Цитата Fire_Phoenix ( ) Для проверки, находится ли курсор над отрисованным спрайтом: СПАСИБО ТЕБЕ ОГРОМНОЕ, это лучшая система нахождения спрайта под курсором, я думал что всё решу, когда по запросу GUI buttons gamemaker studio 2 нашёл кучу видео про кликабельный интерфейс, но оттуда я вовремя догадался взять позицию курсора относительно интерфейса: var _mouseX = device_mouse_x_to_gui(0); var _mouseY = device_mouse_y_to_gui(0); Я заменил mouse_x/y на мои переменные и всё заработало, это очень крутая система кнопок интерфейса, я теперь могу не проверять для каждой кнопки отдельно курсор, а находить разные параметры для каждой кнопки с помощью одного ряда твоих строк, спасибо ещё раз, ты очень помог, я несколько дней был в тупике.
Сообщение отредактировал gameshulker - Вторник, 23 Марта 2021, 20:31 |
|
| |
gameshulker | Дата: Понедельник, 22 Марта 2021, 19:42 | Сообщение # 7 | Тема: Курсор на спрайте |
был не раз
Сейчас нет на сайте
| При нажатии на кнопку, я в draw gui рисую спрайт фона для меню крафта, далее рисую в этом же draw gui иконки кнопок с вариантами крафта. То есть, 1 спрайт рисуется как фон, и рисуется много разных спрайтов кнопок (например кнопка крафта палки, камня, слитка и так далее). Мне нужно чтобы игра понимала на каком из спрайтов находится курсор, тот же самый position_meeting только не с объектом, а с draw_sprite.
Я мог бы делать это объектами, но мне нужно чтобы это было как интерфейс. Если я буду вместо отрисовки спрайтов создавать объект фона, объекты с кнопками крафта, то будет неудобно и они не будут прикрепляться к интерфейсу.
Очень странно что не добавили возможность проверять position_meeting у спрайтов, есть ли какие-то способы?
Вот как отрисовываются 2 спрайта кнопок + фон: https://imgur.com/0rdGOwt
Вот код отрисовки, где crGoldButton - спрайт кнопки крафта золотого слитка(iron - соответственно железного), FurnaceMenu - фон: https://imgur.com/t8zko1E
|
|
| |
gameshulker | Дата: Четверг, 18 Февраля 2021, 23:40 | Сообщение # 8 | Тема: Экземпляры в Game Maker Studio 2, объясните |
был не раз
Сейчас нет на сайте
| Цитата ДанилаСтержнев ( ) 10
В общем, не знаю правильно понял или нет, но В o_slime/create: globalvar current_id; current_id = id; globalvar slm_hp; slm_hp = 100;
В o_slime/step:
if slm_hp <= 0 { instance_destroy(current_id); }
В o_player/step: if keyboard_check_pressed(ord("C")) { instance_create_depth(mouse_x, mouse_y, 0, o_slime); }
if mouse_check_button_pressed(mb_left) and (point_distance(o_slime.x, o_slime.y, mouse_x, mouse_y) < 12) { slm_hp -= 10;
}
И это не работает, точнее работает некорректно, удаляется один враг(и не тот, на которого я кликал, а вроде бы тот, которого я создал первым) и всё, потом это не работает. И да я пробовал без глобализации переменных
Сообщение отредактировал gameshulker - Четверг, 18 Февраля 2021, 23:40 |
|
| |
gameshulker | Дата: Четверг, 18 Февраля 2021, 22:39 | Сообщение # 9 | Тема: Экземпляры в Game Maker Studio 2, объясните |
был не раз
Сейчас нет на сайте
| Цитата JAMPER ( ) gameshulker, в каком объекте и каком событии ты используешь этот код?
Так, 2 объекта на сцене: o_player, o_slime(он же враг). Переменные: slm_hp = 100(HP врага)
В o_player/step я написал что: if mouse_check_button_pressed(mb_left) { slm_hp -= 10 }
В o_slime/step я сделал следующее: if slm_hp <= 0 { instance_destroy(); }
Итог всего проделанного, хп отнимаются всем копиям врага(o_slime) на сцене, и соответственно удаляются тоже все экземпляры врага(o_slime). Надеюсь всё подробно, я хочу понять как отнимать, удалять и взаимодействовать с конкретным объектом, на который я нажал, а оно применяется ко всем копиям этого объекта.
|
|
| |
gameshulker | Дата: Четверг, 18 Февраля 2021, 10:56 | Сообщение # 10 | Тема: Экземпляры в Game Maker Studio 2, объясните |
был не раз
Сейчас нет на сайте
| Цитата faridunibodullo ( ) Наверное при нажатии мышки ты использовал mouse_global_left_pressed проверь, если да то используй mouse_left_pressed Нет, 2 объекта на сцене: o_slime, o_player. В o_slime: if mouse_check_button_pressed(mb_left) { instance_destroy(); }
Удаляются все экземпляры при нажатии, а мне нужно чтобы только тот, на который я нажал.
|
|
| |
gameshulker | Дата: Среда, 17 Февраля 2021, 17:58 | Сообщение # 11 | Тема: Экземпляры в Game Maker Studio 2, объясните |
был не раз
Сейчас нет на сайте
| Дело в том, что я хотел сделать убийство врагов. При нажатии мышкой на врага он удаляется, это сработало. Но, когда я добавил несколько врагов, при нажатии на одного из них, удалялись все враги. Я пытался мудрить с with, но ни к чему это не привело.
|
|
| |
|