阅读(3970) (0)

Unity 3D 碰撞触发实践案例

2020-07-15 09:32:58 更新

碰撞体需要和刚体一起作用来产生碰撞。

如果两个刚体撞在一起,物理引擎不会计算碰撞,除非它们包含一个碰撞体组件。

没有碰撞体的刚体会在物理模拟中相互穿透。

案例设计

本案例在 Unity 3D 内创建一个简单的三维场景,场景内放有 SpherePlanePlane 用于充当地面,Sphere 用于做碰撞测试,当人物与 Sphere 距离足够近时发生碰撞,小球消失。

![](https://atts.zijiebao.com/attachments/image/20200715/1594778383989575.gif)

案例实施

  1. 创建平面(0,0,0,)和小球(0,1,0),将小球置于平面上方。

  1. 执行 AssetsImport PackageCustomer Package 命令添加第一人称资源。

  1. 选中第一人称资源后单击 Import 按钮导入。

由于第一人称资源自带摄像机,我们需要关掉场景中的摄像机。

  1. 在 Project 视图中搜索 first person controller,将其添加到 Hierarchy 视图中,并摆放到平面上合适的位置。

  1. 选中 Cube,为 Cube 对象添加 Box Collider,并勾选 Is Trigger 属性

  1. 编写脚本 "Colliders.cs"。

    using UnityEngine;
    using System.Collections;
    public class Colliders:MonoBehaviour{
        void OnTriggerEnter(Collider other){
            if(other.tag=="Pickup"){
                Destroy(other.gameObject);
            }
        }
    }

  1. Colliders 脚本链接到 first person controller 上。

  1. Cube 添加标签 Pickup

  1. 运行测试。

可以发现,当人物靠近立方体盒子后,盒子会立刻消失。

以上为第一人称视角。