目录
碰撞基础
-
静态网格体里需要区分复杂碰撞和简单碰撞
-
简单碰撞可以通过盒体、球体、凸包分解等算法生成,适用于简单的单个模型
-
复杂碰撞适用于组合的复杂模型,比如带有门的一面墙需要部分阻挡部分不阻挡,可以将碰撞模式设置为将复杂碰撞用于简单碰撞(影响性能)
-
-
植被工具设置碰撞
需要模型(Static Mesh)设置好碰撞的同时,植被工具里设置植物的碰撞预设
-
Actor的碰撞是组件的碰撞, 触发事件:on component hit
-
Actor包含多个组件时,碰撞之间可能会冲突,两种碰撞组件:mesh,碰撞体积(包括角色自带胶囊体和添加的碰撞盒)), 一般碰撞查询都会使用碰撞体积而不是mesh的碰撞
碰撞查询详解
-
碰撞查询原理及规则推荐文章
-
碰撞需要双方配合(ignore overlap block),碰撞响应总共有三个选项:Ignore,Overlap,Block。顾名思义,Ignore忽略碰撞,Block就是阻挡,而Overlap与Ignore类似,不会产生阻挡,但会产生重合的事件通知。两两组合就有下面的情况:
-
上图可理解为"消极组合",以最低级的碰撞为准
-
-
CollisionEnabled决定了碰撞的用途
-
NoCollision:如果是这个,那么其他碰撞设置都会被忽略不计,因为不再考虑碰撞了;
-
Query Only:仅用于查询,不会考虑物理仿真;(射线&球体trace, 移动碰撞查询)
-
Physics Only:仅用于物理仿真,不考虑查询;(刚体的物理模拟)
-
Collision Enabled(Query and Physics):同时用于查询与仿真
-
-
generate hit events和generate overlap events选项一般不会同时勾,既碰撞又重叠不合理。重叠用于检测,碰撞用于阻挡或模拟物理
-
自定义碰撞
-
项目设置 - collison中可以自定义obj channel ,trace channel 和 collison preset
-
直观的理解,当你考虑的是对象移动时发生的碰撞,就用ObjectChannel(一开始UE的叫法是MovementChannels),如Pawn,StaticMesh;若考虑是射线/球形检测时发生的碰撞,就用TraceChannel,如Weapon,Visibility
-
-
蓝图动态设置碰撞
-
碰撞响应 set collision response channel
-
组件碰撞开关set enable collision
-
actor碰撞开关set actor enable
-
-
static mesh直接建立简单碰撞或复杂碰撞,sketal mesh通过physical Asset编辑
-
UE4物理模块原理分析 https://blog.csdn.net/u012999985/article/details/78242493
碰撞应用
-
物品检测
-
给人物添加一个专门的item detector 碰撞体,设置级别为overlap,打开overlap事件通知
-
当进入检测范围和离开时,begin overlap 、 end overlap分别触发
-
通过维护一个item数组保存检测到的物品列表
-
根据是否实现了蓝图接口确定物品交互的级别:是否可交互?是否可拾取?
-
具体的交互操作由物品自己实现的蓝图接口方法决定
-