Unity_碰撞器/触发器(Collider/Trigger)
创始人
2024-12-17 10:33:53
0

本篇内容介绍Unity中的碰撞器与触发器。 这些分为2D和3D,本篇以3D举例,2D类似。效果图见四.3.2

一、碰撞器与触发器的区别

1.是否发生物理碰撞:

碰撞器顾名思义会导致物理之前的物理碰撞,但触发器不会,不引起物理碰撞,只检测物体进入或离开触发区域。

碰撞器由于发生物理碰撞所以会阻止物体穿过进而发生相互作用,但触发器可以自由进出触发区域。

2.使用场景:

所以一般情况下当物体之间实际碰撞时使用碰撞器,只需要判断进出某个区域则用触发器

二、碰撞器/触发器功能

1.碰撞器功能:

碰撞器用于物理交互,他的主要功能包括:

1.1实现物体之间的真实物理交互效果,如碰撞,反弹等物理现象
1.2防止物体穿墙等类似效果
1.3检测是否与其他对象碰撞,在需要时执行相应的逻辑,如播放音乐等。一般这样情况使用触发器。

2.触发器功能:

1.检测到物体进入/离开/停留在触发区域时可以执行相应事件,见上面1.3。

三、碰撞器/触发器种类

碰撞器与触发器种类相同就是把Is Trigger勾选就好了。

1.Box Collider:

2.Sphere Collider:

3.Capsule Collider:

4.Mesh Collider:

5.还有Wheel Collider/Terrain Collider/Edge Collider:

由于我暂时没有项目用到,这里不做解释,等后续使用会补充。

6.Character Controller:

如果你使用Character Controller自带的碰撞器,使用方法看第四点。

四、碰撞器与触发器的使用方法

1.添加刚体组件:

添加刚体组件以满足你需要碰撞或触发的两个物体至少有一个具有刚体组件。

如果你仅需检测碰撞后执行某功能或方法,可以设置为运动学刚体避免影响你物体的正常运动。

如果你使用Character Controller则不需要添加刚体组件。

2.碰撞器使用方法:

2.1创建脚本:

创建脚本挂载到合适位置,这里我演示放到了碰撞物体上。

2.2方法:
private void OnCollisionEnter(Collision collision) {      } private void OnCollisionStay(Collision collision) {      } private void OnCollisionExit(Collision collision) {      }

方法有三种,进入,停留,离开,这里具体使用方法举例放到触发器里。

3.触发器使用方法:

3.1使用条件:

有一方有触发器即可,与刚体类似。

3.2方法:
public GameObject ColliderSphere; public GameObject CollidedCube; private Color colorSphere; private Color colorCube; private void Start() {     colorSphere = ColliderSphere.gameObject.GetComponent().material.color;     colorCube   = CollidedCube.  gameObject.GetComponent().material.color; } private void OnTriggerEnter(Collider other) {     if (other.gameObject.name == "Cube")     {         ColliderSphere.gameObject.GetComponent().materials[0].color = Color.red;     } } private void OnTriggerStay(Collider other) {     if (other.gameObject.name == "Cube")     {         Debug.Log("物体停留");     } } private void OnTriggerExit(Collider other) {     if (other.gameObject.name == "Cube")     {         ColliderSphere.gameObject.GetComponent().materials[0].color = colorSphere;         CollidedCube.gameObject.GetComponent().materials[0].color = colorCube;     } }

具体看触发进入方法中,判断触发检测到的物体名字是否与你想要的一样,如果一样则实现某种功能,这里我实现变色,没进入前是这样的:

进入后圆球变红色:

这个窗口的打开位于:Window->General->Console

4.Character Controller碰撞器使用方法:

private void OnControllerColliderHit(ControllerColliderHit hit) {      }

相关内容

热门资讯

透视辅助!wepoker破解工... aapoker真的假的 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由...
一分钟揭秘“德普之星透视辅助软... 大家好,今天小编来为大家解答这个问题咨询软件客服可以免费测试直接加微信(136704302)了解详细...
透视辅助!hhpoker有后台... 透视辅助!hhpoker有后台操控吗,德普之星透视辅助软件激活码,详细开挂辅助神器(透视有挂细节);...
玩家必用“智星菠萝透视”开挂(... 玩家必用“智星菠萝透视”开挂(透视)辅助插件(必赢教程有挂规律);打开点击测试直接进入微信(1367...
透视辅助!wejoker辅助器... 透视辅助!wejoker辅助器怎么卖,we-poker有人玩吗,正版开挂辅助脚本(透视的确有挂) >...
一秒答解“wpk是真的还是假的... 是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微信(136704...
透视辅助!wepoker私人局... 透视辅助!wepoker私人局辅助,wepoker私人局俱乐部辅助,分享开挂辅助下载(透视有挂存在)...
一分钟教会你“wpk真吗”开挂... 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由: 1、软件助手是一款功...
透视辅助!epoker有透视吗... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
透视最新“wepoker透视脚... 透视最新“wepoker透视脚本下载”开挂(透视)辅助神器(存在挂教程有挂实锤)>>您好:软件加薇1...