Étiqueté : Animation d'un personnage.
- Ce sujet contient 0 réponse, 1 participant et a été mis à jour pour la dernière fois par
Edas-Jonovo, le il y a 2 années et 4 mois.
-
AuteurMessages
-
-
04/04/2020 à 3:04 #64050
Code de mon exercice animation du personnage dans un décors.
love.graphics.setDefaultFilter("nearest") local Hero = {} function CreaPerso() local MonHero = {} MonHero.x = 0 MonHero.y = 0 MonHero.Images = {} local n for n=1,2 do local MonImg = love.graphics.newImage("hero-day-"..n..".png") table.insert(MonHero.Images,MonImg) end MonHero.currentImage = 1 MonHero.width = MonHero.Images[1]:getWidth() MonHero.height = MonHero.Images[1]:getHeight() return MonHero end function love.load() img = love.graphics.newImage ("fond.jpg") largeur = love.graphics.getWidth() /2 hauteur = love.graphics.getHeight() Hero = CreaPerso () Hero.x = largeur Hero.y = hauteur end function love.update (dt) Hero.currentImage = Hero.currentImage + 4*dt if Hero.currentImage >= #Hero.Images +1 then Hero.currentImage = 1 end end function love.draw () local FrameArrondi = math.floor(Hero.currentImage) love.graphics.draw(img,0,0) love.graphics.draw(Hero.Images[FrameArrondi],Hero.x - Hero.width/2,Hero.y -Hero.height,0,3,3, Hero.width/2,Hero.height/2) end
J’en es chiez je peut vous le dire lol
(Si j’ai des fautes en termes de compréhension, si vous pouvais me le dire ^^)
Je me suis aider du cours de David sur le moteur sonore dans les cours de Lua avec l’exemple d’un jeu en scrolling horizontale.
en démontant son code pour ne garder que les lignes que j’ai besoin.
l’animation du personnage et le positionner ou je le souhaite.
en copiant et en modifiant les variables avec mes propre nom.J’ai appris qu’on pouvais appeler plusieurs images sur une seul ligne de code, pour le mettre dans une liste qui sert à l’animation.
for n=1,2 do local MonImg = love.graphics.newImage("hero-day-"..n..".png") table.insert(MonHero.Images,MonImg) end
ont insert donc dans la table MonHero.Image, la variable contenant les ressources images (MonImg)
qui ce repete dans une boucle for.
ce qui fait plus propre je trouve personnellement.Ensuite j’ai était bloqué bien avant de m’aider du code de David.
Le code fonctionner mais il y avais un bug au niveau de l’origine, des que j’agrandissais l’image, son origine changeais et au lieu de rester au milieux de l’image elle ce décaler.Ancien code source :
love.graphics.setDefaultFilter("nearest") Hero = {} Hero.x = 0 Hero.y = 0 Hero.Frame = 1 Hero.Images = {} function love.load () Hero.Images [1]= love.graphics.newImage("hero-day-1.png") Hero.Images [2]= love.graphics.newImage("hero-day-2.png") Largeur = love.graphics.getWidth () Hauteur = love.graphics.getHeight () end function love.update (dt) Hero.Frame = Hero.Frame + 4*dt if Hero.Frame >= #Hero.Images + 1 then Hero.Frame = 1 end end function love.draw () local AnimationFrame = math.floor(Hero.Frame) love.graphics.draw(Hero.Images[AnimationFrame], Largeur/2 - Hero.Images[AnimationFrame]:getWidth () /2,Hauteur /2 - Hero.Images[AnimationFrame]:getHeight() /2) end
ligne du bug apres modication :
love.graphics.draw(Hero.Images[AnimationFrame],Largeur/2-Hero.Images[AnimationFrame]:getWidth()/2,Hauteur/2-Hero.Images[AnimationFrame]:getHeight()/2,0,3,3)
Du coup en m’aident du code source de David sur l’exemple du jeu en scrolling horizontale j’ai pu réglais mon problème ^^
-
Ce sujet a été modifié il y a 2 années et 4 mois par
Edas-Jonovo. Raison : Faute rectifier
-
Ce sujet a été modifié il y a 2 années et 4 mois par
-
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.