この場合、ひとまとめに処理するのではなく、いくつかの処理に分けるのが大切です。
これらの処理は、いずれも初歩的な内容(当たり判定が複雑であるぐらい)なので、理解していれば難しくありません。
また、詳細が必要であれば自分で調べてください。
何らかのゲームオブジェクトに触れたかどうかを判定するプログラム
何かオブジェクトがぶつかったかどうかの判定は、OnTriggerEnter()かOnCollisionEnter()を使います。
また、2D用のOnTriggerEnter2D()かOnCollisionEnter2D()もあります。
ワープゾーンの場合は、物理判定は要らないので、OnTriggerEnter2D()がよいでしょう。
ただしその場合、ワープゾーンのRigidbody2DのIs Triggerをオンにしないと動作しませんので注意してください。
その当たったゲームオブジェクトを取得する方法
上記のOnTriggerEnter2D()の引数には、当たったゲームオブジェクトのCollider2Dが入ります。
このCollider2DのgameObjectプロパティから、本体のゲームオブジェクトを取得することが出来ます。
そのゲームオブジェクトにwarpタグが付いているかどうかの判定
先ほどのゲームオブジェクト(GameObject)のtagプロパティからタグ名を取得できるので、それを比較すればよいです。
ワープ移動する方法
移動したいゲームオブジェクトのtransform.positionを変更するだけです。
以上を理解していれば、以下のコードにたどり着けます。
C#
1void OnTriggerEnter2D(Collider2D collider)
2{
3 // collider.gameObjectでゲームオブジェクトを取得し、そのtagを比較する
4 if (collider.gameObject.tag == "warp")
5 {
6 // ワープ移動。座標は必要に応じて変更してください。
7 transform.position = new Vector3(0.0f, 0.0f, 0.0f);
8 }
9}
(参考元)
なお繰り返しますが、ワープゾーンにRigidbody2Dをアタッチして、Is Triggerをオンにしないと動作しませんので注意してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。