我希望我写的是除了如何减去某个值之外的其他内容,但我不是。我有一个游戏设置,小行星来到玩家,你可以四处走动。如果小行星撞击玩家,则应该从分数中减去随机数量(在范围内)。实际上,它以某种方式增加了分数。以下是我的代码:
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 - = whatever'和'player.lives = player.lives - what',这两种方法都不起作用,它只是添加到了乐谱中。
有谁知道造成这种情况的原因是什么?感谢。
答案 0 :(得分: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);
答案 1 :(得分:-1)
正如评论所说:
Math.random()*(900000-600000)-600000
是一个负数。