Java3D游戏动作

问题描述:

我正在制作Java3D游戏(Java3D Project here),我想知道如何将玩家相对于其围绕y轴的位置和旋转角度进行移动。Java3D游戏动作

我可以围绕y轴旋转播放器并设置位置,但是相对于x和z轴设置位置,所以如果播放器相对于原始旋转朝后,那么当您按下前锋的关键,球员倒退。

我该怎么做才能让玩家走向它所面对的方向?

您需要使用输入的差异(向前,向后,向左,向右)跟踪运动,然后使用极坐标函数将其转换为绝对坐标(x,z)。

例如(只是向前运动):

move.x = forward*(Math.sin(yrotate)) 
move.z = forward*(Math.cos(yrotate)) 

调整完美。横向运动(strafe)将颠倒sin/cos。

+0

是以度数还是弧度为单位......? – DankMemes 2012-04-12 22:22:10

+0

应该以弧度表示,这就是Math.sin/cos假定的值。要找出哪个是哪个,回想一下cos(0)= 1和sin(0)= 0;这意味着无论开始定位的玩家 - 沿x或z移动 - 都应该有cos部分。我假设z是因为OpenGL。 – 2012-04-13 02:34:46

+0

逆转意味着否定? – 2012-08-23 11:46:14