Ответить
 Урок 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 · »
Быстрый ответ Ответить

  Сейчас: 19 января 2026 16:56


НАВИГАЦИЯ

ПОПУЛЯРНОЕ
Хотим спросить
Считаете наш сайт полезным и информативным?


    • kirillunreal7 08.01.2026
      Feel For Two (MINIS) (4)
      kirillunreal7-фото
      перезалейте на другие источники, сайте не работают
    • Zephir 16.09.2025
      Final Fantasy VII (RUS) [PSX] (3)
      Zephir-фото
      Перехожу по ссылке народ,перекинуло на Яндекс диск,там лежит папка narod ,а внутри ничего.хэлп
    • tak0ri 18.08.2025
      Пыхарь и Хроник/Bluntman and C ... (1)
      tak0ri-фото
      Как скачать? Кнопка не работает
    • MazilA92 13.01.2025
      Vice City Stories mod San Andr ... (12)
      MazilA92-фото
      Простите, пытался скачать данный мод, в поисках самого ущербного файлообменника победил турбобит. Остальные досрочно покинули гонку так как в Яндексе файл отсутствует, а хитфайлс просто не доступен. Есть у кого-нибудь рабочий человеческий торрент?
    • Яззь 15.06.2024
      The Godfather: Mob Wars [PSP][ ... (4)
      Яззь-фото
      А где хоть какая-нибуть ссылка?
    • xaos_555 20.12.2023
      Crash Bandicoot N’sane Trilogy ... (1)
      xaos_555-фото
      как скачать ?
    • HupperDupperOne 26.11.2023
      Exit 2 [ENG] [RePack] (1)
      HupperDupperOne-фото
      Ссылки не Валид (
    Все комментарии