【入门-22-教程】Unity3D

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

将以下代码复制

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<Collider>().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上运行

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

以下代码

场景物体开启触发器后

物体穿透地面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值