Three.jsを使って、作ってみた

プログラミング関連の事を色々書いています(^^) 週末はレストランやコンビニのお菓子のことを書いています。

Unity 衝突判定

今回は、Unityの「衝突判定」について書きます。


まずはじめに、衝突判定をするやり方を書いていきます。

オブジェクトに「RigidBody」を追加します。
f:id:gupuru:20140429232443p:plain
これを追加しないと、判定されないので、忘れないでください。

②Scriptに次のコードを書きます。(Javascript

function OnCollisionEnter () {
	
        Debug.Log("hit!!");

}

以上です。簡単ですね(笑)

それでは、実際に上のコードを使い、試してみます。

このようなものを作りました↓
f:id:gupuru:20140429233037p:plain

球を動かし、左右にある壁に当ててみます。

Scriptは、こんな感じです。

#pragma strict

function Start () {
	Debug.Log("start");
}

function Update () {

	var x : float = Input.GetAxis("Horizontal");
	var y : float = Input.GetAxis("Vertical");
	
	transform.Translate(x * 0.2, 0, y * 0.2);

	if (Input.GetKey("space")) {
	    transform.position.y += 0.1;
	}

       if (Input.GetKey("left shift")) {
	    transform.position.y -= 0.1;
	}

}

function OnCollisionEnter () {
	
        Debug.Log("hit!!");

}

実行すると・・・
f:id:gupuru:20140429233326p:plain
「hit!!」と出てるので、衝突判定できてます。



で、衝突判定のメッソドは「OnCollisionEnter 」だけではありません。
衝突判定のメッソドには、これらがあります。

  • OnCollisionEnter
  • OnCollisionStay
  • OnCollisionExit

「OnCollisionEnter」は、他オブジェクトと衝突した瞬間に呼ばれるメソッドです。基本的に衝突につき一回しか呼ばれません。

「OnCollisionStay」は、他オブジェクトと触れている間に呼ばれるメソッドです。触れている間は、メソッドが呼ばれます。

「OnCollisionExit」は、衝突した他オブジェクトから離れた瞬間に呼ばれるメソッドです。基本的に衝突につき一回しか呼ばれません。

それぞれをコードで書くとこんな感じです。(javascript

function OnCollisionEnter () {
        Debug.Log("hit!!");
}

function OnCollisionStay(){
	Debug.Log("touch");
}

function OnCollisionExit(){
	Debug.Log("he");
}

この辺は実際に試してみたほうが、分かりやすいです。



次に、引数について書きます。
衝突判定のメッソドの引数には、「Collision」オブジェクト というものがあります。

OnCollisionEnter(Collision collision)
OnCollisionStay(Collision collision)
OnCollisionExit(Collision collision)

「collision.gameObject」とすると、衝突した相手の情報を取得できます。
こんな感じに使います。(javascript

function OnCollisionEnter (obj :Collision) {
	if(obj.gameObject.name == "kabe"){
		Debug.Log("hit1");
	}else{
		Debug.Log("hit2");
	}
}

f:id:gupuru:20140429235344p:plain
右にあるオブジェクトは「kebe」という名前で、球が「kabe」に衝突すると「hit1」と表示されます。それ以外に衝突したら、「hit2」と出ます。


これで、終わります。


参考サイト
ActionScript入門Wiki - Unity - 衝突判定