コンポーネント
componentとは、対象のGameObjectのプロパティというか性質を定義するものです。
GameObjectは球体やカメラなどさまざまな物体の位置だったり、重力などの物理演算だったり、さまざまな性質を構成するもので、
Unityの画面上では入力をすることができますが、一定の値となるため、何かゲーム中に変更を加えたいとかある場合は、そこで設定することができません。
こういう場合は、プログラムC#で可変的にcomponentの値を変更したりできるようにする必要があります。
unityでは以下の左のようなinspectorの欄がcomponentとなります。
以下のようにTransformというcomponent、Sphere Colliderというcomponent、Rigidbodyというcomponentなど
さまざまなものが定義されています。
そしてこれらをプログラムと紐づけるには、右のように
GetComponent<コンポーネント名>();
とすることで簡単にプログラム上で扱えるようになります。
そしてクラスのプロパティ(グローバル変数化)宣言をする必要があります。
こうすることでこのクラスの他のメソッドでもコンポーネントオブジェクトを使用できるようになります。
そして選択中のGameObjectに対して新たにcomponentを追加したい場合は、
上の画像の黄色枠で追加することができます。
衝突
private void OnTriggerEnter(Collider other) { if(other.gameObject.CompareTag("Pick Up")) { other.gameObject.SetActive(false); count = count + 1; print(count); SetCountText(); } } void SetCountText() { print(count.ToString()); CountText.text = "カウント:" + count.ToString(); }
OnTriggerEnterで衝突した時に呼び出される関数で、
衝突した際の情報はColliderクラスのotherという変数に格納される。
この中にgameObjectというプロパティがあり、まさに衝突した物体の情報が入っている。
other.gameObject.CompareTag("PickUp")
とあるが、衝突した物体のタグが"PickUP"かどうかを判定しており、trueなら処理が行われるようになっている。
TagはUnityの管理画面上で設定することができます。