为了理解搅拌机的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