UE4的碰撞设置在官方的文档的 物理模拟模块(链接:点击打开链接)。但是操作起来感觉坑还是比较多,所以这里总结一下,以防平时经常会漏掉或忽略某些条件。如果想看关于碰撞响应触发,可以参考链接( UE4蓝图碰撞检测解析) 如果想进一步深入UE物理引擎相关内容,请参考博客 (UE4物理模块分析)

现在开始讲解并总结一下UE4里面的碰撞规则:

1.只有拥有Collision属性的实体才可以碰撞

每个实体Actor,包括static Mesh,sphere,capsule等带碰撞的组件,在detail细节面板都有一个collision属性的栏。这个里面的参数是控制这些实体间进行碰撞的必要条件。

(注:在UE4里面,所有可以直接放在UE4场景世界里的对象都是一个Actor,这个类型在C++中是类AActor。其本身包含了非常多的属性,如坐标,碰撞等必要的特性。继承于Actor的有Pawn,Character,StaticMeshActor,CameraActor等等,所以在游戏世界存在的实体都属于Actor,不过Actor本身可能还包含组件等更多其他的元素)

2.不同实体的碰撞通过碰撞通道来区分

在UE4世界里面所有带碰撞的Actor被分为很多类别,比如WorldDynamic,Worldstatic,Pawn,character等,这些类型被称为一个个collision channel(碰撞对象通道)。一般来说,系统帮你设置了一些基本的collision channel。比如一个设置为静止的立方体归属于Worldstatic,而一个设置为可以动的球体归属于WorldDynamic。UE4做的非常的灵活的是,这个通道的类型,你可以任意的设置与添加,这样,你就可以根据你的情况自由的设置恰当的通道。更自由的是,你可以随时改变这个实体对象所属于的通道类型。

3.每一个实体必定有其自身属于的通道类型

每一个带有碰撞的Actor都有一个自己属于的通道类型,这个类型就在下图的Object Type里面。

4.每个实体可以通过碰撞预设来设置是否对其他通道类型实体产生碰撞

每一个带有碰撞的Actor都有一个Collision Presets(我们称他为碰撞预设),这个预设里面记录了他与系统设置里面所有通道类型之间的碰撞关系。参考下图,我们可以看到,这个实体本身的通道类型是WorldStatic,碰撞预设为BlockAll,意思就是与所有的实体都会产生碰撞。我们可以看到在下面有一个列表叫Collision Response,下面所有的对号都打在了Block里面,这就表示这个实体本身与所有打钩的对象都会产生碰撞。(你会看到还有一个trace response,之后再介绍)除了Block,还有Overlap和Ignore,分别是重叠和忽略。

5.碰撞时相互的,所以两个相互碰撞的实体设置都要满足碰撞条件

那是不是下图的这个实体就会和所有实体都会产生碰撞?不是的!我们知道力的作用是相互的,那这里的这个预设也是一个道理,另一个物体想与该实体碰撞,必须在这个物体所属的类型里面的Block打上对号才可以。这样二者就会相互碰撞了。

6.重叠事件也很重要,可以作为场景触发器事件

设置为Ignore和Overlap就不会产生任何碰撞,但是overlap会产生overlap事件(蓝图以及代码中可以判断实体之间是否有重叠,下面有简单解释)

7.trace response的理解

除了碰撞的通道,还有trace通道。trace也是一种碰撞检测的方法,向一个方向位置发射一个射线,对射线击中的对象进行判断,进而采取进一步措施。

所以trace response就是设置实体本身发射的trace会不会被其他对象响应。

8.正确设置staticMesh的碰撞盒类型(这是导致很多奇怪问题的重要bug)

