2013-04-04 75 views
0

我在製作一個使用HTML5 Canvas和javascript的小遊戲。到目前爲止,我已經有一隻風箏在碰撞時移動某種力量,並在碰撞時遇到障礙。碰撞時生命減少

現在我在我想補充的生命點,當你打的障礙你的生活將減少1

我嘗試了一些東西,當你撞上障礙物的壽命降低,但它不斷下降,玩家圖像被移除而不是障礙圖像。

這裏是生活的事情,你可以檢查所有的代碼。

http://nickzijlstra.com/kite

在這裏,我覺得代碼是問題的最重要的。

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);  
    } 
} 

如果有人看到問題或知道解決方案,我會非常感激!

+0

請張貼相關的代碼* *在這裏。找到與問題相關的代碼的關鍵部分,然後發佈,而不是整個代碼。 – bfavaretto 2013-04-04 19:45:39

+0

你的遊戲很酷,但它應該移動得更快。它的方式太容易得到那些翅膀 – Cristiano 2013-04-04 19:46:59

+0

謝謝,這是從完哈哈長! – 2013-04-04 19:48:01

回答

1

玩家消失的原因是因爲這條線在hitObject功能:

player.drawable = false; 

這將導致玩家不能的,因爲這種情況在你的繪圖功能,可以得出:

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

我假設你實際上想要將obj移回屏幕頂部的隨機點,如果玩家被擊中。它現在不這樣做,這就是爲什麼生命迅速下降的原因:對象擊中玩家,它消除了生命,然後再次擊中玩家的下一幀(即使玩家不可見) 。

什麼你可能想是這樣的:

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

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

謝謝你真的很棒!!!我還補充說,當生命<= 0時,遊戲重新開始! – 2013-04-04 20:00:19

0

在猜測,我會說,你應該更換

player.drawable = false; 

obj.drawable = false; 

,敷在整個碰撞檢測的內部的,如果obj.drawable = true,以便去除障礙物不會與風箏碰撞。

+0

是的,已經嘗試過但不起作用,謝謝回覆! – 2013-04-04 19:56:19