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上で直観的に行えるのでお勧め。

関連記事

ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス...

ヘッドマウントディスプレイとビジュアリゼーションの未来

UnityのMonoBehaviourクラスをシングルトン化...

Oculus Goを購入!

書籍『ゼロから作るDeep Learning』で自分なりに学...

WebGL開発に関する情報が充実してきている

ZBrushでアヴァン・ガメラを作ってみる 口内の微調整・身...

OpenCVのバージョン3が正式リリースされたぞ

Transformers ”Reference & Buli...

ドラマ『ファーストクラス』のモーショングラフィックス

ポイントクラウドコンソーシアム

Google Colaboratoryで遊ぶ準備

Google App Engineのデプロイ失敗

viser:Pythonで使える3D可視化ライブラリ

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

Adobe Photoshop CS4 Extendedの3...

『シン・ゴジラ』のコンセプトアニメーションのメイキング動画が...

UnityからROSを利用できる『ROS#』

ゴジラ三昧

フルCGのウルトラマン!?

Boost オープンソースライブラリ

ZBrushCore

Open3D:3Dデータ処理ライブラリ

OpenCVの超解像(SuperResolution)モジュ...

ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み

ゴジラ(2014)のメイキング

Mechanizeで要認証Webサイトをスクレイピング

openMVGをWindows10 Visual Studi...

Web経由でRaspberry PiのGPIOを操作したい

Google Chromecast

JavaScriptとかWebGLとかCanvasとか

CGWORLD CHANNEL 第21回ニコ生配信は『シン・...

OpenCVでPhotoshopのプラグイン開発

AndroidもopenGLも初心者さ (でもJavaは知っ...

Photoshopで作る怪獣特撮チュートリアル

IronPythonを使ってUnity上でPythonのコー...

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

ニンテンドー3DSのGPU PICA200

ヒーローに変身なりきりアーケードゲーム『ナレルンダー』

TVML (TV program Making langua...

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

続・ディープラーニングの資料

コメント