每个staticMesh的碰撞盒必须正确对应他的StaticMeshSettings下的CollisionComplexity属性(双击静态网格物体文件即可进入编辑器)。这里简单介绍一下,每个静态网格实体都可以在编辑器里面添加碰撞盒,可以给物体设置简单的碰撞盒(球型,盒型,10个面的碰撞盒等),也可以设置复杂的碰撞盒。如果你给该静态物体设置简单的碰撞盒,StaticMeshSettings下的CollisionComplexity属性就应该设置为UseSimpleCollisionAsComplexity。如果设置了复杂的碰撞盒(AutoConvexCollision),这个属性就该为UseComplexityCollisionAsSimple(设置为Default也可以)。如果设置反了,就很容易出现无法正确模拟物理碰撞的情况。

9.最后,我们看一下图中的Collision Enabled类型。

正常4.8之前的版本有下面三个类型选项,文档基本说的比较通俗,不过有两点要注意

No Collision(无碰撞) - 不同该对象发生碰撞,无论是踪迹碰撞还是物理碰撞。

No Physics Collision(无物理碰撞) - 该刚体仅用于射线投射、扫射及重叠。

Collision Enabled(启用碰撞) - 该刚体用于物理模拟和碰撞查询。

a.这个选项类似一个总开关,如果这个地方选择了No Collision,那么不管前面怎么设置通道,也不会产生任何碰撞事件

b.这个里面No Physics Collision表示不进行物理模拟,就是说在这个实体移动时不会产生任何碰撞,但是各种重叠的事件还是会触发的。当这个实体静止的时候,与Collision Enabled的效果是完全一样的,可以碰撞也可以触发各种事件。

4.9之后变为下面的四个类型,如果你在官方文档找不到,切换成英文再查一下就能看到了。(中文文档总是更新的比较慢)

No Collision

No collision is enabled for this body.

Query Only

This body is used only for collision queries (raycasts, sweeps, and overlaps).

Physics Only

This body is used only for physics collision.

Collision Enabled

This body interacts with all collision (Query and Physics).

其实4.9之后把原来的No Physics Collision分成了Query Only 和 Physics Only,也就是说Query Only可以进行各种trace,sweep,Overlap事件的触发,但是不会进行物理模拟,简单的讲就是运动时不会产生任何碰撞。但是静止时是由碰撞的。

Physics Only表示只能进行物理碰撞与运动模拟,但是不会触发任何事件。

注意:如果这里设置为No Collision,那么即使在Actor对象开启了simulatePhysics(开启物理模拟)也不会有效,也就不会受到重力而下落

其他注意内容:对于每个StaticMesh类型的Actor(即存在于场景中的实体),他的的detail面板下StaticMesh栏下有一个BlockingVolum,功能是创建一个物理体积。所谓物理体积就是一个游戏不可见的但是真实存在的实体,可以用于触发事件等。BlockingVolum就是一个带碰撞盒的体积,点击这个按钮,就是给这个实体创建一个单独的碰撞盒体积。按住Alt+C可以隐藏或者显示碰撞盒。这个体积可以用于场景中用画刷刷出来没有碰撞盒的静态物体,但是也需要碰撞的物体。

原文链接(转载请标明):http://blog.csdn.net/u012999985/article/details/51290096

