【发布时间】:2014-02-09 16:16:21
【问题描述】:
我想让一个角色拿着枪,但我想让枪随着鼠标移动。例如,如果鼠标向上,则枪指向上方。如果鼠标在左侧,则枪指向左侧。我使用玩家位置和鼠标位置构建了一个直角三角形,然后使用反正弦求出仰角。但是,这只适用于 90 度的运动。有什么想法可以解决这个问题,以便获得完整的 360 度旋转?
角度计算代码:
private double calcAngle()
{
double mouseX,mouseY,subX,subY,playerToMouse,mouseToSub,angle;
mouseX = Mouse.getX();
mouseY = Mouse.getY();
subX = mouseX;
subY = y;
playerToMouse = Math.sqrt(Math.pow(x-mouseX,2)+Math.pow(y-mouseY,2));
mouseToSub = Math.sqrt(Math.pow(mouseX-subX,2)+Math.pow(mouseY-subY,2));
angle = Math.toDegrees(Math.asin(mouseToSub/playerToMouse));
return angle;
}
当前旋转(粉色代表玩家;绿色代表枪;黄色代表鼠标):
【问题讨论】:
标签: java rotation mouse lwjgl angle