TransformでGameObjectを移動する (1/4)
作成:2014-08-30 12:09
更新:2014-08-30 12:09
更新:2014-08-30 12:09
■GameObjectクラスとは?
前回、デフォルトで用意されるソースコードに少しだけ手を加えて、Cube(スクリプトを組み込んだゲームオブジェクト)を回転するプログラムを作りました。ゲームオブジェクトを操作するには、まず「ゲームオブジェクトは、C#の世界でどう扱われているのか?」を理解しないといけません。
C#は、すべてを「クラス」として定義し利用します。ゲームオブジェクトも、当然クラスとして定義されています。それが「GameObject」というクラスです。このクラスの中に、ゲームオブジェクトのさまざまな設定情報や、ゲームオブジェクトを操作するための機能などがまとめられています。
GameObjectを扱うとき、まず最初に覚えるべきは「trasform」というプロパティでしょう。これは、位置や向き、大きさなどの情報を扱う「Transform」というクラスのインスタンスが設定されているプロパティです。
このTransformクラスは、ゲームオブジェクトのインスペクターにある「Transform」の項目の内容に相当する機能が用意されています。つまり、このTransformにある機能の使い方を覚えれば、基本的なゲームオブジェクトの操作はできるようになる、というわけですね。
前回、ちょっとだけ書いたスクリプトでは、こんな具合にしてCubeを回転させていました。
thisっていうのは、このクラスのインスタンス自身を示すものでした。でも、待って下さい。このクラスは、GameObjectではなく、MonoBehaviourというクラスを継承して作られています。これはどういうことでしょう?
GameObjectとMonoBehaviourは、継承関係もありません。実は、全然別のクラスなんです。では、なぜMonoBehaviourを継承したクラスがGameObjectのように使えるのか。それは、MonoBehaviourクラスでは、このスクリプト・コンポーネントを組み込んでいるGameObjectインスタンスのプロパティ類がすべて用意されているからです。つまり、MonoBehaviourはGameObjectと別のクラスだけれど、GameObjectとして扱えるように同じものが用意されている、というわけです。
ですので、このMonoBehaviourを継承したクラスは、「ほぼGameObject」と考えて利用できるようになっているんです。
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というクラスを継承して作られています。これはどういうことでしょう?
GameObjectとMonoBehaviourは、継承関係もありません。実は、全然別のクラスなんです。では、なぜMonoBehaviourを継承したクラスがGameObjectのように使えるのか。それは、MonoBehaviourクラスでは、このスクリプト・コンポーネントを組み込んでいるGameObjectインスタンスのプロパティ類がすべて用意されているからです。つまり、MonoBehaviourはGameObjectと別のクラスだけれど、GameObjectとして扱えるように同じものが用意されている、というわけです。
ですので、このMonoBehaviourを継承したクラスは、「ほぼGameObject」と考えて利用できるようになっているんです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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); } }
※関連コンテンツ