2012-02-20 17 views
7

में पैदल चलने वाली एनीमेशन कैसे बनाएं, इसलिए मैं सोच रहा था कि मैंने जिस कुंजी को दबाया है/दबा रहा हूं उसके आधार पर मैंने जो चरित्र बनाया है उसकी छवि को कैसे बदला जाए?LOVE 2D

मेरा परम एक पैदल एनीमेशन घटित जब "डी" (या WASD कुंजी के किसी भी) दबाया जाता है के लिए के लिए जा रहा है, लेकिन फिर वह अभी भी खड़ा है जब "डी" कुंजी बस आदि दबाया गया है सभी छवियों सृजन किया गया है पहले से।

मैं इस की कोशिश की है, लेकिन यह ऐसा नहीं हो पाया:

function love.load() 

    if love.keyboard.isDown("a") then 
     hero = love.graphics.newImage("/hero/11.png") 
    elseif love.keyboard.isDown("d") then 
     hero = love.graphics.newImage("/hero/5.png") 
    elseif love.keyboard.isDown("s") then 
     hero = love.graphics.newImage("/hero/fstand.png") 
    elseif love.keyboard.isDown("w") then 
     hero = love.graphics.newImage("/hero/1.png") 
    end 

function love.draw() 

    love.graphics.draw(background) 
    love.graphics.draw(hero, x, y) 

end 

उत्तर

20

आप को समझना चाहिए कि प्रेम कैसे काम करता है। यह (बहुत मूल रूप से) यह करता है:

love.load()  -- invoke love.load just once, at the beginning 
while true do  -- loop that repeats the following "forever" (until game ends) 
    love.update(dt) -- call love.update() 
    love.draw()  -- call love.draw() 
end 

यह स्कीमा तो अक्सर कि पाश ही एक नाम है है - यह The Game Loop कहा जाता है।

आपका कोड काम नहीं करता है क्योंकि आप love.load() का उपयोग कर रहे हैं जैसे कि यह गेम लूप का हिस्सा था, लेकिन ऐसा नहीं है। इसे शुरुआत में, पहली मिलीसेकंद या आपके कार्यक्रम के दौरान, और कभी भी नहीं कहा जाता है।

आप love.update उन्हें बदलने के love.load उपयोग करने के लिए छवियों को लोड करना चाहते हैं, और:

function love.load() 
    heroLeft = love.graphics.newImage("/hero/11.png") 
    heroRight = love.graphics.newImage("/hero/5.png") 
    heroDown = love.graphics.newImage("/hero/fstand.png") 
    heroUp = love.graphics.newImage("/hero/1.png") 

    hero = heroLeft -- the player starts looking to the left 
end 

function love.update(dt) 
    if  love.keyboard.isDown("a") then 
    hero = heroLeft 
    elseif love.keyboard.isDown("d") then 
    hero = heroRight 
    elseif love.keyboard.isDown("s") then 
    hero = heroDown 
    elseif love.keyboard.isDown("w") then 
    hero = heroUp 
    end 
end 

function love.draw() 
    love.graphics.draw(background) 
    love.graphics.draw(hero, x, y) 
end 

कोड ऊपर कुछ repetitiveness कि तालिकाओं का उपयोग बाहर कारक किया जा सकता है, लेकिन मैं इसे छोड़ दिया है उद्देश्य पर सरल ।

आप यह भी देखेंगे कि मैंने love.update फ़ंक्शन में dt पैरामीटर शामिल किया है। यह महत्वपूर्ण है, क्योंकि आपको यह सुनिश्चित करने की आवश्यकता होगी कि एनिमेशन सभी कंप्यूटरों में समान कार्य करता है (जिस गति पर love.update कहा जाता है, प्रत्येक कंप्यूटर पर निर्भर करता है, और dt आपको उस से निपटने की अनुमति देता है)

फिर भी, यदि आप एनिमेशन करना चाहते हैं, आप शायद इस Animation Lib या my own का उपयोग करना चाहेंगे।

+0

बहुत बहुत धन्यवाद! – Switchkick

संबंधित मुद्दे