Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算从一个对象到另一个对象的路径并沿着它移动?_Javascript_Jquery_Canvas - Fatal编程技术网

Javascript 计算从一个对象到另一个对象的路径并沿着它移动?

Javascript 计算从一个对象到另一个对象的路径并沿着它移动?,javascript,jquery,canvas,Javascript,Jquery,Canvas,假设我有一个像这样的物体 var objA = { x:0, y:0, speed:{x:0, y:0}, angle:0, turnSpeed:8 } …我在游戏中的每一步我都想把它移向objB,它在坐标(10,10)处。ObjA已经在移动,突然需要移动到objB的位置。假设objA有一个函数turnTo(),它可以根据其旋转速度将其转向objB。我可以做一些像 objA.speed.x += Math.cos((90 - obj.angle) * M

假设我有一个像这样的物体

var objA = {
    x:0,
    y:0,
    speed:{x:0, y:0},
    angle:0,
    turnSpeed:8
}
…我在游戏中的每一步我都想把它移向objB,它在坐标(10,10)处。ObjA已经在移动,突然需要移动到objB的位置。假设objA有一个函数
turnTo()
,它可以根据其
旋转速度
将其转向objB。我可以做一些像

objA.speed.x += Math.cos((90 - obj.angle) * Math.PI / 180);
objA.speed.y += -Math.sin((90 - obj.angle) * Math.PI / 180); 
…根据角度将objA移动到objB,但如果objA已经移动,则不太可能击中objB,因为这不考虑objA的当前速度

如何计算到objB的路径,以便objA精确地命中它?

首先,看一看


你知道objB的x和y坐标(我假设它们保持不变),你可以使用JavaScript获得objA的x和y坐标,这样你就可以解决这个问题,因为从任何一点到objA的三角形都是通过简单的三角来实现的。

对,但如果objA已经在移动,那么光靠这一点并不能使objA到达objB。你可以看到这里发生了什么。这可以给你objA与objB碰撞所需的角度和距离。好的,使用角度和距离,你将如何接近它?我会在调用turnTo()时停止objA,只要调用的时间足以计算它撞击objB所需的角度,然后继续移动。所以我想我真正想问的是如何计算所需的角度。我理解触发,但我不确定如何补偿速度,也不知道暂时停止物体会有什么帮助,因为它必须在之后保持该速度。我将提出一个新问题,因为这有点长。