2013-04-04 4 views
0

Je fais un petit jeu en utilisant HTML5 Canvas et javascript. Je suis si loin que j'ai un cerf-volant déplaçant une sorte de puissance sur la collision et un obstacle sur la collision.diminution de la vie sur collision

Maintenant, je suis au point où je veux ajouter des vies et quand vous frappez un obstacle votre vie va diminuer 1.

J'ai essayé quelques trucs et quand vous frappez un obstacle à la vie diminue mais elle diminue constamment et l'image du joueur est supprimée à la place de l'image d'obstacle.

Voici la chose de la vie, vous pouvez vérifier tout le code là-bas.

http://nickzijlstra.com/kite

Voici le code que je pense est le plus important pour le problème.

function hitObject(player, obj){ 
var a = (obj.x - player.x), 
b = (obj.y - player.y), 
c = Math.sqrt(a*a + b*b), 
r0 = player.image.width/2, 
r1 = obj.image.width/2; 

if (c < r0+r1) { 
player.drawable = false; 
lifes -=1; 


window.location.reload(true);  
    } 
} 

Si quelqu'un voit le problème ou connaît la solution, je l'apprécierais vraiment!

+0

S'il vous plaît poster le code correspondant * ici *. Trouvez les sections clés de votre code liées au problème, et postez juste cela, pas tout le code. – bfavaretto

+0

votre jeu est cool, mais il devrait aller plus vite. son chemin trop facile pour obtenir ces ailes – Cristiano

+0

Merci, il est long de finir haha! –

Répondre

1

La raison pour laquelle le joueur disparaît est à cause de cette ligne dans la fonction hitObject:

player.drawable = false; 

Cela entraînera le joueur de ne pas tirer à cause de cette condition dans votre fonction de dessin:

if (player.drawable == true) { 
    context.drawImage(player.image, player.x, player.y, player.image.width, player.image.height); 
} 

Je suppose que vous voulez vraiment déplacer le obj vers un endroit aléatoire en haut de l'écran si le joueur est touché. Il ne le fait pas pour le moment, c'est pourquoi les vies descendent rapidement: l'objet frappe le joueur, il enlève une vie, puis l'image suivante frappe à nouveau le joueur (même si le joueur n'est pas visible) .

Ce que vous voudrez peut-être est quelque chose comme:

... 
if (c < r0+r1) { 
    lifes -=1; 

    // Respawn the object. 
    obj.y = -50; 
    obj.x = Math.random() * canvas.width; 
... 
+0

Merci c'est vraiment génial !!! aussi j'ai ajouté que quand la vie <= 0 le jeu redémarre! –

0

A une supposition, je dirais que vous devriez remplacer le

player.drawable = false; 

avec

obj.drawable = false; 

et envelopper toute détection de collision à l'intérieur d'un si obj.drawable = true afin que supprimé les obstacles ne vont pas entrer en collision avec le cerf-volant.

+0

Ouais déjà essayé mais ne fonctionne pas, merci pour la réponse! –

Questions connexes