Page 1 of 1

newb question

Posted: Fri May 06, 2011 11:51 pm
by crazzykid
Hi All,

Just started playing around with love to see how it all works and im quiet impressed.
Though looking through the wiki and forum I cant seem to find my answer.

Im trying to animate the character when he walks. I have 8 images per direction .
I looked at AnAL but i dont think it will do what i want.

Code: Select all

function love.load()
   player = love.graphics.newImage("images/soldier/walking s0000.bmp")
   player_x = 100
   player_y = 50
   player_speed = 100
   i = 0
   love.graphics.setBackgroundColor(110,80,52)
   lastkey = "nothing"
   keynow = "nothing"
end

function love.keypressed(key)
   keynow = key
end

function love.keyreleased(key)
   lastkey = key
end

function love.update(dt)
   key_Right = love.keyboard.isDown("right")
   key_Left = love.keyboard.isDown("left")
   key_Down = love.keyboard.isDown("down")
   key_Up = love.keyboard.isDown("up")

   if key_Right then
      player = love.graphics.newImage("images/soldier/walking e0000.bmp")
      player_x = player_x + (player_speed * dt)
   elseif key_Left then
      player = love.graphics.newImage("images/soldier/walking w0000.bmp")
      player_x = player_x - (player_speed * dt)
   elseif key_Up then
      player = love.graphics.newImage("images/soldier/walking n0000.bmp")
      player_y = player_y - (player_speed * dt)
   elseif key_Down then
      player = love.graphics.newImage("images/soldier/walking s0000.bmp")
      player_y = player_y + (player_speed * dt)
   end
    if love.keyboard.isDown( "escape" ) then
        love.event.push( "q" )
    end
end

function love.draw()
   love.graphics.draw(player, player_x, player_y)
   love.graphics.print("FPS: "..love.timer.getFPS(), 10, 20)
   love.graphics.print(i, 10,40)
   love.graphics.print("key Now: " .. keynow, 10, 60)
   love.graphics.print("Last key: " .. lastkey, 10, 80)
end
As you can see the character image will change depending on up,down,left,right but i have 8 images to make up per direction which will animate the character walking. Im not sure how to go about this if you understand what I mean.

Re: newb question

Posted: Sat May 07, 2011 5:41 am
by Ensayia
THe first problem I see is that you are creating a new image every time you move. use love.graphics.newImage() once to create the image, then use it the correct way. Here's a modified version of your code (changes in bold):

NOTE: You will want to use some other image format that BMP. Bitmaps are unompressed and take up a LOT of space. I suggest PNG.

NOTE: Learn about Lua tables. They will help you manage your variables and are one of the most powerful aspects of Lua.

function love.load()
player_left = love.graphics.newImage("images/soldier/leftimg.bmp")
player_right = love.graphics.newImage("images/soldier/rightimg.bmp")
player_up = love.graphics.newImage("images/soldier/upimg.bmp")
player_down = love.graphics.newImage("images/soldier/downimg.bmp")
player_x = 100
player_y = 50
player_speed = 100
player_image = player_right -- choosing one for default
i = 0
love.graphics.setBackgroundColor(110,80,52)
lastkey = "nothing"
keynow = "nothing"
end

function love.keypressed(key)
keynow = key
end

function love.keyreleased(key)
lastkey = key
end

function love.update(dt)
key_Right = love.keyboard.isDown("right")
key_Left = love.keyboard.isDown("left")
key_Down = love.keyboard.isDown("down")
key_Up = love.keyboard.isDown("up")

if key_Right then
player = player_right
player_x = player_x + (player_speed * dt)
elseif key_Left then
player = player_left
player_x = player_x - (player_speed * dt)
elseif key_Up then
player = player_up
player_y = player_y - (player_speed * dt)
elseif key_Down then
player = player_down
player_y = player_y + (player_speed * dt)
end
if love.keyboard.isDown( "escape" ) then
love.event.push( "q" )
end
end

function love.draw()
love.graphics.draw(player, player_x, player_y)
love.graphics.print("FPS: "..love.timer.getFPS(), 10, 20)
love.graphics.print(i, 10,40)
love.graphics.print("key Now: " .. keynow, 10, 60)
love.graphics.print("Last key: " .. lastkey, 10, 80)
end

Re: newb question

Posted: Sat May 07, 2011 7:29 am
by Lafolie
Ensayia: try the

Code: Select all

 tag :P

Here are a few pages that might help you:

[url]http://lua-users.org/wiki/TablesTutorial[/url]
[url]http://www.lua.org/pil/2.5.html[/url]
[url]http://www.kb.iu.edu/data/aekl.html[/url] - PNG files are great because they are so versatile. You can have a full-color PNG or an indexed, smaller file. They support multiple levels of alpha blending (transparency) and are -visually- uncompressed but carry a much smaller footprint than a BMP. I always used PNG files for graphics. Or maybe TGA, but they're not too dissimilar. TGA's can be trickier to work with at times.

Re: newb question

Posted: Sat May 07, 2011 12:32 pm
by crazzykid
sweet , ill look into lua tables now =)...

cheers for the help on correct way with drawing the image.

Re: newb question

Posted: Sat May 07, 2011 4:54 pm
by Ensayia
Sorry about the code tag, it got screwed up somehow.