Game Maker - создание игр | HellRoom Games
Апрель 30, 2025, 13:03:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Ссылки на события
  • Новый урок в школе GML: Апрель 17, 2011 - Апрель 20, 2011
Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Урок 3. Работа с изображениями.  (Прочитано 60506 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #30 : Апрель 12, 2016, 09:06:06 »

Не увидим, ибо при скорости в 0.3, например, кадр проскочится.
Это пара ифов, Гора, если включить моск и подумать больше пяти минут, всё решится.
Записан

В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях.

Hyperflex
Nonyx
Участник
****

Репутация: 15
Offline Offline

Пол: Мужской
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149


[Великий магистр наук индусского кода]


WWW
« Ответ #31 : Апрель 12, 2016, 09:21:10 »

А вот если в объекте спрайт с анимацией в 129 картинок. Как сделать, чтобы при создании проигрываились картинки с 7ой по 9ую?

Create:
Код:
image_index = 7;
image_speed = 0.1; // пожеланию

  Step:
Код:
if (image_index == 10) image_index = 7; // на экране увидим 7,8,9 кадр



О, спасибо, работает,  Уважуха

Добавлено: Апрель 12, 2016, 09:30:26
А вот если в объекте спрайт с анимацией в 129 картинок. Как сделать, чтобы при создании проигрываились картинки с 7ой по 9ую?

Create:
Код:
image_index = 7;
image_speed = 0.1; // пожеланию

  Step:
Код:
if (image_index == 10) image_index = 7; // на экране увидим 7,8,9 кадр


работает, только не могу понять по какому принципу angel whistling

Добавлено: Апрель 12, 2016, 09:39:25
Странно.
При image_xscale-=1 изображение "растет"
А вот при image_xscale=-1 движется как надо О.о
« Последнее редактирование: Апрель 12, 2016, 09:39:25 от GoraMora666 » Записан

DmitryDS
Потому что я такой-сякой
GM Pro user
*

Репутация: 159
Offline Offline

Награды:
За лояльность! [+150 репутации]1000 сообщений!За постоянность! [100 дней на форуме]
API: GameMaker Studio Master
Сообщений: 1061



WWW
« Ответ #32 : Апрель 12, 2016, 09:50:47 »

работает, только не могу понять по какому принципу angel whistling

Если посмотреть в справке в разделе Objects and Instances (Объекты и Экземпляры), то можно узнать, что image_index - это номер текущего кадра спрайта, а image_speed - величина, на которую этот номер возрастает каждый шаг.
Так что этот код говорит: при создании ставим 7 кадр и увеличиваем его номер на 0,1 каждый шаг; при шаге, если номер кадра - 10, то ставим опять 7.
Цитировать

Добавлено: Апрель 12, 2016, 09:39:25
Странно.
При image_xscale-=1 изображение "растет"
А вот при image_xscale=-1 движется как надо О.о

Может, потому что оператор "-=" отнимает значение ("+=" прибавляет, "*=" умножает, "/=" делит), а "=" - присваивает? (Раздел справки GML Overview, пункт assignment)
Записан

Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла
Nonyx
Участник
****

Репутация: 15
Offline Offline

Пол: Мужской
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149


[Великий магистр наук индусского кода]


WWW
« Ответ #33 : Апрель 13, 2016, 21:43:30 »

А вот если в объекте спрайт с анимацией в 129 картинок. Как сделать, чтобы при создании проигрываились картинки с 7ой по 9ую?

Create:
Код:
image_index = 7;
image_speed = 0.1; // пожеланию

  Step:
Код:
if (image_index == 10) image_index = 7; // на экране увидим 7,8,9 кадр


Слушай, а ты не знаешь как вот это вот привязать к клавише? а то у меня все 129 картинок воспроизводятся, вместо того, чтобы воспроизводились с 40ой по 50ую (отчет с нуля)
Записан

DmitryDS
Потому что я такой-сякой
GM Pro user
*

Репутация: 159
Offline Offline

Награды:
За лояльность! [+150 репутации]1000 сообщений!За постоянность! [100 дней на форуме]
API: GameMaker Studio Master
Сообщений: 1061



WWW
« Ответ #34 : Апрель 13, 2016, 21:49:24 »

Думаю, хорошим решением будет завести переменную с состоянием героя. При смене состояния ставить первый кадр из необходимой анимации, а в Step проверять, не наступил ли конец анимации текущего состояния.
Записан

Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла
Nonyx
Участник
****

Репутация: 15
Offline Offline

Пол: Мужской
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149


[Великий магистр наук индусского кода]


WWW
« Ответ #35 : Апрель 13, 2016, 21:57:03 »

Думаю, хорошим решением будет завести переменную с состоянием героя. При смене состояния ставить первый кадр из необходимой анимации, а в Step проверять, не наступил ли конец анимации текущего состояния.


типа разделить все движения не на картинки, а на спрайты?
Записан

DmitryDS
Потому что я такой-сякой
GM Pro user
*

Репутация: 159
Offline Offline

Награды:
За лояльность! [+150 репутации]1000 сообщений!За постоянность! [100 дней на форуме]
API: GameMaker Studio Master
Сообщений: 1061



WWW
« Ответ #36 : Апрель 13, 2016, 22:00:24 »

Типа завести отдельную переменную, от которой будет зависеть, какой кадр стартовый, а какой конечный, а дальше по примеру depict'а.
Записан

Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла
Nonyx
Участник
****

Репутация: 15
Offline Offline

Пол: Мужской
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149


[Великий магистр наук индусского кода]


WWW
« Ответ #37 : Апрель 13, 2016, 22:05:45 »

Типа завести отдельную переменную, от которой будет зависеть, какой кадр стартовый, а какой конечный, а дальше по примеру depict'а.

Всё, понял. Должно сработать.
Записан

Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #38 : Апрель 13, 2016, 22:10:44 »

Код:
if (image_index == 10) image_index = 7; // на экране увидим 7,8,9 кадр
Единственное, что нельзя проверять номер кадра через ==, если шаг дробный (тогда нужное значение может просто быть "перепрыгнуто").
Правильно будет:
Код:
if (image_index >= 10) image_index = 7;
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
Nonyx
Участник
****

Репутация: 15
Offline Offline

Пол: Мужской
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149


[Великий магистр наук индусского кода]


WWW
« Ответ #39 : Апрель 13, 2016, 22:26:55 »

Код:
if (image_index == 10) image_index = 7; // на экране увидим 7,8,9 кадр
Единственное, что нельзя проверять номер кадра через ==, если шаг дробный (тогда нужное значение может просто быть "перепрыгнуто").
Правильно будет:
Код:
if (image_index >= 10) image_index = 7;

сработало, плюс поставил за помощь, только вот чем это будет отличаться от "if (image_index>10) {image_index=7} ?
Записан

DmitryDS
Потому что я такой-сякой
GM Pro user
*

Репутация: 159
Offline Offline

Награды:
За лояльность! [+150 репутации]1000 сообщений!За постоянность! [100 дней на форуме]
API: GameMaker Studio Master
Сообщений: 1061



WWW
« Ответ #40 : Апрель 13, 2016, 22:31:23 »

Тем, что 10 кадр не влезет, если будет точно 10
Как вы, вероятно, помните, ">" - строго больше, ">=" - больше либо равно
Записан

Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла
Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #41 : Апрель 13, 2016, 22:34:25 »

чем это будет отличаться от "if (image_index>10) {image_index=7} ?
Это зависит от места, где и как прописан код.
В одном из случаев, «>=10» будет пропускать 10 кадр, а «>10» будет показывать 10 кадр.
А в каких-то случаях разницы не будет.
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
Nonyx
Участник
****

Репутация: 15
Offline Offline

Пол: Мужской
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149


[Великий магистр наук индусского кода]


WWW
« Ответ #42 : Апрель 13, 2016, 22:38:20 »

чем это будет отличаться от "if (image_index>10) {image_index=7} ?
Это зависит от места, где и как прописан код.
В одном из случаев, «>=10» будет пропускать 10 кадр, а «>10» будет показывать 10 кадр.
А в каких-то случаях разницы не будет.

понятно. спасибо

Добавлено: Апрель 13, 2016, 22:46:02
чем это будет отличаться от "if (image_index>10) {image_index=7} ?
Это зависит от места, где и как прописан код.
В одном из случаев, «>=10» будет пропускать 10 кадр, а «>10» будет показывать 10 кадр.
А в каких-то случаях разницы не будет.

Ого, даже к прыжку привязать получилось О.о
« Последнее редактирование: Апрель 13, 2016, 22:46:02 от GoraMora666 » Записан

Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #43 : Апрель 13, 2016, 22:54:33 »

Но вообще, куча разных анимаций в одном спрайте - не лучшее решение.
Например, если захочется добавить несколько новых кадров в анимации, то придётся менять значения в коде (и, возможно, что во многих местах). Кроме того, очень легко можно ошибиться.
Лучше сделать отдельные спрайты под каждую анимацию.
Кроме того, с разными спрайтами будет легче реализовывать проверки текущего состояния (if sprite_index == spr_walk { ... } и т.п.).
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
Christopher
mgflernGD
GM Pro user
*

Репутация: 99
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]500 сообщений!За постоянность! [10 дней на форуме]
API: Game Maker 7.0 Pro
Деятельность: Инди-разработчик
Сообщений: 713


DragonGameStudios


WWW
« Ответ #44 : Апрель 13, 2016, 23:35:19 »

Но вообще, куча разных анимаций в одном спрайте - не лучшее решение.
Например, если захочется добавить несколько новых кадров в анимации, то придётся менять значения в коде (и, возможно, что во многих местах). Кроме того, очень легко можно ошибиться.
Лучше сделать отдельные спрайты под каждую анимацию.
Кроме того, с разными спрайтами будет легче реализовывать проверки текущего состояния (if sprite_index == spr_walk { ... } и т.п.).
А еще лучше будет создавать переменную my_state=0, и задавать ее, когда меняется состояние\свойство\действие обьекта и вызывать конкретно это состояние при нажатии клавиш(удобно но тем, что можно комбинировать прыжок и еще что-нибудь, к примеру, но и подводные камни есть)
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.093 секунд. Запросов: 31.