`
plmkome
  • 浏览: 41823 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

VisionEngine 游戏对象中触发器介绍

 
阅读更多
引言

触发框图形是让实体等游戏对象实现沟通的 Vision 内置系统的一部分。 触发框的设计是为了在某个预定义对象进入其边界时发送一个事件,例如主镜头进入触发框体积,这一事件可被链接到触发框的任何实体接收。

例如,您可以使用触发框作为门的自动激活装置,当玩家走向门,触发框因玩家镜头进入边界而激活,将事件信号发送到相连的门实体。

使用 API 的对象组件系统,可用代码定义触发器,并作为组件附加于对象。 因此,一个对象可附带不限数量的用户定义触发器源触发器目标

下图显示了一种可行的链接设置:

 触发框图形

触发框图形位于对象图形组,从图形创建面板将触发框图形实例拖拽到场景中即可完成添加。

 链接触发器

每个触发框都有输出连接,连接至接收实体。 将触发框放到场景中后,您需要选择链接工具栏图标,使连接可见。

链接被启用后,触发框将显示其连接。

 触发事件

因为触发事件与具体项目密切相关,所以标准图形中只有少数写死在源代码中的触发器。 其中包括:

  • 暂停 / 恢复粒子特效
  • 开启 / 关闭动态光照
  • 暂停 / 恢复声音回放
 在 Lua 脚本中使用触发器
触发事件传送至与对象关联的 Lua 脚本。 脚本的 OnTrigger 函数随即请求传递资源和作为整数参数的目标组件 ID。 示例:
-- this method is called when the object is triggered
 
function OnTrigger(self, sourceName, targetName)
     self:IncOrientation(90, 0, 0)
     Debug:PrintLine("Trigger Source: " .. sourceName.. ", Target: "..targetName)
end

触发框 Lua 事件

可以将 Lua 脚本分配给触发框图形本身,使其响应自身的某种触发事件。 以下是 4 种 Lua 函数原型:

  • 函数 OnCameraEnter(self)
  • 函数 OnCameraLeave(self)
  • 函数 OnObjectEnter(self,entity)
  • 函数 OnObjectLeave(self,entity)
  触发框选项
为了最大限度地发挥该图形类型的功效,除了缩放比例、位置等基本属性,还有一些您需要了解、也值得提及的触发框属性:

  • Trigger Shape(触发图形): 可选择将您的触发体设为框体或球体。
  • Size(大小): 包围体内部体积大小的精确值。

ObserverFlags(观察者标签): 定义哪个对象进入触发框后会触发事件,可用选项有:

  • Main Camer(主镜头)
  • Observed Entities(被观察实体)
  • All Entities(所有实体)

镜头进 / 出功能可在 FPS 式应用程序中用作简单的游戏事件。 或者,触发框图形也可在其他实体进出时触发(使用实体边界框进行重叠测试)。

为了优化性能,有两种不同的实体观察模式: ObservedEntities(被观察实体)和 AllEntities(所有实体)。 在被观察实体模式下,只有在全局观察者列表中注册的实体会接受触发事件判定。 在所有实体模式下,触发框会判定上一帧后移动过位置的所有实体。 与仅判定观察者列表上的实体相比,这种模式可能会对性能造成大得多的负担。

  技术说明:被观察实体全局观察者列表包含要接受触发判定的实体,需使用 C++ 代码设置。 以下嗅探程序可添加到您自己的实体类中,为被观察实体模式添加全局注册实体:
MyEntityClass::MyEntityClass()
{
  TriggerBoxEntity_cl::AddObservedEntity(this); // call static function to add to global list
}
 
MyEntityClass::~MyEntityClass()
{
  TriggerBoxEntity_cl::RemoveObservedEntity(this); // call static function to remove from global list
}
  • DestroyOnTrigger(触发时销毁): 如启用,该触发器在触发后自我销毁。
 链接

与触发框图形建立连接后,链接属性会随已连接输出路由一同生成。 在以下属性图片中,触发器和一个门类实体连接:

 预览

为帮助您对关卡进行设计,vForge 提供若干调试选项,可让您开启 / 关闭触发体的可视性,以便您将触发器摆放到准确的位置。

 基于物理的触发体

Havok™ 物理插件提供 Havok 触发体组件,可用来创建物理体积的触发器图形,其形状没有限制。 更多信息请访问以下主题:

可以将 Lua 脚本分配给自定义体对象图形,该图形附带 Havok™ 触发体组件。 以这种方式,该图形可响应一种附带的 Havok™ 触发体组件支持的触发事件。

以下是 4 种 Lua 函数原型:

  • 函数 OnObjectEnter(self,entity)
  • 函数 OnObjectLeave(self,entity)
  • 函数 OnCharacterEnter(self,entity)
  • 函数 OnCharacterLeave(self,entity)

参数 self 是自定义体对象,即 Havok™ 触发器组件所附对象。 参数 entity 是实体,该实体附带刚体(在使用 OnObjectEnter/ OnObjectLeave 的情况下)或角色控制器(在使用 OnCharacterEnter/ OnCharacterLeave 的情况下),由后者负责触发。

转自:projectanarchy中文社区 http://www.anarchy.cn/portal.php?mod=view&aid=56

分享到:
评论

相关推荐

    VisionEngine:基于Tensorflow 2.2构建的DHRL(“ VisionEngine”)是针对自然图像数据的推理框架,该框架针对自然科学中的应用量身定制,使用生成模型集成了分析,理论和经验方法

    我们建议创建一个虚拟环境以使用运行VisionEngine。 安装anaconda / miniconda后,下载VisionEngine并进入HOME目录: $ git clone https://github.com/ietheredge/VisionEngine $ cd VisionEngine 设置环境: ...

    天然气汽车供气系统减压装置毕业设计(cad+设计方案).zip

    天然气汽车供气系统减压装置毕业设计(cad+设计方案)

    PHP+SQL考勤系统安全性实现(源代码+论文+答辩PPT+指导书)

    PHP+SQL考勤系统安全性实现(源代码+论文+答辩PPT+指导书)

    NumPy 的用途是什么

    NumPy 的用途是什么

    毕业设计 基于javaweb的在线答题平台

    毕业设计 基于javaweb的在线答题平台

    基于MATLAB的pca人脸识别.zip

    基于MATLAB的pca人脸识别.zip

    课设毕设基于SSM的信息类课程教学知识管理系统LW+源码可运行.zip

    课设毕设基于SSM的系统源码可运行

    JAVAWML信息查询与后端信息发布系统实现-WML信息查询设计(源代码+LW).zip

    JAVAWML信息查询与后端信息发布系统实现——WML信息查询设计(源代码+LW)

    毕业设计[整站程序]情感家园站 v3.0 For 个人版_qgweb30fp.zip

    毕业设计[整站程序]情感家园站 v3.0 For 个人版_qgweb30fp.zip

    熊猫脚本助手V1.8.zip

    可以自动刷课,执行重复的脚本工作,内有详细操作教程。支持WIN7---WIN10系统。

    Java项目之实验室计算机故障报修系统(源码)

    Java项目之实验室计算机故障报修系统(源码) 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9

    使用hapi框架搭建 基于协同过滤的美食推荐系统——后台.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

    JAVAWEB校园二手平台项目.zip

    JAVAWEB校园二手平台项目,基本功能包括:个人信息、商品管理;交易商品板块管理等。本系统结构如下: (1)本月推荐交易板块: 电脑及配件:实现对该类商品的查询、用户留言功能 通讯器材:实现对该类商品的查询、用户留言功能 视听设备:实现对该类商品的查询、用户留言功能 书籍报刊:实现对该类商品的查询、用户留言功能 生活服务:实现对该类商品的查询、用户留言功能 房屋信息:实现对该类商品的查询、用户留言功能 交通工具:实现对该类商品的查询、用户留言功能 其他商品:实现对该类商品的查询、用户留言功能 (2)载入个人用户: 用户登陆 用户注册 (3)个人平台: 信息管理:实现对商品的删除、修改、查询功能 添加二手信息:实现对新商品的添加 修改个人资料:实现对用户个人信息的修改 注销

    基于协同过滤和SVD算法的音乐推荐系统.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

    Java游戏设计打飞机程序(源代码+LW).zip

    Java游戏设计打飞机程序(源代码+LW)

    Matlab实现CoMP多用户注水算法在最最基础的注水算法的基础上,

    Matlab实现CoMP多用户注水算法在最最基础的注水算法的基础上,实现了在功率受限速率受限的情况下CoMP多用户的功率分配.zip

    利用PCA算法的 Eigenface 人脸识别的训练与识别

    自己写代码实现 Eigenface 人脸识别的训练与识别过程,纯手工实现 假设每张人脸图像只有一张人脸,且两只眼睛位置已知(即可人工标注给出)。每张图像的眼睛位置存在相应目录下的一个与图像文件名相同但后缀名为 txt 的文本文件里,文本文件中用一行、以空格分隔的 4 个数字表示,分别对应于两只眼睛中心在图像中的位置; 实现两个程序过程(两个执行文件),分别对应训练与识别; 自己构建一个人脸库(至少 40 人,包括自己),课程主页提供一个人脸库可选用; 不能直接调用 OpenCV 里面与 Eigenface 相关的一些函数,特征值与特征向量求解函数可以调用;只能用 C/C++/Python,不能用其他编程语言;GUI 只能用 OpenCV 自带的 HighGUI,不能用 QT 或其他的;平台可以用 Win/Linux/MacOS,建议 Win 优先;

    有源电力滤波器的控制在MATLAB下的发展。三相电源电压是基于hysterezis正弦电流调节器.zip

    有源电力滤波器的控制在MATLAB下的发展。三相电源电压是基于hysterezis正弦电流调节器.zip

    BCH码的MATLAB程序源代码.zip

    BCH码的MATLAB程序源代码.zip

    基于java的一个简单的即时通讯工具的设计与开发(源代码+LW).zip

    基于java的一个简单的即时通讯工具的设计与开发(源代码+LW)

Global site tag (gtag.js) - Google Analytics