1

Blender と Python を使い始めたばかりで、Python 2.5.1 で Blender ゲーム エンジンを使用してキューブの回転プロパティにアクセスしようとしています。

この python スクリプトをシーンの立方体にアタッチしました。

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

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

私が得るのはこのエラーだけです:
コントローラーからのPythonスクリプトエラー "cont#CONTR#1": Traceback (most recent call last): File "starter", line 4, in AttributeError: 'KX_GameObject' object has no attribute 'RotX'

回転プロパティにアクセスする方法を誰か教えてもらえますか? 気が狂いそうです!

ありがとう、
ウィル

4

2 に答える 2

3

プロパティ localOrientation を使用できます。これは、現在の回転の出力を許可しないモーション アクチュエータを使用せずに、ゲーム エンジンで回転にアクセスする唯一の方法と思われます。

localOrientation は、リストのリスト、または 3x3 マトリックスで構成されます。行列の各行は、対応する軸が指すポイントです。デフォルトのキューブの場合:

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

print(own.localOrientation)

オブジェクトの x 軸が点 (1, 0, 0) を指し、y が(0, 1, 0) に、z を (0, 0, 1) に

お役に立てれば!

編集:これをいじってみましたが、何かがおかしい場合は、これがローカル指向であることを覚えておいてください。正常に動作しない場合は、オブジェクトのローカル ロケーションを確認してください。オブジェクトが (9,-10,0) にあるように見えても、オブジェクトのローカル位置が (0,0,0) であることに気づかなかったため、ひどく混乱しました。

于 2011-03-25T23:14:50.437 に答える
1

私が覚えている限りでは、getDRot() 関数で回転プロパティにアクセスできます。ここで、getDRot()[0] = rotX、getDRot()[1] = rotY、getDRot()[2] = rotZ です。しかし、所有者オブジェクトで呼び出すことができるかどうかはわかりません。ずっと前に書いたいくつかのスニペットから、アクチュエーターでこの関数を呼び出します。したがって、ボールにはアクチュエーターが必要です。

import GameLogic
cont = GameLogic.getCurrentController()
moveAct = cont.getActuator("move") # or the name you gave it
rotX = moveAct.getDRot()[0]
#etc
于 2011-03-25T14:08:23.567 に答える