保持球员的投球(焦点)

时间:2015-06-02 11:21:01

标签: java opengl game-engine

有一个带有位置x,y,z,俯仰和偏航变量的摄像机。有一个玩家有x,y,z和rotationY变量。

我可以使用以下代码在游戏中手动更改音高:

float pitchChange = Mouse.getDY() * 0.2f; pitch -= pitchChange;

我的游戏中也有一个地形,相机不能低于某一点(地形以上10f),它会保持“漂浮”状态。

在下图中。箭头表示相机指向方向,颜色与播放器匹配。红色的是如何假设在平坦的地形上。正如您所看到的,当我向下移动地形时,相机会向前指向而不是指向我的播放器上的某个点,直到我回到相同的高度或手动调整音高。如何通过投射相机来解决这个问题? (见第二张图片)

How it is right now

How I want it

1 个答案:

答案 0 :(得分:0)

似乎eyefocus point的相机代表更适合您的需求。如果您绑定到pitch表示,则可以按如下方式计算角度:

viewDirection = normalize(playerPosition - cameraPosition);
camera.pitch = Math.asin(viewDirection.y);
// pitch = 0 for horizontal view directions
// pitch > 0 for upward view directions

根据您的角度定义,您可能需要将pitch乘以-1。请注意,生成的角度以弧度指定。