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];
添加回答
舉報