Yo les zarticho !
Avant la Gamejam, je m’étais attaqué au tir du personnage. Mais j’ai du faire une petite pause afin de me consacrer à mon projet « World Editor ». C’est donc aujourd’hui que j’ai repris Y-5472, en gérant les collisions des balles avec le décor.
Le principe est très simple : j’ai une table nommée player.bullets, que j’alimente à chaque fois que le joueur tire. Puis pour ce qui est des collisions, au lieu de s’embêter avec des collisions rectangulaires (puisque la balle peut avoir une rotation), j’ai décidé de simplement utiliser les informations de la tilemap. J’ai ainsi facilement accès à la position des caisses sur la map. Ensuite le calcul est très simple :
local bullet_id = #player.bullets
while bullet_id > 0 do
local bullet = player.bullets[bullet_id]
if bullet.x < 0 or bullet.x > WIDTH or bullet.y < 0 or bullet.y > HEIGHT then
table.remove(player.bullets, bullet_id)
end
local l = math.floor(bullet.y / map.WIDTH_TILE) + 1
local c = math.floor(bullet.x / map.HEIGHT_TILE) + 1
if c > 0 and c < 16 and l > 0 and l < 11 then
if current_map[l][c] == 245 then
table.remove(player.bullets, bullet_id)
end
end
bullet_id = bullet_id – 1
end
Donc voilà comment j’ai géré les munitions.
Sur ce je vais vous laisser.
En vous souhaitant un bon code,
A bientôt,
Thibault BARON, YogS-974