以恒定的角度移动球
Moving ball at constant rate with angle
我正在 JavaScript 编写一个小游戏,我正在 运行 解决数学问题。我正在尝试将一个对象移向我刚刚单击的位置。我能够使用下面的代码成功地做到这一点。但是我很难弄清楚如何使速度恒定。如果我靠近我拍摄的物体单击,X/Y 的差异很小,所以 dx/dy 很慢。如果我在远处单击,dx/dy 具有高值,因此它移动得更快。
这是我目前的代码。
let relativeXY = relMouseCord(e);
let rise = relativeXY[1] - pOne.posY; //<-- This is the distance between the Y coords
let run = relativeXY[0] - pOne.posX; //<-- This is the distance between the X coords
let angle = Math.atan2(rise,run)*180/Math.PI
console.log('tan angle ' + Math.tan(angle))
console.log('acutal angle '+ angle)
bullet.x = pOne.posX
bullet.y = pOne.posY
tempdx = run * 0.02 //Math.cos(angle)
tempdy = rise * 0.02 //Math.sin(angle)
我尝试用cos和sin来归一化速度,并且能够使速度恒定,但是抛射物的方向不正确。
将方向向量 (run,rise)
标准化为单位大小:
tempdx = run * 0.02 / sqrt((run*run)+(rise*rise))
tempdy = rise * 0.02 / sqrt((run*run)+(rise*rise))
或使用测角法(但不要像测角法预期的那样转换为 [deg]
[rad]
!!!)
let angle = Math.atan2(rise,run)
console.log('tan angle ' + Math.tan(angle))
console.log('acutal angle '+ angle*180/Math.PI)
tempdx = cos(angle) * 0.02
tempdy = sin(angle) * 0.02
...假设 0.02
是您想要的速度...
我正在 JavaScript 编写一个小游戏,我正在 运行 解决数学问题。我正在尝试将一个对象移向我刚刚单击的位置。我能够使用下面的代码成功地做到这一点。但是我很难弄清楚如何使速度恒定。如果我靠近我拍摄的物体单击,X/Y 的差异很小,所以 dx/dy 很慢。如果我在远处单击,dx/dy 具有高值,因此它移动得更快。
这是我目前的代码。
let relativeXY = relMouseCord(e);
let rise = relativeXY[1] - pOne.posY; //<-- This is the distance between the Y coords
let run = relativeXY[0] - pOne.posX; //<-- This is the distance between the X coords
let angle = Math.atan2(rise,run)*180/Math.PI
console.log('tan angle ' + Math.tan(angle))
console.log('acutal angle '+ angle)
bullet.x = pOne.posX
bullet.y = pOne.posY
tempdx = run * 0.02 //Math.cos(angle)
tempdy = rise * 0.02 //Math.sin(angle)
我尝试用cos和sin来归一化速度,并且能够使速度恒定,但是抛射物的方向不正确。
将方向向量 (run,rise)
标准化为单位大小:
tempdx = run * 0.02 / sqrt((run*run)+(rise*rise))
tempdy = rise * 0.02 / sqrt((run*run)+(rise*rise))
或使用测角法(但不要像测角法预期的那样转换为 [deg]
[rad]
!!!)
let angle = Math.atan2(rise,run)
console.log('tan angle ' + Math.tan(angle))
console.log('acutal angle '+ angle*180/Math.PI)
tempdx = cos(angle) * 0.02
tempdy = sin(angle) * 0.02
...假设 0.02
是您想要的速度...