有一个带有位置x,y,z,俯仰和偏航变量的摄像机。有一个玩家有x,y,z和rotationY变量。
我可以使用以下代码在游戏中手动更改音高:
float pitchChange = Mouse.getDY() * 0.2f;
pitch -= pitchChange;
我的游戏中也有一个地形,相机不能低于某一点(地形以上10f),它会保持“漂浮”状态。
在下图中。箭头表示相机指向方向,颜色与播放器匹配。红色的是如何假设在平坦的地形上。正如您所看到的,当我向下移动地形时,相机会向前指向而不是指向我的播放器上的某个点,直到我回到相同的高度或手动调整音高。如何通过投射相机来解决这个问题? (见第二张图片)
答案 0 :(得分:0)
似乎eye
和focus 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
。请注意,生成的角度以弧度指定。