Unity 中的碰撞和触发事件

一、碰撞事件

1). 什么是碰撞事件

  碰撞事件简单来说就是一个物体与另一个物体一旦相互接触就产生了碰撞,而这时候就会触发碰撞事件

  当然,产生碰撞事件的两个物体必须满足相应的条件:

    • 两个游戏对象都必须有 Collider 碰撞器组件

    • 至少有一个游戏对象包含刚体组件

    • 两个游戏对象有相对运动

  

  其实,Unity 中物体的碰撞也可以说是 Collider 组件的碰撞。

2). 碰撞事件的检测方法

 1. OnCollisionEnter(Collision [参数名称])

  这个方法表示当两个碰撞物体一旦接触,就会触发这个事件,但这个方法只会调用一次。

  

 2. OnCollisionStay(Collision [参数名称])

  当物体碰撞一直进行时,就会触发这个事件,这个方法也会一直调用,直到两个物体没有碰撞后才会停止。

  

 3. OnCollisionExit(Collision [参数名称])

  当两个物体碰撞结束后才会调用这个方法,这个方法也只会调用一次。

  

 4. Collision [参数名称]

  Collision 是一个类,可以将它理解为是传递碰撞信息的。

  例如:[参数名称].gameObject.name 就表示与该物体发生碰撞时,碰撞物体的名字。

  

二、触发事件

1). 触发器(Is Trigger)

  

  在 Collision 组件面板中找到 Is Trigger 并选择勾选,这时该物体就会变成触发器,其他物体与该物体发生碰撞时就会直接穿透该物体。

2). 如何理解触发事件

  可以把一个正在移动的刚体物体假设为 A,把一个带有触发器的物体设为 B。

  当 A 被刚体控制移动到 B 的触发范围时,这时就是触发事件。

  触发事件主要用于不用直接与物体接触,就能触发某一事件的时候,

  例如生活中的自动门,当我们接近自动门并且还没碰到它,它就会自动开门。

3). 触发事件的方法

 1. OnTriggerEnter(Collider [参数名称])

  与碰撞事件类似,在物体进行触发范围的时候调用,只会触发一次。

  

 2. OnTriggerStay(Collider [参数名称])

  也与碰撞事件类似,在物体进入触发器范围内调用,只要物体一直在触发范围,它就会持续的调用。

  

 3. OnTriggerExit(Collider [参数名称])

  当物体离开触发器范围的时候会调用,只会触发一次。

  

 4. Collider [参数名称]

  Collider 是一个类,也可以将它理解为传递触发信息的。

  例如:[参数名称].gameObject.name 表示物体进入触发器时,触发物体的名字。

  

*** |  以上内容仅为学习参考、学习笔记使用  | ***

原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13259305.html