访问搅拌器对象的旋转

时间:2011-03-25 12:58:24

标签: python rotation game-engine blender

我刚开始使用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脚本错误: Traceback(最近一次调用最后一次):   文件“starter”,第4行,in AttributeError:'KX_GameObject'对象没有属性'RotX'

有人可以告诉我如何访问旋转属性吗?我觉得我疯了!

谢谢,

2 个答案:

答案 0 :(得分:3)

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

localOrientation包含列表列表或3x3矩阵。矩阵的每一行是相应轴指向的点。 对于默认多维数据集:

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

print(own.localOrientation)

会屈服 矩阵((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)

答案 1 :(得分:1)

据我所知,你可以通过getDRot()函数访问rotation属性,其中getDRot()[0] = rotX,getDRot()[1] = rotY,getDRot()[2] = rotZ。但我不确定你是否可以在所有者对象上调用它。从我很久以前写过的一些片段中,我将这个功能称为Actuator。所以你的球必须有一个执行器,然后你可以

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