数学返回NaN

时间:2015-08-21 13:15:00

标签: javascript

我试图使粒子朝着画布点击的位置移动,但公式返回NaN。为什么会这样,我该如何解决这个问题?

  • 第1步:将粒子放置在player.x,player.y中。
  • 第2步:首先勾选粒子到达画布的左上角,没有x,y位置。

Screenie of particle props

example at jsfiddle

粒子对象

function Shuriken(mouseX, mouseY) {
    this.rot = 0;
    this.vel = 2;
    this.angle = 0;
    this.x = player.x || WIDTH / 2;
    this.y = player.y || HEIGHT / 2;
    this.mouseX = mouseX || WIDTH /2;
    this.mouseY = mouseY || HEIGHT /2
    this.width = shurikenImg.width;
    this.height = shurikenImg.height;
}

更新时间

Shuriken.prototype.move = function() {
    this.angle = Math.atan2(this.mouseY, this.x) * (180 / Math.PI);
    this.x += this.vel * Math.cos(this.angle);
    this.y += this.vel * Math.sin(this.angle);
}

1 个答案:

答案 0 :(得分:2)

  1. 您将angle从弧度转换为度数。更好调试(因为学位仍然在学校教授)但是唉,下一行中的sincos期望他们的参数再次以弧度为单位。当然,这些功能还应该起作用;但你得到的价值不再是你所期望的。

  2. this.vel在jsfiddle中未定义。这很可能导致观察NaN

  3. 这是一个错误的计算:

    this.x = this.vel * Math.cos(this.angle);
    this.y = this.vel * Math.sin(this.angle);
    

    你不希望以这种方式计算的x和y位置。从x / y坐标添加或减去(调整后的)速度。