何かの上を通り過ぎると障害物が出現するようにする方法をまとめておきます。
通り過ぎたら出現するようにする方法
OnTriggerExit を使おう
- OnTriggerEnter:当たったとき
- OnTriggerStay:中にいるとき
- OnTriggerExit:出ていったとき
通り過ぎるのをきっかけにしたい場合は「OnTriggerExit」を使用します。
スクリプトはこんな感じ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Block : MonoBehaviour
{
public GameObject sphereObject;//sphereObjectの名前は何でもいい
// Start is called before the first frame update
void Start()
{
this.GetComponent<Collider2D>().isTrigger = true;//トリガーのチェックを自動で入れたいときに書き込む
}
// Update is called once per frame
void OnTriggerExit2D(Collider2D collision)//3Dだったら2Dを外す
{
if(collision.gameObject.name == "動かしているオブジェクトの名前")
{
sphereObject.SetActive(true);//sphereObjectの名前を変更したらここも変更
}
}
}
自分は2D迷路で障害物を出現させるようにしたいので、「OnTriggerExit2D」を使用してます。
外から指定できると便利
「public GameObject ○○○」と書いておけば、出現させたい障害物などのオブジェクトを外からドラッグして持ってこれるので便利です。
あとがき
通りすぎたときにその場が通れなくなるようにするときは、「public GameObject sphereObject」書かずに、トリガーのチェックをオフにする「this.GetComponent().isTrigger = false;」を「sphereObject.SetActive(true);」の代わりに書いておくと、大丈夫です。
コメント