ue4蓝图碰撞检测的类型_UE4碰撞规则详解相关推荐

  1. ue4移动到一定距离_UE4移动组件详解(一)——移动框架与实现原理

    原文链接(转载请标明):UE4移动组件详解(一)--移动框架与实现原理_Jerish的博客-CSDN博客​blog.csdn.net 前言 关于UE4的移动组件,我写了一篇非常详细的分析文档.由于篇幅 ...

  2. ue4蓝图碰撞检测的类型_UE4_自定义相机碰撞组件

    相比较UE4自带的SpringArm中的碰撞,主要特点在于前后推进速度不一样 在碰撞时 向前推进的速度较快,在离开碰撞时 向后退的速度较慢 SpringArm自带的碰撞检测 SpringArm的碰撞检 ...

  3. ue4蓝图碰撞检测的类型_[UE4]武器碰撞

    转自:https://www.cnblogs.com/corgi/p/5405454.html 实现武器战斗伤害系统,击中时如何发出碰撞事件产生伤害,目前探索的有通过物理碰撞和LineTrace两种方 ...

  4. UE4蓝图碰撞检测解析

    虽然UE4官方文档对碰撞好像讲的很清楚,但是尝试的时候发现有很多问题,而且和官方文档描述的总会出现一些差异,所以自己总结一下所有有关碰撞的内容,持续更新吧~ 下面总结了一般的碰撞以及多组件碰撞的一些问 ...

  5. Apache Rewrite 规则详解

    在开篇之前: 我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下&qu ...

  6. linux下防火墙iptables用法规则详解

    linux下防火墙iptables用法规则详解 分享者: du52.com 邮件: wangaibo168@163.com 主页: http://www.du52.com linux下防火墙iptab ...

  7. 华硕笔记本计算机名称,华硕笔记本电脑型号命名规则详解.doc

    华硕笔记本电脑型号命名规则详解 华硕笔记本电脑型号命名规则详解在所有笔记本品牌中,华硕的型号命名方式可能是最冗长.而且最难于记忆的,但与此同时,它也是最有参考价值的,因为每个型号都会对应一款固定配置的 ...

  8. 43. Systemd的Unit配置详解,unit文件位置,优先级,unit类型,unit文件字段详解,Unit/Service/Install字段,添加mysql服务等例子

    Systemd的Unit配置详解,unit文件位置和优先级,unit文件类型,unit文件字段详解,[Unit]字段,[Service]字段,[Install]字段,添加服务,创建.service 文 ...

  9. 运维之道 | Nginx rewrite 规则详解

    Nginx rewrite 规则详解 一.rewrite规则概念 rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言.通常而言, ...

  10. LD 文件:规则详解

    LD 文件:规则详解 概论 基本概念 脚本格式 简单例子 简单脚本命令 对符号的赋值 SECTIONS命令 MEMORY命令 PHDRS命令 VERSION命令 脚本内的表达式 暗含的连接脚本 1. ...

最新文章

  1. Exchange 2013学习(八),Outlook Web App offline
  2. 随机生成颜色和透明度
  3. Api容器在应用架构演化中的用途
  4. linux 版本号 加号,如何去除Linux Kernel版本号后面的加号?
  5. 【转载】ASP.NET MVC中Controller与View之间的数据传递总结
  6. 《研磨设计模式》读书笔记之:适配器模式、单例模式
  7. HDFS的StartupProgress启动跟踪分析
  8. Python提取视频帧图片
  9. 同是办公软件,wps和office有什么区别?
  10. 算法基础部分-二叉树
  11. 云服务器和虚拟主机有哪些区别
  12. Spring @Resource
  13. 设计幸运大转盘h5小游戏总结
  14. 黄冠|南昌大学计算机科学与技术,课制|这里有全华师最好看的课件
  15. Pinterest风潮席卷中国互联网-是否重蹈团购潮悲剧?
  16. 7天酒店斩获五洲钻石奖“年度投资价值酒店连锁品牌” 打造酒店投资极致性价比
  17. Google Play Store 下的软件something went wrong,please try again解决办法
  18. anchor free 目标检测_CVPR 2020 | 商汤提出 Anchor-free 目标检测新网络
  19. part time job c语言,如何正确看待——part-time job
  20. 逆水寒最新服务器贴吧,逆水寒新区一号难求,玩家蹲守贴吧半月后崩溃:早知道自己练了...

热门文章

  1. 暑期计算机数学培训心得体会,关于暑期培训心得体会三篇
  2. AutoIt上路03-添加工具栏
  3. linux 获取无线网卡密码错误,解决linux下外接无线网卡报错问题
  4. java Echarts的实战(Echarts图表数据封装)
  5. 根据FOV和图像大小计算相机内参[Python]
  6. cloudera 卸载
  7. python中compile的作用_Python compile函数有什么用?
  8. Dragonfly 基于 P2P 的文件和镜像分发系统
  9. 注册apple id方法
  10. 淘宝在线客服为什么回复那么慢