UnityのGameObjectの向きをScriptで制御する

オブジェクトの向きを、あるルールに従って制御したいような場合に使える方法。

基本的にGameObjectTransformを使う。Transformの持つforward, right, upがそれぞれX(), Y(), Z()の各軸みたいに対応している。
Transform

forward: ワールド座標系でのtransformの青軸。
right: ワールド座標系でのtransformの赤軸。
up: ワールド座標系でのtransformの緑軸。

これらは読み取り用として以下のように、使うこともできるけど、

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Example() {
        rigidbody.velocity = transform.forward * 10;
    }
}

例えば、以下のような感じで、transform.upの値を毎フレーム更新することで、常に一定の方向を向き続けさせることができる。
この例では、GameObjectがどんなに動いても、絶対に上下がひっくり返ったりしないようになる。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Update() {
        this.GameObject.transform.up = new Vector3(0, 1, 0);
    }
}

その他、transform.LookAtを使うと、特定の位置座標を注視するように向きを制御することができる。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Transform target;
    void Update() {
        transform.LookAt(target);
    }
}

これでカメラが常に1つのオブジェクトをフレームに捉えるような実装ができる。
この方法は、向きを数値入力でなく、他のオブジェクトとの位置関係で制御できるので操作がGUI上で直観的に行えるのでお勧め。

関連記事

MPFB2:Blenderの人体モデリングアドオン

ROMOハッカソンに行ってきた

Windows10でPyTorchをインストールしてVSCo...

映画『ジュラシック・ワールド』のVFXメイキング

Physics Forests:機械学習で流体シミュレーショ...

Mitsuba 2:オープンソースの物理ベースレンダラ

Blendify:コンピュータービジョン向けBlenderラ...

Raytracing Wiki

オープンソースの人体モデリングツール『MakeHuman』の...

ZBrushでゴジラ2001を作ってみる 身体のバランスを探...

ZBrushでアヴァン・ガメラを作ってみる 爪とトゲを追加

UnityでLight Shaftを表現する

Composition Rendering:Blenderに...

Faceshiftで表情をキャプチャしてBlender上でM...

書籍『The Art of Mystical Beasts』...

Russian3DScannerのトポロジー転送ツール『Wr...

WordPress on Google App Engine...

マルコフ連鎖モンテカルロ法

ZBrushでアヴァン・ガメラを作ってみる 歯を配置

Unityからkonashiをコントロールする

iPhone欲しいなぁ

リアルタイム レイトレーシングAPI『DirectX Ray...

Oculus Goを購入!

Unreal Engine Tokyo MeetUp!へ行っ...

オープンソースのネットワーク可視化ソフトウェアプラットフォー...

ZBrushで仮面ライダー3号を造る 仮面編 横顔のシルエッ...

AfterEffectsプラグイン開発

html5のcanvasの可能性

WordPressのテーマを自作する

Photo Bash:複数の写真を組み合わせて1枚のイラスト...

テスト

SIGGRAPH ASIAのマスコット

3D復元技術の情報リンク集

MB-Lab:Blenderの人体モデリングアドオン

Phongの表現力パネェ 材質別のPhong Shader用...

After Effects全エフェクトの解説(6.5)

2012のメイキングまとめ(途中)

Webサイトのワイヤーフレームが作成できるオンラインツール

インターフェイスは世界を規定する

Python for Unity:UnityEditorでP...

Unityをレンダラとして活用する

Gource:バージョン管理の履歴を可視化するツール

コメント