2013-04-04 3 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

+0

ваша игра крутая, но она должна двигаться быстрее. его путь слишком легкий, чтобы получить эти крылья – Cristiano

+0

Спасибо, это уже давно закончил ха-ха! –

ответ

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, игра перезапускается! –

0

В догадка, я бы сказал, что вы должны заменить

player.drawable = false; 

с

obj.drawable = false; 

и завернуть обнаружение столкновений весь внутри если obj.drawable = правда, так что удалены препятствия не будут сталкиваться с кайтом.

+0

Да, я уже пробовал это, но не работает, спасибо за ответ, хотя! –

Смежные вопросы