Unity3D入门(十一):刚体碰撞事件和触发事件监测

Unity3D入门(十一):刚体碰撞事件和触发事件监测

碰撞事件

碰撞事件简介

1.何为碰撞事件?
当一个用刚体控制的物体与另外一个物体碰撞时,就会触发碰撞事件。
:目标物体必须带有 Collider 组件。
比如,一款射击类游戏,我们发射出了子弹,子弹是一个由刚体控制运动的物体,子弹射中了敌人,我们如何监测到这个碰撞??

2.碰撞事件监测方法

方法作用
OnCollisionEnter(Collision)当碰撞开始时调用,只会调用该方法一次
OnCollisionExit(Collision)当碰撞结束时调用,只会调用该方法一次
OnCollisionStay(Collision)当碰撞进行中时,会持续调用该方法。

Collision 参数:碰撞,一个类。
作用:用于传递碰撞信息。
Collision.gameObject 属性,与当前物体碰撞的物体的引用。
gameObject.name 属性,当前物体的名字。

为Student 和 Wall 各自新建 Collision脚本,删去类中原有 Start 和Update 函数增加如下信息:

//Student碰撞信息
    void OnCollisionEnter( Collision coll)
    {
        if(coll.gameObject.name != "floor")
            Debug.Log("Enter " + coll.gameObject.name);
    }

    void OnCollisionExit(Collision coll)
    {
        if (coll.gameObject.name != "floor")
            Debug.Log("Exit " + coll.gameObject.name);
    }

    void OnCollisionStay(Collision coll)
    {
        if (coll.gameObject.name != "floor")
            Debug.Log("Stay " + coll.gameObject.name);
    }

墙碰撞信息代码与之相同。

结果打印:
在这里插入图片描述

触发事件

触发事件简介

1.触发器
将碰撞体组件属性面板上的“Is Trigger”选项选中,当前的游戏物体的碰撞体
就变成了触发器。
注意:移动的刚体物体会穿透碰撞体勾选了**“Is Trigger”**的物体。
为便于观察,可以调整Collider的大小,如下图:

在这里插入图片描述

2.触发事件
当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件。
触发用途:不与目标物体发生直接的碰撞(接触),而是只要进入目标物体的“触发范围”就能执行某些特定操作。

触发事件监测方法

方法作用
OnTriggerEnter(Collider)当进入触发范围时开始时调用,只会调用该方法一次。
OnTriggerExit(Collider)当离开触发范围时开始调用,只会调用该方法一次。
OnTriggerStay(Collider)在触发范围内,会持续调用该方法。

Collider 参数:碰撞体,一个类。
作用:用于传递触发信息。
Collider.gameObject 属性,进入触发范围内的目标物体的引用。
gameObject.name 属性,当前物体的名字。

//子弹触发器代码
    void OnTriggerEnter(Collider coll)
    {
        Debug.Log("Cube enter " + coll.gameObject.name);
    }

    void OnTriggerExit(Collider coll)
    {
        Debug.Log("Cube exit " + coll.gameObject.name);
    }

    void OnTriggerStay(Collider coll)
    {
        Debug.Log("Cube stay " + coll.gameObject.name);
    }

墙触发信息代码与之相同。
在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值