Unity3d 入門 04 「スクリプト」

今回はオブジェクトを「スクリプト」で制御する方法について説明します。


まず、オブジェクトの光源・カメラ・床そして球を設置します。
Project ビューの Create > C# Script から
新しいスクリプトコンポーネントを作ります。
そしてこのスクリプトを、オブジェクト球の Inspector 内にドラッグして貼り付けます。
(ドラッグする際は、Inspector ビューの右の鍵を忘れずに)


続いて、MonoDevelop などでこの新しいスクリプト NewBehaviourScript を編集してみましょう。
まず、前回のおさらい。
以下のように書き、ゲームを実行すると球は右に動いていきます。
this.transform.position にはこの球の位置が格納されており、
X 方向に少しずつ値を足すと、右に動いていく・・・というカラクリです。

public class NewBehaviourScript : MonoBehaviour {
	void Start () {
		m_Frame = 0;
	}
	void Update () {
		this.transform.position += new Vector3(0.1f, 0, 0);
	}
}


次に球を膨張させてみましょう。
以下のように書きゲームを実行すると・・。
this.transform.localScale には大きさの値が格納されているのです。

public class NewBehaviourScript : MonoBehaviour {
	void Start () {
	}	
	void Update () {
		this.transform.localScale += new Vector3(0.1f, 0.1f, 0.1f);
	}
}


では色を変更してみましょう。
単に変更するだけでなく点灯する感じにしたいと思います。

public class NewBehaviourScript : MonoBehaviour {
	const int FrameMax = 360;
	private int m_Frame;
	
	void Start () {
		m_Frame = 0;
	}
	void Update () {
		float red = Mathf.Sin((float)m_Frame/(float)FrameMax * Mathf.PI * 2.0f);
		Color color = new Color(Mathf.Abs(red), 0.0f, 0.0f, 1.0f);
		this.renderer.material.SetColor("_Color", color);		
		m_Frame++;
	}
}

色のデータは、renderer.material に格納されているので、
ここに setColor 関数を使って設定しています。


スクリプトで制御できるのは、
スクリプトが貼り付けられたオブジェクトだけでしょうか?
違います。
以下のように、オブジェクトを検索することで
別のオブジェクトに対しても制御することができます。

public class NewBehaviourScript : MonoBehaviour {
	void Start () {
	}
	void Update () {
		GameObject o = GameObject.Find("Plane");
		if(o != null) o.transform.position += new Vector3(0, 0.01f, 0);
	}
}

どんどん床が上がってきています!

このようにスクリプトを使うことで
オブジェクトを思いのままに動かすことができるようになるのです!