在我的游戏中,我想实现控制相机和播放器移动的鼠标控制。
我想要的是,当鼠标移动到窗口的左下角时,例如,玩家旋转朝向此向量。 此外,我希望相机在相反的2d Vector中移动,这样看起来当光标位于左下角时,播放器移动到右上角。
光标移离屏幕中间越多,播放器应旋转得越多。 相机也应围绕播放器旋转,以使播放器模型看起来朝向自身旋转的矢量旋转。
这是计算相机位置的功能:
private void calculateCameraPosition(float horizDistance, float verticDistance)
{
float theta = player.getRotY() + angleAroundPlayer;
float offsetX = (float)((horizDistance ) * Math.sin(Math.toRadians(theta)) );
float offsetZ = (float)(horizDistance * Math.cos(Math.toRadians(theta)));
position.y = player.getPosition().y + verticDistance + 8;
position.x = (player.getPosition().x - offsetX);
position.z = player.getPosition().z - offsetZ ;
this.yaw = 180 - (player.getRotY() + angleAroundPlayer);
}
我从GFLW获取输入,稍微修改为鼠标位置,我从宽度/ 2中减去并分成较小的数字。
angleChange_x = (int) (-(inputHandler.Mouse_x - (Width/2)) /20);
angleChange_y = (int) (-(inputHandler.Mouse_y - (Height/2)) /20 );