Ответить
 Урок 3 (Lua) , третий урок
allods
23 сентября 2009 12:52
Сообщение #1


Про.Геймер
  • 51

Репутация: 29
Группа: Посетители
Сообщений: 236
Регистрация: 6.12.2007
ICQ:--

Предупреждения:
Вот наконец мой 3й урока по Lua

Как я и сказал я покажу как передвигать чувачка во все 8 сторон
вид с верху, но без анимаций и,т,д. В этом уроке только базовые
функции.
А далье будет потом^^

Нам понадобятся картинка 480 на 272 под размер экрана PSP
как для ландшафта, и 4 каринки персонажа в разых сторонах:
*лево
*право
*верх
*низ

я не стал делать картинки лево+верх, лево+низ....
то есть по диагонали, нам по ровну, если поймете этот урок то
сможете сами сделать, а пока наш персонаж будет бегать в 8
сторон и 4 картинки на 2 стороны

Все перечисленные картинки я вам дам, вам их искать не надо

ПРИСТУПЕМ

функция для загрузки картинок в Рам память нашей машины.

Image.load()(255.255.255)
между скобками нужно ввести путь к картинке пример
Image.load("perso_right.png") не забывать " " это важно

perso_right=Image.load("perso_right.png")
perso_left=Image.load("perso_left.png")
perso_down=Image.load("perso_down.png")
perso_up=Image.load("perso_up.png")
backgraund=Image.load("backgraund.png")


а что значит perso_right = Image.load("perso_right.png") ???
это значет что перемменая perso_right это perso_right.png
Тобиш мы загружаем в perso_right картинку
и так каждую, Загруженая картинка загрузилась в переменную.
Не обязательно называть perso_right , можно и dsghdrfgh к примеру^^

главное не загружать в одну и ту же пременную несколько картинок или
информацей.

к примеру perso_right = Image.load("perso_right.png")
и perso_right = Color.new(255,255,255)

Все, картинки мы загрузили.

создаем еще 3 переменных с некоторой инфой про персонажа

img_perso=perso_down
x=50
y=50


актуальная картинка = perso_down
тоесть что img_perso ровняется на данный момент perso_down
x это позиция персонажа на экране по горизонтали, помните как с HelloRodina
y это позиция персонажа на экране по вертикали.

Подготовка окончена Теперь сам код

Это вы видели в прошлом уроке..!!

это не меняется ,переобьяснять не буду

oldpad=Controls.read()
while true do
screen:clear()
pad=Controls.read()


а теперь новое
помните как работает screen:print()?? для текста,
также и для картинок^^ только не print а blit
screen:blit()

screen:blit(0,0,backgraund)
screen:blit(x,y,img_perso)


важно если вы поменяете местами эти две функции
screen:blit(x,y,img_perso)
screen:blit(0,0,backgraund)

то персонажа вы не увидите так как он будет под ландшавтом.

По скольку картинка backgraund размером 480 на 272 то она как раз под размер
экрана, а значет что ее координаты 0 по x и 0 по y.

Расмотрим случай номер 2 screen:blit(x,y,img_perso)
поскольку персонаж будет двигаться то мы не будем писать
screen:blit(50,50,img_perso)
так как эти цифры не сможем менять, а заменим их x который равен
50 и у который равен 50, поскольку эти переменные мы сможем менять.
а на место картинки img_perso вы поймете далее почему не perso_down к примеру.
Вот почему, все ответы тут

if pad:left() then
img_perso=perso_left
x=x-3

end

Перевод, если кнопка left нажата то img_perso ровняется perso_left
и х ровняется х минус 3 тоисть 50-3,47-3,44-3...
но не х=-3 так как в этом случае наш х будет равен сразу же -3ем.
При нажатии left наш персонаж будет передвигаться в лево на 3 пиксилинки.

if pad:right() then
img_perso=perso_right
x=x+3
end
if pad:up() then
img_perso=perso_up
y=y-3
end
if pad:down() then
img_perso=perso_down
y=y+3

end

здесь я думаю коминтариев не надо^^

Ну и конец нашего тригера как всегда

oldpad=pad
screen.waitVblankStart()
screen.flip()

end

Вот не чего сложного видите-))

Понимаете почему img_perso=perso_down?? в самом начале?
Потому что с нажатием на кнопки эта переменная будет менятся.

screen:blit(x,y,img_perso) будет нам показывать ту картинку
которая евляется на данный момент img_perso

вот полный код

perso_right=Image.load("perso_right.png")
perso_left=Image.load("perso_left.png")
perso_down=Image.load("perso_down.png")
perso_up=Image.load("perso_up.png")
backgraund=Image.load("backgraund.png")

img_perso=perso_down
x=50
y=50

oldpad=Controls.read()
while true do
screen:clear()
pad=Controls.read()
screen:blit(0,0,backgraund)
screen:blit(x,y,img_perso)

if pad:left() then
img_perso=perso_left
x=x-3
end
if pad:right() then
img_perso=perso_right
x=x+3
end
if pad:up() then
img_perso=perso_up
y=y-3
end
if pad:down() then
img_perso=perso_down
y=y+3
end


oldpad=pad
screen.waitVblankStart()
screen.flip()
end

и картинки а также новый Lua Player Windows там нету всяких
нудных файлов .dll и всех других а только .exe^^

Надеюсь я все доступно обьяснил, в следующем уроке:

Как видите слижком накладно делать спецально картинки для
всех поворотов персонажа, лево,право,верх, итп
и всего 8, а представте еще и анимации то вообще
60 только для одного. В следующем уроке я обьясню как вертеть
картинку одну и туже в любую сторону что сократит численность
картинок с 8 до 1ой, но осторожно оно сойдет только для игр
вид с верху как на этих картинках а не как в DIABLO где
камера немного под креном, иначе человечек будет в верх ногами
в место того чтоб смотреть в верх итп

А в последующих уроках я обьясню как управлять чувачком с помощью
аналога и вертеть картинку аналогом а также сделать вашему персонажу
Здоровье и ману если хотите, а также жизнь Палкой как в RPG [IIIIII]
и даже поднимать лвл и все другии функции RPG которые я сам разработал
а щас делюсь с вами. Как видите это не RPG maker, функйии не растут на
дереве а делать их надо самому.
В общем я поменял, свои замыслы насчет моих уроков, я не Lua буду
вас учить, а делать RPG самим с помощью Lua, ну а если хотите что другое
то поразкинте мозгами, все одно и тоже, все просто, меняйте функции
так как вам надо, все одно и тоже, все получится если захотите, если
не получается то не забывайте что я могу помочь если смогу-))

Перейти в начало страницы
allods
23 сентября 2009 12:58
Сообщение #2


Про.Геймер
  • 51

Репутация: 29
Группа: Посетители
Сообщений: 236
Регистрация: 6.12.2007
ICQ:--

Предупреждения:
каринки и другое для урока
Перейти в начало страницы
 
« · Coder · »
Быстрый ответ Ответить

  Сейчас: 29 ноября 2024 18:30


НАВИГАЦИЯ

ПОПУЛЯРНОЕ
Хотим спросить
Покупаете ли вы PSN аккаунты?