Урок 3 (Lua) , третий урок |
Урок 3 (Lua) , третий урок |
allods |
23 сентября 2009 12:52
Сообщение #1
|
Про.Геймер
Репутация: 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
|
Про.Геймер
Репутация: 29 Группа: Посетители Сообщений: 236 Регистрация: 6.12.2007 ICQ:-- Предупреждения: |
|
Сейчас: 29 ноября 2024 16:43 |