3 回答
TA贡献1812条经验 获得超5个赞
使用parsetInt以避免NaN并添加进一步检查NaN
createCanvas(windowWidth, windowHeight);
noStroke();
}
var momentum = [0, 0]; //x and y speed
var pos = [650, 300]; //player x and y
var enemiesX = []; //enemies x's
var enemiesY = []; //enemies y's
function draw() {
background(200);
mouseX = parseInt(mouseX);
if(mouseX === NaN){
alert('Not a number exception');
}
else{
momentum[0] = (pos[0] - mouseX) / 5;
pos[0] =+ momentum;
fill(115);
ellipse(pos[0], pos[1], 30, 30);
text(pos[0] + ", " + pos[1], 20, 20);
}
}
TA贡献1829条经验 获得超6个赞
您的代码有两个问题。第一个是您正在使用=+
而不是+=
. 第二个是它momentum
是一个数组,而不是一个数字。这就是您的代码在您突出显示的两行中正在执行的操作:
评估
(pos[0] - mouseX) / 5
将该值保存在
momentum
数组的 0 位置。评估
+momentum
将该值保存在
pos
数组的 0 位置。
在第三点,什么情况是,+momentum
计算结果为NaN
。然后你将该值保存在pos
数组中。两行中的第一行没问题。我认为你想要做的是添加momentum[0]
到pos[0]
,这可以像这样完成:
pos[0] += momentum[0];
我不确定您的意图,但我的猜测是您想让圆圈朝向光标,而不是远离光标。在那种情况下,你的动量符号是错误的,应该是这样的:
momentum[0] = (mouseX - pos[0]) / 5; pos[0] += momentum[0];
添加回答
举报