Вопрос - Ответ (Game Maker)
| |
Anthem | Дата: Среда, 22 Апреля 2015, 15:51 | Сообщение # 5341 |
Д'Артаньян
Сейчас нет на сайте
| EfimovMax, только вверх, поэтому и отсчет от 0 влево и вправо
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
EfimovMax | Дата: Среда, 22 Апреля 2015, 16:28 | Сообщение # 5342 |
заслуженный участник
Сейчас нет на сайте
| Anthem, Код // Управление if keyboard_check(ord('A')) hspeed=-2 if keyboard_check(ord('D')) hspeed=2
// Поворот спрайта if hspeed < 0 { if image_angle <= 12 {image_angle += 2} } else if hspeed > 0 { if image_angle > -12 {image_angle -= 2} }
Вот набросал. Всё едет и поворачивает
ps Ты в своём коде забыл взять два условия if в скобки {} и я не совсем понял, зачем тебе нужны условия else.
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
Сообщение отредактировал EfimovMax - Среда, 22 Апреля 2015, 16:36 |
|
| |
Anthem | Дата: Среда, 22 Апреля 2015, 18:52 | Сообщение # 5343 |
Д'Артаньян
Сейчас нет на сайте
| EfimovMax, спасибо, вижу теперь косяк. Элс нужен, чтобы машина выпрямлялась, ехала прямо без нажатия
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
EfimovMax | Дата: Среда, 22 Апреля 2015, 20:34 | Сообщение # 5344 |
заслуженный участник
Сейчас нет на сайте
| Цитата Anthem ( ) EfimovMax, спасибо, вижу теперь косяк. Элс нужен, чтобы машина выпрямлялась, ехала прямо без нажатия Не нужно, поставь это условие Код if !keyboard_check(ord('A')) && !keyboard_check(ord('D')) { hspeed=0 image_angle=0 }
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
Сообщение отредактировал EfimovMax - Среда, 22 Апреля 2015, 20:35 |
|
| |
Anthem | Дата: Среда, 22 Апреля 2015, 22:26 | Сообщение # 5345 |
Д'Артаньян
Сейчас нет на сайте
| EfimovMax, я имею в виду, что в моем коде прописано плавное уменьшение угла, а у тебя машина резко возвращается в исходное положение. Спасибо, что подсказал со скобками, теперь все работает нормально, даже с элсами:) Могу задать другой вопрос. Ты делаешь мультиязычные игры? Пипл, как вы решаете вопрос с переключением языков? Я что-то уже подзадолбался. У меня все на спрайтах, но они не хотят меняться при смене языка
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
LunarPixel | Дата: Среда, 22 Апреля 2015, 23:35 | Сообщение # 5346 |
старожил
Сейчас нет на сайте
| Цитата Anthem ( ) Я что-то уже подзадолбался. У меня все на спрайтах, но они не хотят меняться при смене языка А в чем, собственно, проблема? Завел глобальную переменную, хранящую язык, и делай проверку, чему она равна, да рисуй нужный спрайт, в зависимости от ситуации.
Код if lang==1 {спрайт на русском} else {спрайт на английском} Если языков много, то можно через switch организовать.
Если анимаций нет, то просто в спрайт помещаешь кадры на разных языках и используешь переменную, хранящую язык, как номер кадра (при условии, что языки хранишь, как числа, 1-русский, 2-английский и т.д.).
Код draw_sprite(sprite_index,lang,x,y)
|
|
| |
Anthem | Дата: Среда, 22 Апреля 2015, 23:56 | Сообщение # 5347 |
Д'Артаньян
Сейчас нет на сайте
| Цитата LunarPixel ( ) А в чем, собственно, проблема? Проблема в том, что появилась навящивая идея, сделать все это за пределами Степа. Переменная меняется при нажатии на кнопку "Язык". Есть невидимый объект "Кнопки меню", в котором также меняется индекс кадра. Этот объект родительский для всех кнопок. Так вот в меню настроек все кнопки, включая Язык, меняют свои спрайты, а кнопки главного меню - нет. Может из-за того что они деактивированы в момент нажатия? Да, так и есть. Мог бы раньше прочитать... значит Или вообще все это бред и надо просто закинуть скрипт смены кадра каждой кнопке в Степ и на оптимизации это не скажется?
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
EfimovMax | Дата: Четверг, 23 Апреля 2015, 00:37 | Сообщение # 5348 |
заслуженный участник
Сейчас нет на сайте
| Цитата Anthem ( ) значит Или вообще все это бред и надо просто закинуть скрипт смены кадра каждой кнопке в Степ и на оптимизации это не скажется? Я бы не запаривался Простая конструкция if else не даст тебе хоть какого-либо проседания фпс.
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |
LunarPixel | Дата: Четверг, 23 Апреля 2015, 00:50 | Сообщение # 5349 |
старожил
Сейчас нет на сайте
| Anthem, если я тебя правильно понял, то в твоей ситуации не обязательно Степ использовать. У тебя же есть событие, при котором меню активируется, ставь туда же, после активации, и проверку языка, чтобы уже у активированного меню сменить индекс. Получается, проверка будет проходить один раз, только в момент появления меню.
Касательно же Степа и оптимизации, то, как уже выше заметили, видимых глазу ухудшений это не прибавит.
|
|
| |
Anthem | Дата: Четверг, 23 Апреля 2015, 01:08 | Сообщение # 5350 |
Д'Артаньян
Сейчас нет на сайте
| EfimovMax, LunarPixel, спасибо вновь за консультации!
Текстовый контент для вашей игры (бесплатно) Сценарист, геймдизайнер для Вашей игры
|
|
| |
hmpr | Дата: Пятница, 24 Апреля 2015, 11:59 | Сообщение # 5351 |
частый гость
Сейчас нет на сайте
| Здравствуйте. У меня нубский вопрос: зачем нужны скрипты в GM? В справке написано что по сути они ни чем не отличаются от кода событий объекта и еще где-то я вычитал, что скрипты выполняются на много медленней чем код событий, однако во многих примерах, которые я скачивал, скриптов понапихано туева хуча. Буду благодарен за разъяснение на понятном языке, в чем их преимущество и вообще...
|
|
| |
dima9595 | Дата: Пятница, 24 Апреля 2015, 12:27 | Сообщение # 5352 |
почти ветеран
Сейчас нет на сайте
| Цитата hmpr ( ) скрипты выполняются на много медленней чем код событий не совсем так...самописные функции, как я слышал, выполняются дольше, а те, которые есть в GML - они нормальные - стоит использовать их. Цитата hmpr ( ) зачем нужны скрипты в GM? Для облегчения работы, уменьшения так называемых "кнопочных событий". Создал файл - впихнул туево-кукуево кода и он тебе не мешает...просто подключаешь его где надо. А если делать всё с кнопками, то ты сам запутаешься в них. Надеюсь понятно объяснил)
|
|
| |
Ternox | Дата: Пятница, 24 Апреля 2015, 12:48 | Сообщение # 5353 |
Light my fire
Сейчас нет на сайте
| hmpr, как зачем? Чтобы не повторять постоянно одни и те же строки кода, можно для удобства запилить себе настраиваемые скрипты, или возвращать с помощью них нужную информацию.
Ternoxgames.com. Разрабатывают игры и выпускаю их на консолях.
|
|
| |
hmpr | Дата: Понедельник, 27 Апреля 2015, 01:14 | Сообщение # 5354 |
частый гость
Сейчас нет на сайте
| dima9595, Ternox, и все? В таком случае можно же и без скриптов обойтись вполне... или нет?
|
|
| |
EfimovMax | Дата: Понедельник, 27 Апреля 2015, 02:31 | Сообщение # 5355 |
заслуженный участник
Сейчас нет на сайте
| Цитата hmpr ( ) и все? В таком случае можно же и без скриптов обойтись вполне... или нет? Можно и обойтись. Но давай представим ситуацию - у тебя рпг-игра. Есть инвентарь, и есть предметы. Каждый тип предмета - это отдельный объект (objSwords, objDaggers, objPotions, objHelms и т.д.). Естественно, чтобы их, к примеру, можно было подбирать, тебе нужно для каждого объекта писать одинаковый код (изменения в переменных, замена спрайтов, новые параметры самих объектов и т.д.). Ладно, можно просто копировать-вставить. Но тут вдруг нужно поменять какие-то значения/строку в этом коде. Открываем каждый объект и меняем. Не удобно, правда? А вот если напишем скрипт для подбора, то нам нужно будет в каждый объект засунуть только одну строку (вызов скрипта). И с редактированием не возникнет никаких проблем. Удобно ведь? Так если у нас есть возможность написать более красивый и менее объёмный код, да ещё и с понятным редактированием, то почему бы не воспользоваться?
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
Сообщение отредактировал EfimovMax - Понедельник, 27 Апреля 2015, 13:51 |
|
| |
Fill_Freeman | Дата: Понедельник, 27 Апреля 2015, 13:48 | Сообщение # 5356 |
почетный гость
Сейчас нет на сайте
| hmpr, В дополнение к тому, что написал EfimovMax распиши ситуацию вскользь замечененную Ternox.
Допустим у тебя много разных видов стрел (ядовитые, простые, огненные и проч). У них разный урон. А еще есть много разных врагов. Для того чтобы узнавать, а сколько же ты нанес урона. Тебе пришлось бы создавать кучу событий. Collusion каждого врага с каждой стрелой. В итоге у тебя получается огромное кол-во событий, в которых кто-угодно наделает столько ошибок, что хоть вешайся.
Используя скрипты ты можешь сделать одно событие когда родительский объект врага сралкивается с родительским объектом стрел. В этом собитии ты вызываешь скрипт, передовая какие именно объекты сталкиваются. А сам скрипт, например, возвращает сколько хитпоинтов было снесено у врага. В итоге очень удобный и легко обслуживаемый код.
|
|
| |
hmpr | Дата: Понедельник, 27 Апреля 2015, 16:42 | Сообщение # 5357 |
частый гость
Сейчас нет на сайте
| EfimovMax, Fill_Freeman, Спасибо. Вроде стало понятно. А что такое аргумент?
|
|
| |
Fill_Freeman | Дата: Понедельник, 27 Апреля 2015, 20:57 | Сообщение # 5358 |
почетный гость
Сейчас нет на сайте
| Цитата hmpr ( ) А что такое аргумент?
Это параметр, который передается в функцию. За подробностями надо учить мат часть, начать например на вики. Если вкратце, то если например сделать скрипт (а в других языках, функцию), который складывает два числа, то сам скрипт будет выглядеть вот так:
script: return argument0 + argument1;
argument0 и argument1 - это некие аргументы, которые каждый раз будут разные. А return возвращает результат их сложения. В итоге когда ты пишешь
A = script(1,2), то A здесь равно 3. 1 будет argument0, 2 - argumment1. Потому что 1 - первое в списке, а 2 - второе.
В общем, читай основы программирования...
|
|
| |
hmpr | Дата: Вторник, 28 Апреля 2015, 20:10 | Сообщение # 5359 |
частый гость
Сейчас нет на сайте
| Fill_Freeman, огромное спасибо
|
|
| |
hako | Дата: Суббота, 02 Мая 2015, 02:27 | Сообщение # 5360 |
был не раз
Сейчас нет на сайте
| Всем привет! Нужна помощь в написании скрипта, так как я совсем зеленый, то своими силами сколько ни пытался, ничего не выходит Нужно чтобы персонаж objHero при столкновение с объектом objPer (нетвердый, невидимый) и при нажатии клавиши вверх, переходил в комнату roomDom..т.е только если оба условия верны. Пытался запихнуть код if keyboard_check(vk_up) and collision_line( 0, y, 80, y, objPer, false, true) { room_goto(roomDom) } Ничего... Пытался так - затолкал этот код в событие столкновения с objPer if keyboard_check(vk_up) { room_goto(roomDom) } Тишина...вернее при столкновение сразу переходит в другую комнату, а нужно чтобы при нажатии клавиши. И вот так пробовал...в событие нажатии клавиши Вверх if collision_line( 0, y, 80, y, objPer, false, true) { room_goto(roomDom) } так она в любой части уровня переходит в след комнату Вообщем, очень надеюсь на помощь, спасибо!
Никто о том не покрушится, И будут (я уверен в том) О смерти больше веселится, Чем о рождении моем…
|
|
| |
|