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

関連記事

Unreal Engine Tokyo MeetUp!へ行ってきた

Raspberry PiのGPIOを操作するPythonライブラリ『RPi.GPIO』の使い方

SIGGRAPH ASIA 2009で学生ボランティア募集してるみたい

ブログが1日ダウンしてました

仮想関数

WinSCP

Unityの薄い本

trimesh:PythonでポリゴンMeshを扱うライブラリ

テスト

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

写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』

PeopleSansPeople:機械学習用の人物データをUnityで生成する

Python for Unity:UnityEditorでPythonを使えるパッケージ

iOSデバイスと接続して連携するガジェットの開発方法

ZBrushで仮面ライダー3号を造る 仮面編 Dam Standardブラシでディティールを彫る

CGALDotNet:計算幾何学ライブラリ CGALのC#ラッパー

映画『シン・仮面ライダー』 メイキング情報まとめ

CGのためのディープラーニング

タイミングとクオリティ

PureRef:リファレンス画像専用ビューア

ZBrushでアヴァン・ガメラを作ってみる 歯茎を別パーツへ分割

フィクションに登場するUIデザインのまとめサイト

ZBrushで仮面ライダー3号を造る 仮面編 PolyGroup作成に再挑戦

映画から想像するVR・AR時代のGUIデザイン

AR (Augmented Reality)とDR (Diminished Reality)

映画『ミュータント・タートルズ』を観てきた

Kaolin:3Dディープラーニング用のPyTorchライブラリ

UnityのTransformクラスについて調べてみた

UnityでLight Shaftを表現する

参考書

単純に遊びに行くのはだめなのか?

openMVGをWindows10 Visual Studio 2015環境でビルドする

ガメラ生誕50周年

ZBrushで仮面ライダー3号を造る 仮面編 DynaMesh

SVM (Support Vector Machine)

ZBrushでアヴァン・ガメラを作ってみる 頬の突起を作り始める

OpenCV 3.1のsfmモジュールを試す

Maya LTでFBIK(Full Body IK)

日立のフルパララックス立体ディスプレイ

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

Maya 2015から標準搭載されたMILA

BSDF: (Bidirectional scattering distribution funct...

コメント