Пятница, 14 Мая 2021, 15:42

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Художник пытается освоить GML
kasheyДата: Пятница, 30 Марта 2012, 13:39 | Сообщение # 301
постоянный участник
Сейчас нет на сайте
Это скорее всего дефолтная цветовая модель HSB, от того и синий.
FerrumelДата: Пятница, 30 Марта 2012, 13:50 | Сообщение # 302
почти ветеран
Сейчас нет на сайте
kashey, Не по HSB должно 0 100 100 для красного быть, HSB вроде как по процентам считается. Это даже не LAB. Здесь действительно Blue Green Red все вывернуто.

все серо и пусто
kasheyДата: Пятница, 30 Марта 2012, 14:13 | Сообщение # 303
постоянный участник
Сейчас нет на сайте
Quote (Ferrumel)
kashey, Не по HSB должно 0 100 100 для красного быть, HSB вроде как по процентам считается. Это даже не LAB. Здесь действительно Blue Green Red все вывернуто.

ff равно 255, 00 - 0 в десятичной системе. Поскольку H (цветовой тон) считывается первым (ff - 255), а остальные значения имеют максимум (от 0 до 1, от 0 до 100%), можно предположить что это все таки HSB, с учетом того, что гм принимает значения яркости и контрастности в обратном порядке (0 это 100 а 1 это 0).
FerrumelДата: Пятница, 30 Марта 2012, 15:57 | Сообщение # 304
почти ветеран
Сейчас нет на сайте
kashey, Не не не, я поэкспериментировал с подобной конструкцией. draw_set_color($FF0000);
Она отображает цвет зеркально, то есть если написать (0000FF) то получим искомый красный, хотя это на самом деле индекс синего, так же и с другими цветами. Здесь просто пары у них вывернуты. Первая пара обозначает blue, вторая green, третья red, хотя должно быть наоборот. Таким образом мы наблюдаем лаг самой функции, просто недоработка программистов GML, В целом с учетом перевернутости работать можно, только проще в этом случае писать вот так
draw_set_color(make_color_rgb(red,green,blue)), здесь у них уже все правильно, то есть голову забивать себе не нужно.


все серо и пусто
kasheyДата: Пятница, 30 Марта 2012, 18:57 | Сообщение # 305
постоянный участник
Сейчас нет на сайте
И правда... Эх, а какая элегантная была теория smile
FerrumelДата: Понедельник, 02 Апреля 2012, 13:32 | Сообщение # 306
почти ветеран
Сейчас нет на сайте
Решил изучить арканоид как игру. Есть множество исходников и примеров, это все хорошо и интересно, но имеем одно но!
Это битка. Мячик во всех исходниках и примерах движется по зубодробительно предсказуемой траектории, то есть стукнувшись о битку например летит на 45 градусов вправо, соответственно стукнувшись снова он полетит на 45 градусов влево, попадаются также моменты когда он попадает таким образом что начинает лететь вертикально вверх и тут можно спокойно выходить из игры, так как мяч будет все время отбиваться только вертикально вверх. В целом вся игра сводится к тому чтобы подставлять в нужный момент битку под мячик, затем медитативно наблюдать как он в сотый раз облетает комнату по все той же траектории. Это все изъян функции action_bounce(true,true);.

На самом деле в классическом арканоиде игрок сам управляет траекторией мячика, а точнее подставляет битку специальным образом чтобы мяч отражался в нужную сторону суть сводится к чему:

Попадая на край битки, мячик отражается в ту сторону, в какой край он попал, и чем ближе к краю попадение, тем меньше угол отскока мячика относительно битки.

Я хреновый программист, примерно представляю, что здесь расписывается большая портянка кода с использованием наверное тригонометрии. Не знаю даже с какого бока к решению этой проблемы подойти.
Поможите кто чем может cry


все серо и пусто
LunarPixelДата: Понедельник, 02 Апреля 2012, 13:42 | Сообщение # 307
старожил
Сейчас нет на сайте
Можно просто при ударе мяча об биту проверять расстояние от мяча до центра биты, и установить зависимость угла отражения от этого расстояния.
Сейчас пример сделать не могу, к вечеру сделаю, если ещё надо будет, но в общем то, ничего там сложного нет. smile


FerrumelДата: Понедельник, 02 Апреля 2012, 14:07 | Сообщение # 308
почти ветеран
Сейчас нет на сайте
Quote
Можно просто при ударе мяча об биту проверять расстояние от мяча до центра биты, и установить зависимость угла отражения от этого расстояния.

Ага легко! По причине своей клинической тупости через всего три дня жестокого мозгоштурма (а точнее тупого подбора функций и значений) я смогу выдать громоздкую лагованую конструкцию. При етом загажу всю эту тему тупейшими вопросами

Quote
ничего там сложного нет.

Edem des seine sad


все серо и пусто
LunarPixelДата: Понедельник, 02 Апреля 2012, 14:40 | Сообщение # 309
старожил
Сейчас нет на сайте
Ну вот например: http://rghost.ru/37366117

Как, наверно, самое простое решение. Там уже можно под себя настроить как нужно, формулу выдумать какую нибудь. smile


LunarPixelДата: Понедельник, 02 Апреля 2012, 14:42 | Сообщение # 310
старожил
Сейчас нет на сайте
Всё настраивается в столкновении шара с битой.
Моя "формула", конечно, совсем не универсальна, так что её переписать желательно. Можно сделать расчет через проценты, тогда все будет нормально. smile


FerrumelДата: Понедельник, 02 Апреля 2012, 18:28 | Сообщение # 311
почти ветеран
Сейчас нет на сайте
LunarPixel, Ага спасибо, как то через пень колоду становится несколько понятней. Все равно посмотрел на этот кусок кода глазами полного идиота.
Попытался поиграть с циферками, чтобы углы сильнее закладывались при столкновении. Что то не получается. Сейчас буду плотнее заниматься.

