libro
www.tuyano.com
C#ではじめるUnityプログラミング入門

TransformでGameObjectを移動する (1/4)

作成:2014-08-30 12:09
更新:2014-08-30 12:09

■GameObjectクラスとは?

前回、デフォルトで用意されるソースコードに少しだけ手を加えて、Cube(スクリプトを組み込んだゲームオブジェクト)を回転するプログラムを作りました。ゲームオブジェクトを操作するには、まず「ゲームオブジェクトは、C#の世界でどう扱われているのか?」を理解しないといけません。

C#は、すべてを「クラス」として定義し利用します。ゲームオブジェクトも、当然クラスとして定義されています。それが「GameObject」というクラスです。このクラスの中に、ゲームオブジェクトのさまざまな設定情報や、ゲームオブジェクトを操作するための機能などがまとめられています。

GameObjectを扱うとき、まず最初に覚えるべきは「trasform」というプロパティでしょう。これは、位置や向き、大きさなどの情報を扱う「Transform」というクラスのインスタンスが設定されているプロパティです。

このTransformクラスは、ゲームオブジェクトのインスペクターにある「Transform」の項目の内容に相当する機能が用意されています。つまり、このTransformにある機能の使い方を覚えれば、基本的なゲームオブジェクトの操作はできるようになる、というわけですね。


■GameObject = MonoBehaviour?

前回、ちょっとだけ書いたスクリプトでは、こんな具合にしてCubeを回転させていました。
this.transform.Rotate(num, num, num);
スクリプトが組み込まれているゲームオブジェクトのtransformプロパティ(に保管されているTransformインスタンス)のRotateというメソッドを呼び出して回転していたのですね。Rotateについてはこの後で触れるとして、ここで注目して欲しいのは「this」です。

thisっていうのは、このクラスのインスタンス自身を示すものでした。でも、待って下さい。このクラスは、GameObjectではなく、MonoBehaviourというクラスを継承して作られています。これはどういうことでしょう?

GameObjectMonoBehaviourは、継承関係もありません。実は、全然別のクラスなんです。では、なぜMonoBehaviourを継承したクラスがGameObjectのように使えるのか。それは、MonoBehaviourクラスでは、このスクリプト・コンポーネントを組み込んでいるGameObjectインスタンスのプロパティ類がすべて用意されているからです。つまり、MonoBehaviourGameObjectと別のクラスだけれど、GameObjectとして扱えるように同じものが用意されている、というわけです。

ですので、このMonoBehaviourを継承したクラスは、「ほぼGameObject」と考えて利用できるようになっているんです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※前回、作成したスクリプト

using UnityEngine;
using System.Collections;

public class myscript : MonoBehaviour {
    private float num;

    // Use this for initialization
    void Start () {
        num = 1.0f;
    }
    
    // Update is called once per frame
    void Update () {
        this.transform.Rotate(num, num, num);
    }
}
※関連コンテンツ

「C#ではじめるUnityプログラミング入門」に戻る