好吧,所以我得到了一些移動代碼,我想我需要手動輸入何時上坡/下坡。我得到的所有東西都是斜率的正常值,矢量,以及我當前和以前的位置,以及我的偏航。基於偏航上坡/下坡的更好方法?
有沒有更好的方法來旋轉,無論我根據我的偏航上坡或下坡?
Vector3f move = new Vector3f(0,0,0);
move.x = (float)-Math.cos(Math.toRadians(yaw));
move.z = (float)-Math.sin(Math.toRadians(yaw));
System.out.println("slopeNormal.z: " + slopeNormal.z + "move.z: " + move.z);
move.normalise();
float vx = (float) (Math.sqrt(Math.pow(move.y, 2) + Math.pow(move.z, 2)) * move.x);
float vy = (float) (Math.sqrt(Math.pow(move.x, 2) + Math.pow(move.z, 2)) * move.y);
float vz = - vx * slopeNormal.x - vy * slopeNormal.y;
move.scale(movementSpeed * delta);
if(vz < 0)
move.y -= slopeVec.y * 1.5f;
if(vz > 0)
move.y += slopeVec.y * 1.5f;
Vector3f.add(pos, move, pos);
編輯:更新的代碼。
你可以在Stack Overflow的遊戲開發兄弟http://gamedev.stackexchange.com/上獲得更多答案。 – rcdmk