Добавлено (02.04.2012, 15:10)
---------------------------------------------
Все! Нашел оптимум!
if x>other.x
direction=60-distance_to_point(other.x, other.y)

if x<other.x
direction=120+distance_to_point(other.x, other.y)

if x=other.x
direction=88

Добавлено (02.04.2012, 18:28)
---------------------------------------------
Опять головоломка. Как закончить комнату, если все кирпичи (объекты) в ней уничтожены? Просто не знаю по какой функции проводить проверку.
Все усугубляется еще тем что имеется куча различных кирпичей (объектов) и условие окончание комнаты, что все что можно там раздолбано.


все серо и пусто
EshfordДата: Понедельник, 02 Апреля 2012, 18:39 | Сообщение # 312
Богиня Гамака ♥
Сейчас нет на сайте
Quote (Ferrumel)
Опять головоломка. Как закончить комнату, если все кирпичи (объекты) в ней уничтожены? Просто не знаю по какой функции проводить проверку.
Все усугубляется еще тем что имеется куча различных кирпичей (объектов) и условие окончание комнаты, что все что можно там раздолбано.

Создай родительный объект для всех кирпичей и уже проверяй с ним: if instance_number(obj_block_papa)=0 {room_goto_next()}
где instance_number - проверяет количество заданных объектов в комнате и если равно истине, то выполняется некое действие!


Сообщение отредактировал Alexis-63 - Понедельник, 02 Апреля 2012, 18:41
FerrumelДата: Понедельник, 02 Апреля 2012, 18:46 | Сообщение # 313
почти ветеран
Сейчас нет на сайте
Alexis-63,
Родительский объект, в чем его глубокая суть? Каким образом он создается? Где вообще про это почитать можно? Как он вообще привязывается к объектам?


все серо и пусто
EshfordДата: Понедельник, 02 Апреля 2012, 18:53 | Сообщение # 314
Богиня Гамака ♥
Сейчас нет на сайте
Ferrumel, Допустим у тебя в игре есть масса чем-то схожих объектов. Допустим такими объектами будут кирпичи и их у тебя достаточно много. Тогда, например, если тебе потребуется разом их удалить, то вместо того, чтобы удалять каждый по отдельности (представь какой это геморой удалять допустим 150 кирпичей) можно создать один объект - родитель, объединяющий все кирпичи и удалять лишь его.
Объясню подробнее:
Имеем три кирпича: ob_block_blue; ob_block_green; ob_block_red
Для того, чтобы разом их удалить мы создадим ob_block_papa и зададим каждому кирпичу этого родителя

После этого чтобы удалить все кирпичи мы будем использовать: with(ob_block_papa) {instance_destroy()}
И да, родительские объекты в комнату ставить не обязательно!

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

Насчет почитать, даже не знаю. Я научился этому копаясь в исходниках! biggrin


Сообщение отредактировал Alexis-63 - Понедельник, 02 Апреля 2012, 19:24
FerrumelДата: Понедельник, 02 Апреля 2012, 19:28 | Сообщение # 315
почти ветеран
Сейчас нет на сайте
Alexis-63, Спасибо, в принципе понятно. А задавать родителя в свойствах объекта я так понял, где то видел это там.
Quote
Насчет почитать, даже не знаю. Я научился этому копаясь в исходниках!

Исходники тоже сгодились бы))) Имею их кучу, но в основном там одни базовые моменты. Суть родитель-подчиненный, нигде не встречал и не были нужны. Это вроде относится не только к гмл, а еще и к базовым основам программирования если не ошибаюсь. А я дуб дубом, все приходится на своем опыте раскрывать, да тут на форуме узнавать.


все серо и пусто
EshfordДата: Понедельник, 02 Апреля 2012, 19:34 | Сообщение # 316
Богиня Гамака ♥
Сейчас нет на сайте
Ferrumel, Да, задавай родителя в свойствах объекта.
Вот, сделал для тебя исходник, показывающий суть родительских объектов. В объекте ob_block_papa задано движение по оси y, а остальным объектам задан сей родитель. В итоге получаем, что за место трех строчек кода написали лишь одну и движутся все объекты.
Исходник - Пример применения объектов-родителей
FerrumelДата: Понедельник, 02 Апреля 2012, 19:40 | Сообщение # 317
почти ветеран
Сейчас нет на сайте
Alexis-63, ооо это будет совсем шоколадно))
ps а красиво я вам рейтинг поднял))


все серо и пусто
EshfordДата: Понедельник, 02 Апреля 2012, 19:43 | Сообщение # 318
Богиня Гамака ♥
Сейчас нет на сайте


Надеюсь ты понял как сделать переход на следующий уровень, если все кирпичи уничтожены через родителя?
FerrumelДата: Вторник, 03 Апреля 2012, 13:27 | Сообщение # 319
почти ветеран
Сейчас нет на сайте
Alexis-63, Ага, все понял, заработало. Жаль раньше такого не знал. Такие громоздкие конструкции с глобальными переменными сооружал, просто ужас.

Добавлено (03.04.2012, 13:27)
---------------------------------------------
Народ, есть у кого нибудь исходники и примеры работы с частицами? Поделитесь если не лень))


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

Сообщение отредактировал Ferrumel - Вторник, 03 Апреля 2012, 12:48
GameMixДата: Вторник, 03 Апреля 2012, 13:52 | Сообщение # 320
старожил
Сейчас нет на сайте
Ferrumel, программа ParticleDesigner не сойдёт?

Steel Standoff - 2D аркада.
Мои статьи
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Поиск:

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