[Unity初心者日記] キューブを動かしてみる

ヨメレバCSS
オリジナルCSS


※本サイトはアフィリエイトプログラムによる収益を得ています。
 ページ内のリンクがアフィリエイトリンクの場合があります。

前回:[Unity初心者日記] プロジェクトをつくってみる

[Unity初心者日記] プロジェクトをつくってみる で作成したプロジェクトの中心にあるキューブ。

とりあえずこいつを動かしてみます。

スポンサーリンク
GoogleAdSence レクタングル(大)

操作するスクリプトを用意する

まずそのあたりの操作をするためのスクリプトを作ります。

ProjectのAssetsで右クリックして、「Create→Folder」でScenesフォルダとScriptsフォルダを作成します。

そのままでもいいんですが、基本的に整理していきたいので。

スクリプトはScriptsの下に置いていきます。

Unity_1_3_folder

次にScriptsフォルダで右クリックして「Create→C# Script」を指定し、CubeControllerを作ります。

Unity_1_3_script

これを上に浮いてるCubeに追加します。

HierarchyでCubeを選択すると、右のInspectorにその情報が出るので、そこにCubeControllerをドラッグ&ドロップします。

Unity_1_3_inspector_before

すると、CubeControllerが追加されます。

Unity_1_3_inspector_after

これで、CubeControllerがこのCubeのコンポーネントとして動作するようになります。

追加する方法は、今回のようにInspectorにドラッグ&ドロップする方法、Hierarchyのオブジェクトにドラッグ&ドロップする方法、Inspectorの「Add Compornent」で選択する方法があります。これは都度やりやすい方法でやります。

さて中身。

キーボードで動かす

キーの上下左右で移動、スペースキーとバックスペースで接近/離れるという操作をつくってみます。

CubeControllerスクリプトをダブルクリックしてエディタを開くと、初期の状態として次のようになっています。

using UnityEngine;
using System.Collections;

public class CubeController : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

ここに処理を書き加えていくことで、プログラムを操作していきます。

初期ではStartとUpdateの2つのメソッドが用意されています。このメソッドの役割は次の通り。

Start() 実行されるときに一度だけ呼び出される
Update 毎フレーム呼び出される

一度だけ処理すればいいものはStartに、毎フレーム処理したいことはUpdateに書きます。

今回は、「キーボードの状態を拾ってCubeを動かす」としたいので、Updateに次のコードを書いてみます。

if (Input.GetKey(KeyCode.UpArrow))
{
	gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y + 0.1f, gameObject.transform.position.z);
}
if ( Input.GetKey(KeyCode.DownArrow))
{
	gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y - 0.1f, gameObject.transform.position.z);
}
if ( Input.GetKey(KeyCode.LeftArrow))
{
	gameObject.transform.position = new Vector3(gameObject.transform.position.x - 0.1f, gameObject.transform.position.y, gameObject.transform.position.z);
}
if ( Input.GetKey(KeyCode.RightArrow))
{
	gameObject.transform.position = new Vector3(gameObject.transform.position.x + 0.1f, gameObject.transform.position.y, gameObject.transform.position.z);
}
if ( Input.GetKey(KeyCode.Space) )
{
	gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z + 0.1f);
}
if (Input.GetKey(KeyCode.Backspace))
{
	gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z - 0.1f);
}

Input.GetKeyで指定されたキーが押されているか、ということを判定し、押されていたらgameObjectのtransform.positionを変更しています。

このgameObjectは、スクリプトがつけられているオブジェクトのものとなっていて(ここではCube)、そのtransformを変更することで、オブジェクトの位置が変更できます。

インスタンスの構造としては次のようになっていて、

GameObject - Compornent (CubeController)
           - Comportnet 
           - ...

というようにCubeControllerスクリプトはGameObjectが抱えているCompornetの一つなっているので、Compornent側からみて、親になるオブジェクトを参照している格好になります。

実行した結果。

Unity_1_3_key

上下左右キーとスペースキー、バックスペースキーで動く動く。

次回:[Unity初心者日記] キューブを動かしてみる 2.ゲームパッド編

スポンサーリンク
GoogleAdSence レクタングル(大)

シェアする

スポンサーリンク
GoogleAdSence レクタングル(大)