Unity 触发检测与碰撞检测的示例

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Collider_Class : MonoBehaviour {

    // 用于Collider类的测试

    public GameObject OneBullet;

    Transform Father;

    void Start ()

    {

        Father = GameObject.FindGameObjectWithTag("Player").transform;

    }

   

    void Update ()

    {

               

        if (Input.GetKeyDown(KeyCode.F))

        {

            GameObject NewBullet = GameObject.Instantiate(OneBullet, Father);

            NewBullet.transform.GetComponent().AddForce(NewBullet.transform.forward * 2000,ForceMode.Force);//增加力

            NewBullet.name = "Monster";

            Destroy(NewBullet,5f);//摧毁

        }

    }

    #region// 触发器的三个事件

    // 进入触发范围会调用一次

    void OnTriggerEnter(Collider other)

    {

        Debug.Log("有人进入触发区,名字是:"+ other.transform.gameObject.name);

    }

    // 当持续在触发范围内发生时调用

    void OnTriggerStay(Collider other)

    {

        Debug.Log("怪兽持续在触发区,名字是" + other.transform.gameObject.name);

    }

    // 离开触发范围会调用一次

    void OnTriggerExit(Collider other)

    {

        Debug.Log("怪兽离开触发区,名字是" + other.transform.gameObject.name);

    }

    #endregion

    #region //碰撞相关的三个方法

    // 碰撞开始会调用一次  

    void OnCollisionEnter(Collision other)

    {

        Debug.Log("进入碰撞区,碰撞到的物体叫:"+ other.transform.gameObject);

        other.transform.GetComponent().AddTorque(new Vector3(0,10,0),ForceMode.Impulse);//让他旋转起来

    }

    // 当碰撞持续发生时调用

    void OnCollisionStay(Collision other)

    {

        //检测和谁发生碰撞

        if (string.Equals("Monster", other.gameObject.name))//如果名字匹配

        {

            print("怪兽撞击我们的隔离墙");

        }

        Debug.Log("持续碰撞,碰撞到的物体叫:" + other.transform.gameObject);

    }

    // 碰撞结束会调用一次

    void OnCollisionExit(Collision other)

    {

        Debug.Log("离开碰撞,离开碰撞的物体叫:" + other.transform.gameObject);

    }

    #endregion

}

你可能感兴趣的:(Unity零基础课程,unity,游戏引擎)