
J’ai essayé de l’adapter à mon projet mais les cercles ne tournent pas autour du point central, ils passent dessus et font des allers-retours… Pourtant ton code fonctionne et j’ai l’impression de le comprendre, mais visiblement en faisant la transcription je dois me tromper quelque part :/
J’ai décidé de recréer un code neuf de mon programme en version hyper simplifié pour y voir plus clair, mais rien n’y fait le problème reste le même. Voici le code simplifié (plutôt que de te filer mon code complet qui fait 1700 lignes, t’y verras bcp plus clair), pourrais-tu m’expliquer où je me goure s’il te plait ? J’arrive vraiment pas à comprendre…
Mes pistes :
– Peut-être que faire des boucles ne fonctionne pas (mais j’ai l’impression d’en avoir naturellement besoin au vu de ma manière de créer mes circles, blackCircle, etc.
– Je me trompe dans la transcription (mais je vois vraiment pas où).
– Autre ?
Le code :
function love.load()
-- Chargement listes
sprite_list = {}
circle_list = {}
blackCircle_list = {}
-- Chargement des variables
for n=1,#circle_list do
local circle = circle_list[n]
local blackCircle = blackCircle_list[1]
circle.angle = circle.angle + circle.speed
circle.x = blackCircle.x + circle.rotation * math.cos(math.rad(circle.angle))
circle.y = blackCircle.y + circle.rotation * math.cos(math.rad(circle.angle))
end
-- Appel de fonction
CreateBlackCircle(300,300,30)
CreateCircle(200,200,10,1)
end
function CreateCircle(pX, pY, pSize, pSpeed)
-- Usine pour créer des cercles animés pour l'écran titre
local newCircle = {}
newCircle.x = pX
newCircle.y = pY
newCircle.angle = 0
newCircle.size = pSize
newCircle.speed = pSpeed
newCircle.rotation = 50
newCircle.rotation2 = blackCircle_list[1].size + newCircle.size + (blackCircle_list[1].x - newCircle.x) -- Test (distane entre BlackCircle et Circle)
table.insert(sprite_list, newCircle)
table.insert(circle_list, newCircle)
return newCircle
end
function CreateBlackCircle(pX, pY, pSize)
-- Usine pour créer des cercles animés pour l'écran titre
local newBlackCircle = {}
newBlackCircle.x = pX
newBlackCircle.y = pY
newBlackCircle.angle = 0
newBlackCircle.size = pSize
newBlackCircle.radius = newBlackCircle.size
newBlackCircle.color = pColor
table.insert(sprite_list, newBlackCircle)
table.insert(blackCircle_list, newBlackCircle)
return newBlackCircle
end
function love.update(dt)
for n=1,#circle_list do
local circle = circle_list[n]
local blackCircle = blackCircle_list[1]
circle.angle = circle.angle + circle.speed
circle.x = blackCircle.x + circle.rotation * math.cos(math.rad(circle.angle))
circle.y = blackCircle.y + circle.rotation * math.cos(math.rad(circle.angle))
end
end
function love.draw()
-- Change couleur background
love.graphics.setBackgroundColor(0,0,0.9)
-- Dessine BlackCircle
for n=1,#blackCircle_list do
local blackCircle = blackCircle_list[n]
love.graphics.setColor(0,0,0)
love.graphics.circle("fill", blackCircle.x, blackCircle.y, blackCircle.size)
love.graphics.setColor(1,1,1)
end
-- Dessine Circles
for n=1,#circle_list do
local circle = circle_list[n]
love.graphics.circle("fill", circle.x, circle.y, circle.size)
end
end
Je précise que tout ça, à la base, c’est juste pour créer une animation sympa pour l’écran titre… Ça fait même pas partie du jeu à proprement parler. Le jeu est complet à ce niveau là, il me reste que deux fonctionnalités que j’ai envie d’ajouter (le score défilant et un système de high score enregistrés même quand on quitte le programme et qu’on le relance plus tard). C’est un détail mais en même temps j’ai vraiment envie de comprendre, je suis certain que ça me resservira.