【问题标题】:Accessing the Rotation of a blender Object访问搅拌机对象的旋转
【发布时间】:2011-07-22 21:48:10
【问题描述】:

我刚开始使用 Blender 和 Python,我一直在尝试使用带有 Python 2.5.1 的 blender 游戏引擎来访问立方体的旋转属性

我在场景中将这个 python 脚本附加到一个立方体:

cont = GameLogic.getCurrentController()
own = cont.owner

print own.RotX, own.RotY, own.RotZ

我得到的只是这个错误:
来自控制器“cont#CONTR#1”的 Python 脚本错误: 回溯(最近一次通话最后): 文件“starter”,第 4 行,在 AttributeError:“KX_GameObject”对象没有属性“RotX”

谁能告诉我如何访问旋转属性?感觉自己快疯了!

谢谢,
会

【问题讨论】:

    标签: python rotation game-engine blender


    【解决方案1】:

    您可以使用属性 localOrientation,这似乎是在游戏引擎中访问旋转的唯一方法,而无需使用不允许打印当前旋转的运动执行器。

    localOrientation 由列表列表或 3x3 矩阵组成。矩阵的每一行都是相应轴将指向的点。 对于默认立方体:

    import GameLogic
    cont = GameLogic.getCurrentController()
    own = cont.owner
    
    print(own.localOrientation)
    

    将产生 Matrix((1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)) 因为对象的x轴指向(1, 0, 0)点,y指向( 0, 1, 0), z 到 (0, 0, 1)

    希望这会有所帮助!

    编辑: 只是玩弄这个,我想说,如果事情表现得很奇怪,请记住这是面向本地的。如果事情不正常,请检查对象的本地位置!我只是非常困惑,因为我没有意识到我的对象的本地位置是 (0,0,0),即使它看起来像是在 (9,-10,0)

    【讨论】:

      【解决方案2】:

      据我所知,您可以通过 getDRot() 函数访问旋转属性,其中 getDRot()[0] = rotX,getDRot()[1] = rotY,getDRot()[2] = rotZ。但我不确定您是否可以在所有者对象上调用它。根据我很久以前写的一些 sn-ps,我在执行器上调用了这个函数。所以你的球必须有一个Actuator,然后你就可以

      import GameLogic
      cont = GameLogic.getCurrentController()
      moveAct = cont.getActuator("move") # or the name you gave it
      rotX = moveAct.getDRot()[0]
      #etc
      

      【讨论】:

        猜你喜欢
        • 2016-04-22
        • 2013-04-13
        • 2015-08-23
        • 1970-01-01
        • 2018-01-28
        • 2020-08-10
        • 2017-04-21
        • 2017-02-02
        • 1970-01-01
        相关资源
        最近更新 更多