unity脚本_碰撞检测函数 c#

在项目创建一个脚本文件包新建脚本Cor

unity脚本_碰撞检测函数 c#_第1张图片

将以下代码复制

unity脚本_碰撞检测函数 c#_第2张图片

using UnityEngine;
public class Cor : MonoBehaviour{
    #region 碰撞检测函数

    #endregion
    //至少一个刚体和两个碰撞器让两个游戏物体产生碰撞
    //物理材质Phy Material让两个游戏物体之间表现不同效果
    //触发器:让两个物体碰撞不产生效果,只进行碰撞处理
    //注意:碰撞响应函数 属于 特殊的生命周期函数 也是通过反射调用
    #region 物理碰撞检测响应函数

    #endregion
    //碰撞时 会自动执行这个函数
    private void OnCollisionEnter(Collision collision){
        //Collision类型的 参数 包含了碰到自己对象的相关信息
        //关键参数
        //1.碰撞到的对象碰撞器的信息         collision.collider
        //2.碰撞对象的依附对象(GameObject)   collision.gameObject
        //3.碰撞对象的依附对象的位置信息     collision.transform
        //4.碰触点数相关                     collision.contactCount
        //5.接触点具体坐标   ContactPoint[] pos = collsion.contacts;
        //只要得到了以上任意一个信息就能获得该对象上的所有信息
        //通过GetComponent<>
        //collision.gameObject.GetComponent().enabled = false;
        print($"{this.name}被{collision.gameObject.name}撞到了");
    }
    //碰撞结束时 会自动执行这个函数
    private void OnCollisionExit(Collision collision){
        print($"{this.name}被{collision.gameObject.name}碰撞结束了");
    }
    //两个物体相互接触摩擦时 会不停的调用这个函数
    private void OnCollisionStay(Collision collision){
        print($"{this.name}一直在和{collision.gameObject.name}接触");
    }
}
将代码挂载在物体Cube上运行

unity脚本_碰撞检测函数 c#_第3张图片

运行查看控制台信息 我们发现OnColliderEnter只发生了一次,OnColliderStay发生了很多次

unity脚本_碰撞检测函数 c#_第4张图片

以下代码

unity脚本_碰撞检测函数 c#_第5张图片

场景物体开启触发器后

unity脚本_碰撞检测函数 c#_第6张图片

物体穿透地面

unity脚本_碰撞检测函数 c#_第7张图片

你可能感兴趣的:(unity,游戏引擎)