Ходячая анимация Love2D играет по нажатию клавиш без спрайта - PullRequest
0 голосов
/ 09 июня 2018

Допустим, у вас есть три файла изображений: walkleft1.png, walkleft2.png и walkleft3.png.
Как использовать эти изображения для воспроизведения анимации при нажатии клавиши?
Есть ли способ сделатьэто без использования листа спрайта?

Левые шагающие спрайты: img1img2img3

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Это очень просто

function love.load()
img = {}
img[1] = love.graphics.newImage("sprite1")
img[2] = love.graphics.newImage("sprite2")
img[3] = love.graphics.newImage("sprite3")
frame = 1
anim_speed = 0
end

function love.update()
--only change the frame if anim_speed is equals to 20
if anim_speed == 20 then
if frame < 4 then
frame = frame + 1
else
frame = 1
end
--reset the anim_speed to 0 once it hits 20
anim_speed = 0
end
--increment the anim_speed, this gives delay effect between each frame
if anim_speed < 20 then
anim_speed = anim_speed + 1
end
end

function love.draw()
love.graphics.draw(img[frame])
end

С этим сценарием анимация будет меняться каждые 20 кадров, код не проверен ... дайте мне знать, если он не работает

0 голосов
/ 09 июня 2018

Классический способ сделать это - привести каждую текстуру в соответствие с числом.Затем вы можете сохранить этап анимации и показать правильный кадр в зависимости от числа, увеличивая его каждые определенное количество миллисекунд и сбрасывая число в 0, когда оно достигает максимального значения.Я уверен, что есть много ресурсов в Интернете, которые дают примеры.Но вот некоторый псевдокод, чтобы дать вам несколько идей:

class animation
    stage = 0
    image_array = []        

    constructor(images)
        for image in images
           image_array.add_item(image)

    next()
        stage++
        if stage > image_array.length
            stage = 0
        return image_array[stage]

Затем вызывайте next() каждый раз, когда вы хотите обновить в игровом цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...