(この記事の使用環境: Unity5.4.2f2 Personal、Windows10)
さて、今回はゲームオブジェクトに付けられたタグを動的に切り替えるお話。
こんな感じ。文字が小さいですが、コンソールにぶつかったオブジェクトのタグ情報を出力しています。
概要はこんな感じ。
まずは、対象物に付けるタグを2種類作り、一方を対象物に付けておきます。今回は、タグ「Pushable」と「Climbable」を作り、対象物「CubeObstacle」にタグ「Pushable」を付けました。
あとはスクリプトで必要なときにタグを切り替えるだけ。今回はCubeObstacleにアタッチしたスクリプトで、壁にぶつかったらタグを「Climbable」に切り替えています。
何かにぶつかったとき以外に、時間や場所の変化などでタグを切り替えることもできそうですね。
今回は以上です。
さて、今回はゲームオブジェクトに付けられたタグを動的に切り替えるお話。
こんな感じ。文字が小さいですが、コンソールにぶつかったオブジェクトのタグ情報を出力しています。
概要はこんな感じ。
- プレイヤーであるロボくんがはじめにCubeにぶつかったとき、Cubeに付けられているタグは"Pushable"です。
- ロボくんに押されてCubeが壁(Wall)にぶつかると、Cubeのタグが"Climbable"に変更されます。
- ロボくんはぶつかったオブジェクトのタグによって振る舞いを変えます。(これは次回の記事で解説予定)
まずは、対象物に付けるタグを2種類作り、一方を対象物に付けておきます。今回は、タグ「Pushable」と「Climbable」を作り、対象物「CubeObstacle」にタグ「Pushable」を付けました。
あとはスクリプトで必要なときにタグを切り替えるだけ。今回はCubeObstacleにアタッチしたスクリプトで、壁にぶつかったらタグを「Climbable」に切り替えています。
public class CubeObstacle : MonoBehaviour { private void OnCollisionEnter (Collision collision) { if(collision.gameObject.tag == "Wall") // 壁にぶつかったら { this.tag = "Climbable"; // タグを変更する GetComponent<Rigidbody> ().constraints = RigidbodyConstraints.FreezeAll; // 移動・回転をすべてフリーズする } } }
何かにぶつかったとき以外に、時間や場所の変化などでタグを切り替えることもできそうですね。
今回は以上です。
コメント