-
AddTorque 関数は AddForce に似ていますが、
-
違いとして、 ゲームオブジェクトを定まった軸の周りに
-
回転させることで力が働きます。
-
AddTorque には二つのコンポーネントがあり、
-
二つめは必須ではありません。一つめは
-
トルクを適用すべき軸および
-
適用するトルクの大きさを定義する
-
ベクトルです。
-
このサンプルでは powerCube は
-
このスクリプトがアタッチされています。
-
AddTorque 関数を使用していて
-
オブジェクトの上方向である
-
Transform.up が
-
トルクを加えるべき軸であることを示します。
-
Unity は左手系であるため
-
この図で示すように
-
トルクはこの軸周りに加えられます。
-
自身で試すために、親指を立てて
-
左手系の手の形を作ってみてください。
-
手のひらで指が曲がっている方向に
-
トルクが加えられていると想像して下さい。
-
ここでは
-
水平軸からの入力変数 h に amount 変数を掛け算して、
-
さらにデルタ時間を
-
掛け算します。
-
もうひとつの AddTorque の行には transform.right 軸に
-
、すなわちオブジェクトの X 軸に
-
適用しています。
-
これを実際に動かしてみましょう。
-
Horizontal の キーを押下すると
-
トルクを加えることが出来て、みてのとおり
-
トルクを加えたあとに、キーを話すと、
-
初速はそのまま継続するのは
-
これが物理シミュレーション
-
であるためです。
-
同様にして X 軸に適用して
-
そしてこれはローカル座標であるため
-
どこにあろうとも軸を中心に
-
回ります。
-
Rigidbody の Angular Drag コンポーネントにより
-
オブジェクトにどれぐらいの量だけトルクが
-
適用されているか
-
定義されます。
-
例えば、たくさんのトルクを
-
この軸に適用して、初速のまま動かすことが出来ますが、
-
Angular Drag を増加させると
-
Angular Drag の影響でオブジェクトが動くのが
-
難しくなってきます。
-
これに対して Angular Drag がまったくない場合、
-
オブジェクトを特定の方向にスピンし続けるのは
-
容易なことであり、加わる抵抗(Drag)はきわめて
-
僅かです。
-
二つめのパラメータは必須でないものであり、
-
適用される力のタイプに
-
影響があります。
-
もし何も入れなかった場合、
-
タイプはデフォルトの Force となります。
-
これは継続的な変更に用いられ
-
重量(Mass)により影響を受けます。
-
Acceleration は重量により影響を受けない
-
継続的な変更に使用されます。
-
Impulse は重量に影響される瞬間的な変化
-
に使用されます。
-
Velocity Change は重量に影響されない
-
瞬間的な変更に使用されます。
-
これをスクリプトに追加することでの影響をみてみましょう。
-
次にトルクを使用してキューブを回転させるとき、
-
反対のキーを押して
-
逆方向にトルクを適用したとき、
-
明らかに速く反応します。
-
このことから、トルクを追加するときに加える力のタイプを
-
考慮するのは重要なことです。
(翻訳:gamesonytablet)