請參閱我的編輯如下。球形相機
我在原點繪製了一個球體。我的相機正在以3個單位的半徑查看球體。我正試圖讓相機使用2D操縱桿圍繞球體運行。我目前使用下面的代碼繞着球體運行,但我不確定如何讓遊戲杆控制遊戲杆指向的旋轉方向。我的操縱桿提供0度的角度,當你逆時針旋轉時,度數增加到360度。操縱桿距離它的中心起點越遠,旋轉速度也會增加。我只是不知道該怎麼做。
PIOVER180 = Math.PI/180;
rho = 3;
theta = (theta+1)%360;
phi = (theta+1)%360;
camera.position.x = (float) (rho * Math.sin(theta * PIOVER180) * Math.cos(phi * PIOVER180));
camera.position.y = (float) (rho * Math.cos(theta * PIOVER180));
camera.position.z = (float) (rho * Math.sin(theta * PIOVER180) * Math.sin(phi * PIOVER180));
camera.normalizeUp();
libGDX提供了一個很好PerspectiveCamera
類的,我希望把它擴大爲SphericalCamera
,並用它來打電話給我轉,當我需要他們。
編輯:
我想,如果我可以想出如何使一個2D操縱桿操縱theta
和phi
變量正確那麼它應該工作的罰款。 theta
是正x軸與球體上的點之間的夾角,phi
其中z軸上的點位於正(正或負),而rho
是從中心點(0,0,0)到指向球體(基本上是半徑)
在場景中使用'glRotate(sensitivity,joystickMovementY,joystickMovementX,0.0f)'通常會更好,而不是移動相機 –
我一直在考慮這樣做,但我將會有一堆模型繞着我的球體子彈以及。我認爲只是改變相機的視角會更容易些? – DRiFTy
移動相機本身沒有任何問題。只是你最終會實現一些數學方法來完成'glRotate()','glTranslate()'等已經做的事情。 –