Super le jeu j’adore. Bon boulot j’espère qu’il aura une bonne note.
En tout cas la map est bien coloré! Ca semble prometteur comme jeu.
Concernant ton bug de 360 degré, as-tu pensé de toujours ramener tes angles dans la plage 0 <= angle < 360 en faisant, une fois l'angle défini : angle = angle % 360 ? Cela pourrait peut-être corriger ton bug.
Merci pour vos retours 🙂
Si je fais angle = angle % 360, le resultat devrait être soit 0 soit 1 non?
pour l’instant, la fonction pour la rotation de la tourelle ressemble à ça:
`pSprite.targetAngle = math.deg(math.angle(pSprite.x, pSprite.y, pSprite.target.x, pSprite.target.y) )
local dA = pSprite.targetAngle – pSprite.canonAngle
if dA > 0 then
if pSprite.targetAngle > 270 and pSprite.canonAngle < 90 then
pSprite.canonAngle = pSprite.canonAngle – pSprite.incr / 50
if pSprite.canonAngle 360 then pSprite.canonAngle = 0 end
if pSprite.canonAngle > pSprite.targetAngle then pSprite.canonAngle = pSprite.targetAngle end
end
elseif dA < 0 then
pSprite.canonAngle = pSprite.canonAngle – pSprite.incr / 50
if pSprite.canonAngle < 0 then pSprite.canonAngle = 360 end
if pSprite.canonAngle < pSprite.targetAngle then pSprite.canonAngle = pSprite.targetAngle end
end`
l’opérateur % (modulo) renvoi le reste de la division. voici quelques exemple :
n’importe quel angle en bas de 360 va donner l’angle en question: x = 253 % 360 = 253
à 360 ça donne : x = 360 % 360 = 0 (puisque 360/360 = 1 et il reste rien)
x = 380 % 360 = 20 (puisque 360/360 donne 1 et il reste 20)
x = 720 % 360 = 0
etc…
L’avantage d’utiliser l’opérateur modulo c’est que ça prend une ligne de code et ça t’évite de faire un paquet de tests comme tu l’as fait.
Bref tu peux expérimenter cela si tu veux, mais de mon côté c’est ce que je fais et le traitement des angles s’en trouve grandement simplifiée.
ok, du coup, je vois beaucoup mieux comment ça peut être utile ici, je teste ça de-suite, merci 🙂
5 réflexions au sujet de “Tank Wars”
Super le jeu j’adore. Bon boulot j’espère qu’il aura une bonne note.
En tout cas la map est bien coloré! Ca semble prometteur comme jeu.
Concernant ton bug de 360 degré, as-tu pensé de toujours ramener tes angles dans la plage 0 <= angle < 360 en faisant, une fois l'angle défini : angle = angle % 360 ? Cela pourrait peut-être corriger ton bug.
Merci pour vos retours 🙂
Si je fais angle = angle % 360, le resultat devrait être soit 0 soit 1 non?
pour l’instant, la fonction pour la rotation de la tourelle ressemble à ça:
`pSprite.targetAngle = math.deg(math.angle(pSprite.x, pSprite.y, pSprite.target.x, pSprite.target.y) )
local dA = pSprite.targetAngle – pSprite.canonAngle
if dA > 0 then
if pSprite.targetAngle > 270 and pSprite.canonAngle < 90 then
pSprite.canonAngle = pSprite.canonAngle – pSprite.incr / 50
if pSprite.canonAngle 360 then pSprite.canonAngle = 0 end
if pSprite.canonAngle > pSprite.targetAngle then pSprite.canonAngle = pSprite.targetAngle end
end
elseif dA < 0 then
pSprite.canonAngle = pSprite.canonAngle – pSprite.incr / 50
if pSprite.canonAngle < 0 then pSprite.canonAngle = 360 end
if pSprite.canonAngle < pSprite.targetAngle then pSprite.canonAngle = pSprite.targetAngle end
end`
l’opérateur % (modulo) renvoi le reste de la division. voici quelques exemple :
n’importe quel angle en bas de 360 va donner l’angle en question: x = 253 % 360 = 253
à 360 ça donne : x = 360 % 360 = 0 (puisque 360/360 = 1 et il reste rien)
x = 380 % 360 = 20 (puisque 360/360 donne 1 et il reste 20)
x = 720 % 360 = 0
etc…
L’avantage d’utiliser l’opérateur modulo c’est que ça prend une ligne de code et ça t’évite de faire un paquet de tests comme tu l’as fait.
Bref tu peux expérimenter cela si tu veux, mais de mon côté c’est ce que je fais et le traitement des angles s’en trouve grandement simplifiée.
ok, du coup, je vois beaucoup mieux comment ça peut être utile ici, je teste ça de-suite, merci 🙂