虚幻4 碰撞过滤

原创翻译,转载请注明出处。(http://blog.csdn.net/sinat_24229853/article/details/51090259)
英文原文:https://www.unrealengine.com/blog/collision-filtering?lang=zh-CN

选择什么样的碰撞显然是很重要的。但它可能会很棘手,而且我们在开发虚幻4的过程中已经花了相当长的时间讨论。我们的系统能够一眼看上去有点复杂,但它是很强大和一致的,所以我想给一点背景知识关于怎样完毕它。

我们会谈论碰撞的不同反应,我们怎样使用通道来过滤碰撞,和勾勒出简单和复杂碰撞体之间的不同。

堵塞(Blocking)、重叠(Overlapping)和忽略(Ignoring)
首先你要知道的是。当你谈论一些事应该发生碰撞,你必须选择能否够穿透(penetrate)它。

一面砖墙会堵塞一个玩家,但一个触发器(trigger)会使它们重叠,同意它们重叠。它们都会产生一个事件(在UE4中的术语分别为击中(Hit)或重叠(Overlap)),只是这是一个重要的区别。而其他对象能够忽略互相碰撞。这给了我们三种不同的碰撞类型。

追踪通道和对象通道
下一个大问题碰撞过滤的核心:“该选择谁?”是物体决定了什么类型的查询来碰撞?还是查询决定了查找什么类型的对象?在不同的情况下,它们都是合理的,所以UE4都支持!

想象一下我们在我们的游戏中定义了两个“追踪通道”。一个是“可见性”,一个是“武器”查询。一面砖墙是用来堵塞它们。一个灌木堵塞“可见性”可是不堵塞“武器”,一个防弹玻璃堵塞“武器”可是不堵塞“可见性”。当你做这样的查询。你指定了单个追踪通道。

这里写图片描写叙述

假设我们对此改变了,因此游戏代码必须知道什么对象类型用来查询,我们游戏可能须要大量的不同类型来处理全部这些场景!它也同意我们之后在内容做“现场修复”,而不是改动调用代码本身和破坏其他的东西。

然而有一些情况下。你想做只基于它们类型的对象查询,这就是我们用的对象通道。一个样例是一个爆炸发生。你想高速查找在一定半径内的“Pawn”或“PhysicsBody”类型的全部对象。

当你做这样的类型的查询时,你能够指定多对象通道。

UE4有一些“内置”追踪通道(可见性,摄像机)和对象通道(世界静态、世界动态、Pawn、PhysicsBody、Vehicle、可破坏),可是你能够简单地通过编辑->项目设置->碰撞加入你自己的通道。虽然你被限制在32个通道总数内。

运动对象间的碰撞
当你想处理移动对象的时候,事情变得有一点复杂。由于这里有许多种组合。在UE4。每一个对象知道它自己的对象通道。加入一个列表关于怎样响应其他对象通道。当两个物体相交。我们着眼于他们怎样互相响应,和採取最小堵塞(least blocking)交互,例如以下图所看到的:

这里写图片描写叙述

所以想象以下的场景:

这里写图片描写叙述

如今这个角色向前移动。

首先它会与灌木丛(Shrub)重叠。玩家是Pawn类型,而且灌木丛想要与它重叠。Shrub是世界静态(WorldStatic)类型,而且玩家想要堵塞它。检查上面那个表格。终于的结果是重叠!相同的,砖墙和玩家都想堵塞对方。所以玩家走过灌木丛(产生重叠事件)和它会被墙截停(产生击中事件)。

这里写图片描写叙述

假设你有两个玩家。而且一个想变成“幽灵”,你能够让它到Pawn的响应频道从Block改为Ignore。然后他会穿透其他玩家。

碰撞预设
虽然这个系统给了大量控制关于你的场景中的对象怎样与其他对象碰撞,实际上大多数对象在使用共同的配置。为了让事情更简单,UE4有一个“碰撞预设”系统。每一个预设包括了一个对象类型,和在你的游戏中的对于每一个追踪和对象通道的一个响应。

当你选择场景中的一个对象,你会看到一个简单的下拉菜单,同意你选择一个预设:

这里写图片描写叙述

UE4有几种内置通道(比如不可见墙,物理Actor等等),而且你能够在项目设置创建自己的通道。假设你不想使用预设,你能够选择“自己定义…”然后你能够改动每一个响应。像我们例如以下谈论的:

这里写图片描写叙述

简单和复杂碰撞
最后一件事要理解的是:UE4中的每一个对象都有“复杂”和“简单”碰撞表示。复杂的碰撞指使用实际的渲染几何体碰撞。

这对于武器追踪来说是最实用的东西。你能够射击你能看得到的东西。虽然你不总是想要碰撞这个,而且每一个网格也能够有简单碰撞表现。其由球体、盒子、胶囊体和凸外壳集合组成。当你运行碰撞查询,你告诉UE4你想要碰撞的几何体。比如,角色移动,使用简单几何体碰撞。来避免在细节上的卡住。

编辑器那里有一个方便的查看模式,让你看见作为一个角色会碰撞的东西:

这里写图片描写叙述

这里写图片描写叙述

总结
这里已经是全部内容。碰撞过滤是一个令人沉醉的世界!我希望它有助于了解一些我们试图解决和怎样利用它来用到你自己的游戏中。有不论什么疑问或评论?我们总是在论坛或者你能够在推特联系我@EpicJamesG。

*我们实际上在第一个堵塞碰撞发生后停止继续查找碰撞。这是一个很好的性能优化——想象开了一枪范围可达1km的子弹打中了距离你1m的墙,我们省去了999米的工作!

转载于:https://www.cnblogs.com/clnchanpin/p/7236468.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客?

前言OK,我也来造轮子了博客系统从一开始用WordPress,再到后来用hexo、hugo之类的静态博客生成放github托管,一直在折腾折腾是为了更好解决问题,最终还是打算自己花时间搞一个好了本系列文章将记录博客的开发过程~ 将会持续更新&am…

Diocp截图

跑了个数据库的查询和插入,删除。 Http SVR DEMO http://123.232.98.202:8081/

【C语言简单说】五:常用运算符

其实。。。这一节我我猜大家几分钟就会了&#xff08;&#xff09;…(⊙_⊙;)… ○圭~○列~~怎麼酱&#xff1f; 因为我相信大家的智商&#xff0c;我就随便给大家提一下就好了。我们看以下的代码&#xff1a; #include<stdio.h> #include<stdlib.h> int main(){…

sql 注入神器sqlmap 源码分析之调试sqlmap

为什么80%的码农都做不了架构师&#xff1f;>>> 相信大家平时 用sqlmap 命令&#xff0c;比如 python sqlmap.py -u"https://team.oschina.net/action/team/create" --data"nameonlyGuest&identonlyGuest&sidentonlyGuest&temp1431349…

【C语言简单说】六:取模运算符以及变量的扩展

┴┴ &#xff08;╰(&#xff40;□′)╯&#xff08; ┴┴ … 这一节我们就来说另外的运算符——取模运算符&#xff08;说白了跟取余数差不多…&#xff1c;—_-)&#xff01;&#xff01;&#xff01;&#xff09; 先看看好难懂的定义&#xff1a;取模运算和取余运算两个…

ExtJs5.0在WebStorm上的使用之入门教程(一)编写第一个网页 HelloExt

首先&#xff0c;必须声明一下笔者使用的软件版本&#xff1a; 前端开发工具&#xff1a;WebStorm 11.0.3 辅助插件&#xff1a;ext-5.0.0-gpl 以上工具包括下面的代码我已经打包上传在此处了&#xff1a;点击打开链接 先上代码&#xff0c;再废话&#xff1a;<!DOCTYPE htm…

腾讯视频涨价:一年多赚74亿!关注我领取腾讯VIP会员,周卡低至7元

不久前&#xff0c;腾讯视频的用户又一次“喜迎会员价格上涨”&#xff0c;甚至让腾讯视频因此登上了微博热搜。但要知道的是&#xff0c;此前在去年4月的时候&#xff0c;腾讯视频就已经涨过一次价了。4月9日&#xff0c;腾讯视频方面发布通知称&#xff0c;将于4月20日零点调…

使用JUnitParams简化Parameterized tests

为什么80%的码农都做不了架构师&#xff1f;>>> 序 junit4的Parameterized tests的使用方法太过费劲了&#xff0c;这里介绍下如何使用JUnitParams来简化Parameterized tests。 junit4原生的Parameterized tests实例 RunWith(Parameterized.class) public class Fi…

无约束优化问题求解(4):牛顿法后续

目录 前言SR1, DFP, BFGS之间的关系 BB方法Reference 前言 Emm&#xff0c;由于上一篇笔记的字数超过了要求&#xff08;这还是第一次- -&#xff09;&#xff0c;就把后续内容放到这篇笔记里面了&#xff0c;公式的标号仍然不变&#xff0c;上一篇笔记的连接在这&#xff1a;…

【C语言简单说】七:自定义函数(1)

在最开始的说过&#xff0c;函数可以比喻工具箱&#xff0c;那么我们现在开始自己开始制作函数了&#xff0c;自己制作函数是很简单的&#xff0c;如下代码&#xff1a; #include<stdio.h> #include<stdlib.h> //头文件下面 void dy(){printf("这里是dy函数\…

哈夫曼编码算法 java_我所知道的算法之哈夫曼编码

上一篇文章中提到数据结构&#xff1a;哈夫曼树&#xff0c;今天接着学习由哈夫曼提出编码方式&#xff0c;一种程序算法。简称&#xff1a;哈夫曼编码一、什么是哈夫曼编码&#xff1f;与哈夫曼树一样&#xff0c;会不会有小伙伴对哈夫曼编码很陌生&#xff0c;有疑惑问题疑惑…

Windows之Wireshake之抓HTTP请求包(过滤目的IP)

1 问题 用Wireshake抓取HTTP请求包 2 解决办法 直接在在WireShare里面过滤条件输入http 然后在浏览器输入http的请求,我的效果如下 看吧,都是http请求 如果数据太多,我只需要过滤一个目的的ip,我们可以这样设置参数 ip.addr == 目的ip && http 如下图 然后我输…

html使用element ui_Kendo UI for jQuery使用教程:自定义小部件(二)

Kendo UI目前最新提供KendoUI for jQuery、KendoUI for Angular、KendoUI Support for React和KendoUI Support for Vue四个控件。Kendo UI for jQuery是创建现代Web应用程序的完整UI库。Kendo UI通过继承基本窗口小部件类为您提供创建自定义窗口小部件的选项。处理事件1. 将更…

ASP.NET MVC 个人学习笔记之 Controller传值

2019独角兽企业重金招聘Python工程师标准>>> //ControllerViewBag.Message "Modify this template to jump-start your ASP.NET MVC application."; // View<section class"featured"><div class"content-wrapper"><…

Dapr 和 Spring Cloud 对比分析

很多人都是使用SpringBoot 和 Spring Cloud来开发微服务。Dapr 也是开发微服务的框架&#xff0c;它和Spring Cloud有什么区别呢&#xff0c;其实这不是一个区别的问题&#xff0c;它是不同的时代需要不同的框架。Spring Cloud 是一种产品&#xff0c;提供了分布式应用程序所需…

【C语言简单说】七:自定义函数(2)

刚刚说了如何自定义函数。那只是最简单的形式&#xff0c;那我们现在开始来说函数的返回值。我们先贴上之前的代码&#xff1a; #include<stdio.h> #include<stdlib.h> //头文件下面 void dy(){printf("这里是dy函数\n");} //main函数上面 int main() …

jdk源码分析书籍 pdf_什么?Spring5 AOP 默认使用Cglib?从现象到源码深度分析

推荐阅读&#xff1a;阿里工作十年拿下P8&#xff0c;多亏了这些PDF陪我成长&#xff08;Spring全家桶源码解析Redis实战等&#xff09;​zhuanlan.zhihu.com从入门到熟悉&#xff0c;一步一步带你了解 MySQL 中的「索引」和「锁」​zhuanlan.zhihu.comSpring5 AOP 默认使用 Cg…

Nginx monitor

为什么80%的码农都做不了架构师&#xff1f;>>> 最近在初步研究了一下nginx的监控&#xff0c;主要是想监控一些和业务相关的信息&#xff0c;发现能用的方案不多&#xff0c;主要有如下&#xff1a; 1 监控解析nginx log&#xff1a;ngxtop 官方的解释是可以…

ASP.NET 6 中间件系列 - 执行顺序

这篇文章是 ASP.NET 6 中间件系列文章的第 3 部分&#xff0c;你还可以阅读第1部分和第2部分。我们通过中间件创建的管道是有执行顺序的&#xff0c;执行顺序与中间件的添加顺序是相同的&#xff0c;接下来我们讨论一下为什么要有执行顺序&#xff0c;以及它的重要性。示例项目…

OSChina 周四乱弹 ——程序员怎么撩外国妹子攻略

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2017&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 冬天之雪 &#xff1a;听歌听到苏菲玛索和刘欢演唱《玫瑰人生》。有网友评论&#xff1a;法语专业的刘欢老师等的就是这一刻。…