• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > Unity 3D触发器(Trigger)

Unity 3D触发器(Trigger)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
在 Unity 3D 中,检测碰撞发生的方式有两种,一种是利用碰撞体,另一种则是利用触发器(Trigger)。

触发器用来触发事件。在很多游戏引擎或工具中都有触发器。

例如,在角色扮演游戏里,玩家走到一个地方会发生出现 Boss 的事件,就可以用触发器来实现。

当绑定了碰撞体的游戏对象进入触发器区域时,会运行触发器对象上的 OnTriggerEnter 函数,同时需要在检视面板中的碰撞体组件中勾选 IsTrigger 复选框,如下图所示。

勾选触发器复选框

触发信息检测使用以下 3 个函数:
  • MonoBehaviour.OnTriggerEnter(Collider collider),当进入触发器时触发。
  • MonoBehaviour.OnTriggerExit(Collider collider),当退出触发器时触发。
  • MonoBehaviour.OnTriggerStay(Collider collider),当逗留在触发器中时触发。

Unity 3D 中的碰撞体和触发器的区别在于:碰撞体是触发器的载体,而触发器只是碰撞体的一个属性。

如果既要检测到物体的接触又不想让碰撞检测影响物体移动,或者要检测一个物体是否经过空间中的某个区域,这时就可以用到触发器。例如,碰撞体适合模拟汽车被撞飞、皮球掉在地上又弹起的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果。

实践案例:碰撞消失的立方体

案例构思

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

没有碰撞体的刚体会在物理模拟中相互穿透。本案例旨在通过小球碰撞后产生消失的动作确认碰撞的发生。

案例设计

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

创建三维场景

案例实施

步骤 1):创建一个平面(0,0,0)和一个小球(0,1,0),使小球置于平面上方,如上图所示。

步骤 2):执行 Assets→Import Package→Customer Package 命令添加第一人称资源,如下图所示。

添加第一人称资源

步骤 3):选中第一人称资源后单击 Import 按钮导入,如下图所示。

导入第一人称资源

步骤 4):在 Project 视图中搜索 first person controller,将其添加到 Hierarchy 视图中,并摆放到平面上合适的位置,如下图所示。

摆放第一人称资源

步骤 5):因为第一人称资源自带摄像机,因此需要关掉场景中的摄像机。

步骤 6):选中 Cube,为 Cube 对象添加 Box Collider,并勾选 Is Trigger 属性,如下图所示。

添加触发器

步骤 7):编写脚本 Colliders.cs,代码如下。
using UnityEngine;using System.Collections;public class Colliders:MonoBehaviour{    void OnTriggerEnter(Collider other){        if(other.tag=="Pickup"){            Destroy(other.gameObject);        }    }}
步骤 8):将 Colliders 脚本链接到 first person controller 上。

步骤 9):为 Cube 添加标签 Pickup。

步骤 10):单击 Play 按钮运行测试,可以发现,当人物靠近立方体小盒后,小盒即刻消失,运行效果如下图所示。

碰撞发生前

发生碰撞后小盒消失
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 unity游戏开发中如何实现在地形上放置建筑
  • 2017-06-05 u3d渲染深度调整很有用。记录下。
  • 2017-06-05 Cocos2d-X游戏开发:搭建Cocos2d-X开发环境
  • 2017-06-05 我做了一个canvas游戏,当把地图摄像机放大地图物体时,fps很卡,动画不流畅,怎么破
  • 2017-06-05 自学COCOS动画创建的时候遇到的一个断言异常,望大神们指点迷津
  • 2017-06-05 unity全景图片视频有明显的拼接线怎么处理附图片
  • 2017-06-05 总提示texture没有初始化
  • 2017-06-05 box2d如何让场景中的所有物体静止不动(有重力的场景),又如何让所有物体恢复运动
  • 2017-06-05 初学unity,关于解决有向匀速运动的问题
  • 2017-06-05 box2d圆形刚体卡在角落

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Unity 3D游戏发布到WEB平台
    • 小白求助,关于setScaleZ和setPositionZ
    • Unity 3D地形系统概述
    • 【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产
    • 游戏网络编程
    • 请教,ClippingNode遮罩在windows下运行正确,手机上没有遮挡效果
    • 趋势:手游app压缩用户转化率越高
    • unity里关于材质球与物体清晰度的问题
    • Cocos2d-x建工程时避免copy文件夹和库
    • cocos2dx35AssetsManager使用问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有