我正在做一个3D游戏,玩家的背部应该总是面对摄像机,他应该在这个方向移动。 我没来“背对着摄像机”的一部分,但我相信,这将是简单,一旦我弄清楚如何将球员在正确的方向...
虽然这是一个三维坐标系,高度可以忽略不计(Z轴),因为无论多么高的摄像头,玩家应该总是在相同的速度去(摄像系统计划的作用更像在游戏世界魔兽)。
现在,我总结我的问题这...
- 点(0,0)是球员的位置。
- 点(x,y)是摄像机的位置。
- 相机(DX,DY)单元远离播放器(和因为玩家为(0,0),它也是(X,Y)单位处,虽然这是一个位置矢量,而不是一个一个翻译)
问题:我如何得到一个点(A,B)在这个二维空间位于圆R = 1,但在同一行(0,0)和(X,Y)?
可视化:
通过这样做,我应该有一个二维矢量(A,B),这将在由-30相乘,充当速度为玩家。
我知道如何做到这一点,但在一个非常昂贵和低效的方式,使用Pythagora定理,平方根,以及所有那些乱的,问题的工具(在Javascript工作)。
基本上,这样的事情:
c = sqrt(dx*dx + dy*dy); //Get the length of the line
rat = 1/c; //How many times is the desired length (1) bigger than the actual length
a = x*rat;
b = y*rat;
必须有更好的东西!
作为参考,我正在JavaScript中的游戏,使用three.js所引擎。