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

関連記事

iPhone・iPod touchで動作する知育ロボット『ROMO』

映画『ブレードランナー 2049』のVFX

『ゴジラ キング・オブ・モンスターズ』のVFXブレイクダウン

ZBrushでゴジラ2001を作ってみる 姿勢の変更

このブログのデザインに飽きてきた

ラクガキの立体化 3Dプリント注文

ブログの復旧が難航してた話

Managing Software Requirements: A Unified Approach

OpenGV:画像からカメラの3次元位置・姿勢を推定するライブラリ

ハリウッド版「GAIKING」パイロット映像

今年もSSII

ZBrushCoreのTransposeとGizmo 3D

ZBrushのUV MasterでUV展開

Unityで360度ステレオVR動画を作る

ArUco:OpenCVベースのコンパクトなARライブラリ

定数

Windows Server 2008にAutodesk Maya 2009をインストール

UnityでARKit2.0

PythonでMayaのShapeノードプラグインを作る

CreativeCOW.net

ManimML:機械学習の概念を視覚的に説明するためのライブラリ

3D映画のポストプロダクション 2D-3D変換

OpenMayaのPhongShaderクラス

書籍『The Art of Mystical Beasts』を購入

参考になりそうなサイト

OpenCVで顔のランドマークを検出する『Facemark API』

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

OpenCVで平均顔を作るチュートリアル

Adobe Photoshop CS5の新機能

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

ZBrush 4R7

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

ZBrushのお勉強

フォトンの放射から格納までを可視化した動画

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

ZBrushトレーニング

レンダラ制作はOpenGL とか DirectX を使わなくてもできるんだぜ

OpenCV3.3.0でsfmモジュールのビルドに成功!

ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー

3分の動画でプログラミングを学習できるサイト『ドットインストール』

Autodesk Mementoでゴジラを3次元復元する

libigl:軽量なジオメトリ処理ライブラリ

コメント