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


スポンサーリンク

関連記事

タダでRenderManを体験する方法
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
Unityからkonashiをコントロールする
『PIXARのひみつ展』に行ってきた
ZBrushでアヴァン・ガメラを作ってみる 甲羅の修正・脚の作り込み
Phongの表現力パネェ 材質別のPhong Shader用パラメータ一覧
OpenCVでカメラ画像から自己位置認識 (Visual Odometry)
ハリウッド版「GAIKING」パイロット映像
OpenFace:Deep Neural Networkによる顔の個人識別フレームワーク
Digital Emily Project:人間の顔をそっくりそのままCGで復元する
BSDF: (Bidirectional scattering distribution funct...
Python for Unity:UnityEditorでPythonを使えるパッケージ
Windows10でPyTorchをインストールしてVSCodeで使う
OpenCVのfindEssentialMat関数を使ったサンプルを読んでみる
iOSデバイスと接続して連携するガジェットの開発方法
FreeMoCap Project:オープンソースのマーカーレスモーションキャプチャ
OpenMayaのPhongShaderクラス
HD画質の無駄遣い
ZBrushのZmodelerとDynamic Subdivisionを学ぶ
ZBrushで仮面ライダー3号を造る 仮面編
Point Cloud Libraryに動画フォーマットが追加されるらしい
画像生成AI Stable Diffusionで遊ぶ
世界一下品なクマと世界一紳士なクマ
ZBrushで仮面ライダー3号を造る 仮面編 Dam Standardブラシでディティールを彫る
ZBrushトレーニング
SDカードサイズのコンピューター『Intel Edison』
『ゴジラ キング・オブ・モンスターズ』のVFXブレイクダウン
仮想関数
Mayaのプラグイン開発
プログラムによる景観の自動生成
Unityの各コンポーネント間でのやり取り
ドットインストールのWordPress入門レッスン
Maya 2015から標準搭載されたMILA
adskShaderSDK
ROSの薄い本
UnityでShaderの入力パラメータとして行列を渡す
ZBrushでアヴァン・ガメラを作ってみる おでこ(?)のバランス調整
ZBrushのお勉強
リニアアクチュエータ
OpenMayaRender
中学3年生が制作した短編映像作品『2045』
ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救出

コメント