Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](https://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](https://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #30 : Апрель 12, 2016, 09:06:06 » |
|
Не увидим, ибо при скорости в 0.3, например, кадр проскочится. Это пара ифов, Гора, если включить моск и подумать больше пяти минут, всё решится.
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Nonyx
Участник
  
Репутация: 15
Offline
Пол: 
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149
[Великий магистр наук индусского кода]
|
 |
« Ответ #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 кадр
работает, только не могу понять по какому принципу  Добавлено: Апрель 12, 2016, 09:39:25 Странно. При image_xscale-=1 изображение "растет" А вот при image_xscale=-1 движется как надо О.о
|
|
« Последнее редактирование: Апрель 12, 2016, 09:39:25 от GoraMora666 »
|
Записан
|
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #32 : Апрель 12, 2016, 09:50:47 » |
|
работает, только не могу понять по какому принципу  Если посмотреть в справке в разделе 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
Пол: 
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149
[Великий магистр наук индусского кода]
|
 |
« Ответ #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Награды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #34 : Апрель 13, 2016, 21:49:24 » |
|
Думаю, хорошим решением будет завести переменную с состоянием героя. При смене состояния ставить первый кадр из необходимой анимации, а в Step проверять, не наступил ли конец анимации текущего состояния.
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Nonyx
Участник
  
Репутация: 15
Offline
Пол: 
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149
[Великий магистр наук индусского кода]
|
 |
« Ответ #35 : Апрель 13, 2016, 21:57:03 » |
|
Думаю, хорошим решением будет завести переменную с состоянием героя. При смене состояния ставить первый кадр из необходимой анимации, а в Step проверять, не наступил ли конец анимации текущего состояния.
типа разделить все движения не на картинки, а на спрайты?
|
|
|
Записан
|
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #36 : Апрель 13, 2016, 22:00:24 » |
|
Типа завести отдельную переменную, от которой будет зависеть, какой кадр стартовый, а какой конечный, а дальше по примеру depict'а.
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Nonyx
Участник
  
Репутация: 15
Offline
Пол: 
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149
[Великий магистр наук индусского кода]
|
 |
« Ответ #37 : Апрель 13, 2016, 22:05:45 » |
|
Типа завести отдельную переменную, от которой будет зависеть, какой кадр стартовый, а какой конечный, а дальше по примеру depict'а.
Всё, понял. Должно сработать.
|
|
|
Записан
|
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](https://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #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
Пол: 
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149
[Великий магистр наук индусского кода]
|
 |
« Ответ #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Награды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](https://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](https://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #40 : Апрель 13, 2016, 22:31:23 » |
|
Тем, что 10 кадр не влезет, если будет точно 10 Как вы, вероятно, помните, ">" - строго больше, ">=" - больше либо равно
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](https://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #41 : Апрель 13, 2016, 22:34:25 » |
|
чем это будет отличаться от "if (image_index>10) {image_index=7} ? Это зависит от места, где и как прописан код. В одном из случаев, «>=10» будет пропускать 10 кадр, а «>10» будет показывать 10 кадр. А в каких-то случаях разницы не будет.
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
Nonyx
Участник
  
Репутация: 15
Offline
Пол: 
API: Game Maker 6.1
Деятельность: Познающий мир игростроя
Сообщений: 149
[Великий магистр наук индусского кода]
|
 |
« Ответ #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
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](https://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #43 : Апрель 13, 2016, 22:54:33 » |
|
Но вообще, куча разных анимаций в одном спрайте - не лучшее решение. Например, если захочется добавить несколько новых кадров в анимации, то придётся менять значения в коде (и, возможно, что во многих местах). Кроме того, очень легко можно ошибиться. Лучше сделать отдельные спрайты под каждую анимацию. Кроме того, с разными спрайтами будет легче реализовывать проверки текущего состояния (if sprite_index == spr_walk { ... } и т.п.).
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
Christopher
mgflernGD
GM Pro user
Репутация: 99
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](https://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)  ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](https://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: Game Maker 7.0 Pro
Деятельность: Инди-разработчик
Сообщений: 713
DragonGameStudios
|
 |
« Ответ #44 : Апрель 13, 2016, 23:35:19 » |
|
Но вообще, куча разных анимаций в одном спрайте - не лучшее решение. Например, если захочется добавить несколько новых кадров в анимации, то придётся менять значения в коде (и, возможно, что во многих местах). Кроме того, очень легко можно ошибиться. Лучше сделать отдельные спрайты под каждую анимацию. Кроме того, с разными спрайтами будет легче реализовывать проверки текущего состояния (if sprite_index == spr_walk { ... } и т.п.).
А еще лучше будет создавать переменную my_state=0, и задавать ее, когда меняется состояние\свойство\действие обьекта и вызывать конкретно это состояние при нажатии клавиш(удобно но тем, что можно комбинировать прыжок и еще что-нибудь, к примеру, но и подводные камни есть)
|
|
|
Записан
|
|
|
|
|