Пятница, 29.11.2024, 08:51 | Приветствую Вас Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Темы уроков
VITTACHДата: Суббота, 05.01.2013, 16:08 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 27
Репутация: 10013
Статус: Offline
Тут любой желающий может написать тему, которую он бы хотел увидеть в след. уроке smile
 
vadim4ik123Дата: Четверг, 25.04.2013, 16:51 | Сообщение # 16
Рядовой
Группа: Заблокированные
Сообщений: 23
Репутация: 0
Статус: Offline
VITTACH, А поворотов у него нету.
 
S@im@NДата: Понедельник, 15.07.2013, 23:02 | Сообщение # 17
Лейтенант
Группа: Пользователи
Сообщений: 5
Репутация: 20
Статус: Offline
Как совместить анимацию и изменения положения по оси?
То есть, ты ,допустим, идешь вверх ,и проигрывается анимация ходьбы. Я как пробовал сделать перемещение из 1 урока и анимацию ,от сайта codgames ,но он только перемещался по осям без анимации. Надеюсь увидеть это в уроках, в скорем времени, или хотя бы в ответе.


Сообщение отредактировал S@im@N - Понедельник, 15.07.2013, 23:08
 
VITTACHДата: Вторник, 16.07.2013, 16:53 | Сообщение # 18
Генералиссимус
Группа: Администраторы
Сообщений: 27
Репутация: 10013
Статус: Offline
S@im@N,
kartinka1=Image.load("kartinka1.png")
kartinka2=Image.load("kartinka2.png")
kartinka3=Image.load("kartinka3.png")
kartinka4=Image.load("kartinka4.png")
kartinka5=Image.load("kartinka5.png")

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 then n=0--"для циклического повтора анимации обнуляем счетчик кадров"
end

screen:flip()
end
 
S@im@NДата: Вторник, 16.07.2013, 17:24 | Сообщение # 19
Лейтенант
Группа: Пользователи
Сообщений: 5
Репутация: 20
Статус: Offline
Большое спасибо :)

Добавлено (16.07.2013, 17:24)
---------------------------------------------
Еще один вопрос, как вывести изображение с альфа каналом ,а то ,когда я его выгружаю на экран, оно то ли черное ,то ли его вообще нет.
2. Как сделать изображение ,что бы оно было на заднем плане.


Сообщение отредактировал S@im@N - Вторник, 16.07.2013, 19:33
 
VITTACHДата: Вторник, 16.07.2013, 20:16 | Сообщение # 20
Генералиссимус
Группа: Администраторы
Сообщений: 27
Репутация: 10013
Статус: Offline
S@im@N,
1)По умолчанию alpha канал,если он есть - ставится автоматически. А то что вы принимаете за черный экран, скорее всего отсутствие screen:flip()  в вашем коде, либо иные недочеты, например вывод изображения вне цикла while true do
2)Изображение на заднем плане ни чем не отличается от всех прочих, просто его вывод, а это я напомню screen:blit(), должен стоять в коде строчкой ранее до вывода тех изображений, которые идут поверх него - так и осуществляется наложение изображений. Ну и разумеется вся эта бадья должна быть в цикле while true do и стоять после screen:clear() но до screen:flip()
Удачи smile
 
S@im@NДата: Среда, 17.07.2013, 13:15 | Сообщение # 21
Лейтенант
Группа: Пользователи
Сообщений: 5
Репутация: 20
Статус: Offline
Спасибо,бро)))

Добавлено (17.07.2013, 13:15)
---------------------------------------------
Я наверное уже надоел своими вопросами, но как сделать объект через который не мог бы пройти ГГ. 
И как эмитировать прыжки ,допустим в платформере с видом сбоку.

 
VITTACHДата: Среда, 17.07.2013, 13:49 | Сообщение # 22
Генералиссимус
Группа: Администраторы
Сообщений: 27
Репутация: 10013
Статус: Offline
S@im@N, Отнюдь - это моя работа, как админа и автора уроков smile
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:38 | Сообщение # 23
Лейтенант
Группа: Пользователи
Сообщений: 5
Репутация: 20
Статус: Offline
Я сейчас попробую через масивы вывести предметы ,через которые нельзя пройти, а то невидимые стены это не вариант.
Потому как ,например в игре с видом сбоку, бежишь и на земле лежит ,допустим ящик, мне его нужно перепрыгнуть, а с невидимыми стенами это не реализовать. Если знаешь как это сделать ,то напиши плиз.


Сообщение отредактировал S@im@N - Среда, 17.07.2013, 16:46
 
VITTACHДата: Среда, 17.07.2013, 19:06 | Сообщение # 24
Генералиссимус
Группа: Администраторы
Сообщений: 27
Репутация: 10013
Статус: Offline
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
 
S@im@NДата: Пятница, 19.07.2013, 19:31 | Сообщение # 25
Лейтенант
Группа: Пользователи
Сообщений: 5
Репутация: 20
Статус: Offline
Спасибо, действительно помогло.
Можно ли сделать так что бы действие выполнилось один раз, допустим
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
 
VITTACHДата: Пятница, 19.07.2013, 19:53 | Сообщение # 26
Генералиссимус
Группа: Администраторы
Сообщений: 27
Репутация: 10013
Статус: Offline
S@im@N, В след. раз - будьте добры, задавайте вопрос в специально отведенной для этого теме "Помощь".

Одновременно подгрузить в память PSP более одной мелодии MP3 не возможно. Необходимо по окончанию проигрывания, остановить текущую мелодию, потом загрузить другую и воспроизвести уже её. В уроке номер 9 прекрасно показано, как загружать новую мелодию, когда проигрывание старой достигнет 100%. Впрочем вы вольны остановить мелодию в любой момент, достаточно указать свой процент.
 
vadim4ik123Дата: Среда, 21.08.2013, 10:00 | Сообщение # 27
Рядовой
Группа: Заблокированные
Сообщений: 23
Репутация: 0
Статус: Offline
Много полезного я узнал,буду заглядовать сюда чаще).
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Навигация
Форма входа