| Смена скина в платформере | 
|  | 
| 
| lsdstyle | Дата: Суббота, 04 Февраля 2012, 16:11 | Сообщение # 1 |  | частый гость Сейчас нет на сайте | Здравствуйте форумчане! Возникла проблема, делаю свой платформер. Решил сделать магазин, в котором можно покупать скины для гл. героя.
 Все скины нарисовал, уже сделал так, чтобы скин менялся. НО, когда он меняет скин, при передвежении (кроме прыжка) он меняет исходный скин.
 |  |  |  |  | 
| 
| Spider_System | Дата: Суббота, 04 Февраля 2012, 16:16 | Сообщение # 2 |  | Злой прогер-пьяница Сейчас нет на сайте | lsdstyle, о, боже. У тебя что ли анимы передвижения все в разных спрайтах?
 
 Маньяк. Убийца. Социопат. Анархист.
 Мой проект:
 Spider System
 Исходники Spider System
 |  |  |  |  | 
| 
| Palmar | Дата: Суббота, 04 Февраля 2012, 16:16 | Сообщение # 3 |  |   Pλlmar Games Сейчас нет на сайте | Сделай для каждого скина свою анимацию бега , прыжка , и т.д. 
 
   |  |  |  |  | 
| 
| lsdstyle | Дата: Суббота, 04 Февраля 2012, 16:20 | Сообщение # 4 |  | частый гость Сейчас нет на сайте | У меня всё это сделано! Я же говорю, я перерисовал 8 скинов.
 и у них есть анимации, но я не знаю что дальше делать. Я сделал чекпоинт, на него заходиш и меняеш цвет, с него уходиш и цвет исходный встаёт. НО, у гл. героя стандартный скин по началу стоит, и это конфликтует с другими скинами. Мне надо сделать так, чтобы стандартный скин убрать из А и D key, и тогда всё будет работать. Но блин, я не знаю как сделать чтобы спрайты ставить других скинов сразу. Я просто уже запутался в этом..
 Я еле понимаю что я пишу щас D:
 |  |  |  |  | 
| 
| LunarPixel | Дата: Суббота, 04 Февраля 2012, 16:31 | Сообщение # 5 |  |   старожил Сейчас нет на сайте | Ну так при нажатии на A и D у тебя ведь прописана смена спрайта, вот он у тебя и меняется на тот, который там указан. Создай переменную skin=0 и там, где у тебя прописана смена спрайтов поставь условие:
 if skin=0
 sprite_index=sprite1
 if skin=1
 sprite_index=sprite1
 и т.д.
 Лучше через switch
 
 Таким образом для смены скина, нужно изменить значение переменной skin.
 
 
   
 
 Сообщение отредактировал LunarPixel - Суббота, 04 Февраля 2012, 16:31 |  |  |  |  | 
| 
| gin101 | Дата: Суббота, 04 Февраля 2012, 18:06 | Сообщение # 6 |  | частый гость Сейчас нет на сайте | Quote (LunarPixel) if skin=0 sprite_index=sprite1
 if skin=1
 sprite_index=sprite1
 и т.д.
 Лучше через switch
 а еще лучше сделать массив
 например:
 sk=0
 skin[0,0]=s_walk_left
 skin[0,1]=s_walk_right
 skin[0,2]=s_jump
 
 skin[1,0]=s_walk_left_red
 skin[1,1]=s_walk_right_red
 skin[1,2]=s_jump_red
 
 if keyboard_check(vk_left)
 sprite_index=skin[sk,0]
 if keyboard_check(vk_right)
 sprite_index=skin[sk,1]
 if keyboard_check(vk_up)
 sprite_index=skin[sk,2]
 |  |  |  |  | 
| 
| lsdstyle | Дата: Понедельник, 06 Февраля 2012, 09:32 | Сообщение # 7 |  | частый гость Сейчас нет на сайте | Так, мне ... Я думаю, больше вариант от qin101 понравился... У меня сис-ма управления и снов взята с "Желейки" Получаеться,
 sk=0 это что?
 skin[0,0]s_walk_left <- первый ноль что означает?
 |  |  |  |  | 
| 
| Robin-Locksley | Дата: Понедельник, 06 Февраля 2012, 09:54 | Сообщение # 8 |  |   постоянный участник Сейчас нет на сайте | Quote (lsdstyle) sk=0 это что? Это номер скина по идее. Изменяя переменную с 0 на 1 мы переключаемся между двумя скинами.
 
 Quote (lsdstyle) skin[0,0]s_walk_left <- первый ноль что означает? В двумерном массиве можно сказать что первый индекс это номер столбца, второй - номер стоки, если представлять его как таблицу. В твоем случае это порядковый номер скина. Первый будет 0, второй - 1 и т.д.
 
 GameMaker Easy Menu
 |  |  |  |  | 
| 
| gin101 | Дата: Понедельник, 06 Февраля 2012, 10:13 | Сообщение # 9 |  | частый гость Сейчас нет на сайте | sk это переменная обозначает какой скин выбран а первый ноль это номер скина
 вот пример чтобы понятнее было http://rghost.ru/36366611
 
 Добавлено (06.02.2012, 10:13)
 ---------------------------------------------
 меня уже опередили пока пример делал
   
 
 Сообщение отредактировал gin101 - Понедельник, 06 Февраля 2012, 10:16 |  |  |  |  | 
| 
| LunarPixel | Дата: Понедельник, 06 Февраля 2012, 10:16 | Сообщение # 10 |  |   старожил Сейчас нет на сайте | Можно ещё сделать так: Переименовать все спрайты в разных скинах по следующему принципу s_walk_left1, s_walk_left2, s_walk_left3 и т.д. где число - это номер скина.
 Потом завести переменную skin='1'
 
 Ну а везде, где меняется спрайт, написать:
 
 Code execute_string('sprite_index=s_walk_left'+s) 
 Ну а потом просто менять переменную skin на нужное значение. По коду в разы меньше получается.
   
 
   |  |  |  |  | 
|  | 
| 
| lsdstyle | Дата: Среда, 08 Февраля 2012, 16:10 | Сообщение # 12 |  | частый гость Сейчас нет на сайте | Спасибо посоны   
 Добавлено (08.02.2012, 16:10)
 ---------------------------------------------
 Слушайте, что-то у меня не получается \:
 Делал по примеру qin101, я сделал всё как надо, сделал отдельный обьект, у него создал: При столкновении с Игроком делаем sk=1
 Пробовал менять, сделал по примеру.
 У меня щас получается так:
 Управление полностью с Желейки.
 А для смены цвета я сделал так:
 Создал спрайт опред. цвета, у него написал в Create: sk=1 ( пробовал менять )
 Запускаю игру, бегу на этот куб, запрыгиваю, цвет меняет, убегаю, цвет скидывается \:
 Добавлено (08.02.2012, 16:12)
 А можно сделать по принцыпу смены цвета просто?
 Ну например, добовляеш Color Sprite и цвет который надо, и всё, у тебя он остаёться.
 Можно сделать так-же только со сменой спрайта?
 
 
 Сообщение отредактировал lsdstyle - Среда, 08 Февраля 2012, 16:13 |  |  |  |  |