codecamp

Unity 3D 碰撞触发实践案例

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

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

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

案例设计

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

![](https://atts.w3cschool.cn/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. 运行测试。

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

以上为第一人称视角。

Unity 3D 触发器(Trigger)
Unity 3D 物理材质
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }