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

関連記事

海外ドラマのChromaKey

中学3年生が制作した短編映像作品『2045』

Perfumeのライブパフォーマンスのビジュアル

Structure from Motion (多視点画像から...

SVM (Support Vector Machine)

シフトカーを改造してラジコン化する人達

スクラッチで既存のキャラクターを立体化したい

UnityでShaderの入力パラメータとして行列を渡す

UnityでPoint Cloudを表示する方法

Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『...

リメイク版ロボコップスーツのメイキング

物理ベースレンダリングのためのマテリアル設定チートシート

リニアアクチュエータ

Vancouver Film Schoolのデモリール

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

OpenCV

MetaHumanの頭部をBlenderで編集できるアドオン

OpenCVのfindEssentialMat関数を使ったサ...

日本でMakersは普及するだろうか?

BlenderのGeometry Nodeで遊ぶ

ZBrushでアヴァン・ガメラを作ってみる 口のバランス調整

ZBrushでUndo Historyを動画に書き出す

Quartus II

ZBrush4新機能ハイライト 3DCG CAMP 2010

Raytracing Wiki

Shader.jp:リアルタイム3DCG技術をあつかうサイト

ZBrushでアヴァン・ガメラを作ってみる 頭頂部の作り込み...

ZScript

Polyscope:3Dデータ操作用GUIライブラリ

OpenCV 3.3.0-RCでsfmモジュールをビルド

ポリゴン用各種イテレータと関数セット

ZBrushでゴジラ2001を作ってみる 身体のアタリを作る

Google App EngineでWordPress

Maya には3 種類のシェーダSDKがある?

UnityでOpenCVを使うには?

MythTV:Linuxでテレビの視聴・録画ができるオープン...

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

OpenGVの用語

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

科学技術計算向けスクリプト言語『Julia』

映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウ...

Raspberry PiのGPIOを操作するPythonライ...

コメント