好的,我有两个角度。一个是操纵杆的角度,另一个是相机到玩家的角度。摄像机的角度。现在我想要它,所以当我按下操纵杆时,它会把玩家从相机上移开。我该怎么做呢?有没有一种简单的方法可以用Java或Ardor3d来实现?
编辑:这是我如何获得角度的代码。
float camDegree = (float) Math.toDegrees(Math.atan2(
_canvas.getCanvasRenderer().getCamera().getLocation().getXf() - colladaNode.getTranslation().getXf(),
_canvas.getCanvasRenderer().getCamera().getLocation().getYf()) - colladaNode.getTranslation().getYf());
player.angle = (float) Math.toDegrees(Math.atan2(padX, padY));
Quaternion camQ = new Quaternion().fromAngleAxis(camDegree, Vector3.UNIT_Y);发布于 2010-12-01 21:40:04
我不得不说,我真的不理解你的问题,但它似乎是关于如何使用操纵杆实现相机相对控制。
我能给你的最重要的建议是,最好不要计算角度,而是直接使用向量。
假设摄影机的方向是v (在某些类型的游戏中,此向量将直接指向玩家,但不是所有类型的游戏,也不总是):

通常你不关心这个向量的垂直分量,所以去掉它就得到了水平分量,我称之为y,原因稍后会很清楚:
y = v−(v·up) <−>e114up
其中up是垂直向上的单位向量。
我们可以使用叉积(记住右手法则)找到垂直于y的水平向量:
x = v×up

现在您可以看到,y是指向前方(远离摄影机)的平面中的向量,x是指向右侧(相对于摄影机的侧面)的平面中的向量。如果将这些向量归一化:
x= x / |x|̂
y= y / |y|ŷ
然后,您可以使用x̂和̂ŷ作为播放器相对于相机运动的坐标基础。如果你的操纵杆读数是Jx和Jy,那么移动玩家
%s (Jx x+ Jy ̂ŷ)
其中s是与玩家速度成比例的适当标量值。
(请注意,此答案中的任何点都没有计算角度!)
https://stackoverflow.com/questions/4321382
复制相似问题