Unity5学習の際の覚え書き。

トリガーとは

接触したときに何かを実行するための引き金。
トリガーに設定されたオブジェクトは、他のオブジェクトと物理的な接触はしない。
ぶつかってもそのまますーっと通り抜けていく。

トリガーの設定

オブジェクトを選択し、インスペクターからコライダーの設定を探す。
そこに「Is Trigger」というチェックボックスがあるので、チェックする。

トリガーのイベント

トリガー設定したオブジェクトでは、他のオブジェクトとぶつかっても衝突判定のイベントは発生しなくなる。
その代わりに、トリガーオブジェクト専用のイベントが発生するようになる。

接触したときのイベント用メソッド

void OnTriggerEnter(Collider collider) { ... }

接触している間、常に発生し続けるイベント用メソッド

void OnTriggerStay(Collider collider) { ... }

離れたときのイベント用メソッド

void OnTriggerExit(Collider collider) { ... }

トリガーイベントを使ったスクリプト

public class myscript : MonoBehaviour {

	void Start () {
		GameObject cube = GameObject.Find ("Cube");
		cube.GetComponent<Renderer> ().material.color = new Color (1f, 0, 0, 0.5f);
	}

	void Update () {
	}

	void OnTriggerEnter(Collider collider){
		if (collider.gameObject.tag == "Player") {
			collider.gameObject.GetComponent<Renderer> ().material.color = new Color (0, 1, 0, 0.5f);
		}
	}

	void OnTriggerStay(Collider collider){
	}

	void OnTriggerExit(Collider collider){
		if (collider.gameObject.tag == "Player") {
			collider.gameObject.GetComponent<Renderer> ().material.color = new Color (1, 0, 0, 0.5f);
		}
	}
}

大事な覚え書き

[P]・・・プレイヤー
[T]・・・isTriggerオブジェクト

[T]にisTriggerを設定。
[P]にスクリプトをアタッチして、OnTriggerEnterを記述。

するとプレイヤーは、[T]オブジェクトをすり抜けて、イベントは発生する。

Trrigerイベントの発生条件

引用: 【Unity】 静止した物体同士の当たり判定の検出について

  • どちらかにRigidbodyが必ず付いていること
  • RigidbodyのIs Kinematic(物理挙動をさせない)にチェックが入っていること
  • ColliderのIs Triggerにチェックが入っていること

また、さらに以下の様な条件がある。
  • Rigidbodyが付いている方のオブジェクトが移動もしくは回転している(静止しているとダメ)
  • (ただし、起動直後のフレームだけは静止していても検出可能)

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】
Wiki記法ガイド

リンク

ゲームバー大阪心斎橋

ゲームバー大阪梅田

ゲームバー大阪心斎橋

ダーツ&ダイニングバー大阪梅田

メニュー

Unity


スマホ操作

Unity - GameObject

Unity - 3DCG

メンバーのみ編集できます