爲了理解攪拌機的python遊戲腳本,我目前嘗試使用從this link的FPSController結構來構建一個場景,其中人們可以在球體周圍走動。重力和FPSController取向我試圖構建蟒控制器,目前看起來像這樣:攪拌機:繞着球體行走
def main():
print("Started")
controller = bge.logic.getCurrentController()
me = controller.owner
distance, loc, glob = me.getVectTo((0,0,0))
grav = controller.actuators['Gravity']
strength = me['Gravity']
force = strength*(distance*distance)*glob
grav.force = force
try:
rot = Vector((0,0,-1)).rotation_difference(glob).to_matrix()
except Exception as E:
print(E)
rot = (0,0,0)
rotZ = me.orientation
me.orientation = rot*rotZ
controller.activate(grav)
main()
這大致工作到任何角度變爲超過180度,並且看起來不連續的即可。我認爲這是來自rotation_difference是不連續的 - blender documentation on Math Types & Utilities沒有說什麼,我還沒有足夠的關於四元數表示還沒有看到,如果連續的地圖是可能的 - 我想有一個更優雅的方式來實現本地Z方向持續依賴於鼠標,而局部X和Y方向依賴於某個給定的矢量,但是如何?
3D空間中的旋轉可能非常困難。在我看來,把時間放在理解四元數是最簡單的,然後使用它們。 – fluffels 2012-10-19 13:03:55
如果使用歐拉角(而不是四元數),您可能會遇到的問題之一是萬向節鎖(http://en.wikipedia.org/wiki/Gimbal_lock),這可能會導致相當多的問題 – decden 2013-04-06 19:53:11
是否容易嘗試此操作當你安裝了Blender時出來? (不是Blender專家) – Gerard 2013-06-10 19:50:18