Как совместить анимацию и изменения положения по оси? То есть, ты ,допустим, идешь вверх ,и проигрывается анимация ходьбы. Я как пробовал сделать перемещение из 1 урока и анимацию ,от сайта codgames ,но он только перемещался по осям без анимации. Надеюсь увидеть это в уроках, в скорем времени, или хотя бы в ответе.
Сообщение отредактировал S@im@N - Понедельник, 15.07.2013, 23:08
n=0--"счетчик кадров" x=0--"положение картинки по оси OX" y=0--"положение картинки по оси OY"
Далее мы приступим непосредственно к анимации:
while true do screen:clear() pad=Controls.read()
--"изменение координат картинки" if pad:up() then y=y-1 end if pad:down() then y=y+1 end if pad:left() then x=x-1 end if pad:right() then x=x+1 end
--"и в зависимости от значений n- выводим нужное нам изображение на экран ПО ИЗМЕНЯЮЩИМСЯ В ХОДЕ ПЕРЕМЕЩЕНИЯ координатам X и Y"
if n>=0 and n<10 then screen:blit(x,y,Kartinka1) elseif n>=10 and n<20 then screen:blit(x,y,Kartinka2) elseif n>=20 and n<30 then screen:blit(x,y,Kartinka3) elseif n>=30 and n<40 then screen:blit(x,y,Kartinka4) elseif n>=40 and n<50 then screen:blit(x,y,Kartinka5) end
n=n+1--"постоянно накручиваем счетчик" if n>=50 thenn=0--"для циклического повтора анимации обнуляем счетчик кадров" end
Добавлено (16.07.2013, 17:24) --------------------------------------------- Еще один вопрос, как вывести изображение с альфа каналом ,а то ,когда я его выгружаю на экран, оно то ли черное ,то ли его вообще нет. 2. Как сделать изображение ,что бы оно было на заднем плане.
Сообщение отредактировал S@im@N - Вторник, 16.07.2013, 19:33
S@im@N, 1)По умолчанию alpha канал,если он есть - ставится автоматически. А то что вы принимаете за черный экран, скорее всего отсутствие screen:flip() в вашем коде, либо иные недочеты, например вывод изображения вне цикла while true do 2)Изображение на заднем плане ни чем не отличается от всех прочих, просто его вывод, а это я напомню screen:blit(), должен стоять в коде строчкой ранее до вывода тех изображений, которые идут поверх него - так и осуществляется наложение изображений. Ну и разумеется вся эта бадья должна быть в цикле while true do и стоять после screen:clear() но до screen:flip() Удачи
Добавлено (17.07.2013, 13:15) --------------------------------------------- Я наверное уже надоел своими вопросами, но как сделать объект через который не мог бы пройти ГГ. И как эмитировать прыжки ,допустим в платформере с видом сбоку.
S@im@N, Отнюдь - это моя работа, как админа и автора уроков 1) Предположим объектом будет горизонтальная, пускай не видимая линия. Так вот, чтобы не дать персонажу опуститься ниже неё - достаточно просто казать это в условии, которое я писал ранее if pad:down() and y<100 then y=y+1 end Как видите, накручивать y мы можем только до тех пор, пока он меньше чем 100 Так же можно создать и горизонтальную линию if pad:right() and x<200 then x=x+1 end Теперь мы вправо не сдвинемся более чем на 200 пикселей Остальные объекты: треугольники, круги, элипсы - описывайте формулами, пользуясь навыками геометрии Более того, совсем не обязательно делать проверку на координаты прямо при нажатии кнопки. Это можно сделать и ниже if pad:right() then x=x+1 end if x>200 then--"если мы вышли за пределы линии" x=oldx--"откатваем x до старого значения" end oldx=x--"каждый раз копируем текущее значение, которое может стать в любой момент старым"
2) Эмитация прыжка дело совсем не хитрое, если не использовать физику. Заведите любую переменную которая будет сигнализировать вам о том, что вы активировали прыжок, активация будет производиться при нажатии кнопки, скажем так До while true do влепите priz=0, а сразу после screen:flip() влепите oldpad=pad - это пригодиться для запоминания состояния клавишь, дабы не зацикливать нажатие,т.е. сделать его однократным. if pad:cross() and oldpad:cross()~=pad:cross() then priz=1 end Далее уже работаете со своей переменной, сигнализирующей вам о том, что вы активировали прыжок if priz==1 then--"если активировал - прыгаем" if y>0 then--"чтобы не улететь за пределы экрана" y=y-1--"поднимаемся" else priz=0--"когда поднялись до предела экрана, отключаем прыжок" end end if priz==0 then if y<200 then y=y+1--"падаем при отключенном прыжке" end end
Я сейчас попробую через масивы вывести предметы ,через которые нельзя пройти, а то невидимые стены это не вариант. Потому как ,например в игре с видом сбоку, бежишь и на земле лежит ,допустим ящик, мне его нужно перепрыгнуть, а с невидимыми стенами это не реализовать. Если знаешь как это сделать ,то напиши плиз.
Сообщение отредактировал S@im@N - Среда, 17.07.2013, 16:46
S@im@N, Тогда впредь задавайте вопросы конкретнее, дабы получить конкретный ответ, и обращайтесь ко мне на ВЫ, я старше и опытнее вас.
Раз вы знаете массивы, то должно быть знакомы и с циклами, а значит флаг вам в руки с вашим платформером) Предположим, что для каждого ящика есть свой массив по X masx и по Y masy, тогда:
for i=1,ваше_число do if x+ширина_перса>=masx and x<=masx+ширина_ящика and y+высота_перса>=masy and y<=masy+высота_ящика then x=oldx--"нас отталкнет назад/т.е. мы не пройдем на сквозь" end--"если мы идем вперед/или назад" if x>masx and x+ширина_персаmasy and y y=oldy--"нас отталкнет вверх/т.е. мы не пройдем на сквозь" end--"если встаем на него ногами стоя ровно между его краями, но не на краях" end oldx=x oldy=y
Сайт не корректно отображает код, во всяком случае у меня. Позже вышлю файлом http://rghost.ru/47488180
Спасибо, действительно помогло. Можно ли сделать так что бы действие выполнилось один раз, допустим if x=200 then img=img1 x=0 end Тут он будет приравнивать img к img1 ,каждый раз ,когда я буду достигать координаты 200, но мне нужно что бы оно выполнилось один раз.
Вопрос закрыт. Сделал с помощью переменных.
Добавлено (19.07.2013, 19:31) --------------------------------------------- У меня вопрос. Можно ли воспроизводить звуки по другому? Допустим мне в цене нужно что-бы подгружалось 3 звука, но команда Mp3me.play() будет проигрывать их все разом
Сообщение отредактировал S@im@N - Четверг, 18.07.2013, 01:16
S@im@N, В след. раз - будьте добры, задавайте вопрос в специально отведенной для этого теме "Помощь".
Одновременно подгрузить в память PSP более одной мелодии MP3 не возможно. Необходимо по окончанию проигрывания, остановить текущую мелодию, потом загрузить другую и воспроизвести уже её. В уроке номер 9 прекрасно показано, как загружать новую мелодию, когда проигрывание старой достигнет 100%. Впрочем вы вольны остановить мелодию в любой момент, достаточно указать свой процент.