1

我希望我写这个不是为了如何从一个值中减去,但我不是。我设置了一个游戏,小行星撞击玩家,你可以四处走动。如果小行星撞击玩家,它应该从分数中减去一个随机量(范围内)。实际上,它以某种方式增加了分数。下面是我的代码:

for(var i=0; i<asteroids.length; i++){
    if(player.x<asteroids[i].x+asteroids[i].radius){
        if(player.x>asteroids[i].x-asteroids[i].radius){
            if(player.y<asteroids[i].y+asteroids[i].radius){
                if(player.y>asteroids[i].y-asteroids[i].radius){
                    player.lives-=Math.floor(Math.random()*(900000-600000)-600000);
                }
            }
        }
    }
}

if 语句检查玩家是否与小行星重叠。我尝试写“player.lives -= 不管”和“player.lives = player.lives - 不管”,这两种方法都不起作用,它只是添加到分数中。

有谁知道这可能是什么原因造成的?谢谢。

4

2 回答 2

0

如评论中所述,Math.random()*(900000-600000)-600000将等于负数。原因如下:

Math.random() >>> a random value between 0 and 1

900000-600000 >>> a constant = 300000

Math.random() * 300000 >>> a random value between 0 and 300000

Math.random() * 300000 - 600000 >>> a random value between -600000 and -300000

解决方法是改变

player.lives-=Math.floor(Math.random()*(900000-600000)-600000);

player.lives+=Math.floor(Math.random()*(900000-600000)-600000);

要不就

player.lives-=Math.floor(Math.random()*300000+300000);
于 2013-05-26T20:15:15.003 回答
-1

正如评论所说:

  • 如果你使用碰撞系统而不是 4 个怪物条件,你会做得更好
  • Math.random()*(900000-600000)-600000是一个负数。
于 2013-05-26T19:47:01.477 回答