UE4中的Collision(碰撞)规则梳理

第一部分是碰撞一些小心得,新手可以直接看第二部分,希望能帮到你。

第二部分是基础知识。


第一部分

这里说下使用过程中发现的小点,


1.有些情况可能会让大家产生怀疑。比如这个节点·····

当你使用这个节点的时候,物体十有八九都是直接穿过去了,不管你怎么设置两者之间的碰撞关系!

这个节点是强制位移的,解决办法很简单。只需要勾选Sweep,并且保证Collision主体是根节点即可。

设置完成之后物体会正确的被Block物体挡住,不会再有穿墙现象。

如下:

2.项目如果有需求可以手动添加碰撞响应类型以及碰撞预设。在ProjectSetting的Engine栏下的Collision里面可以设置

3.精度问题,由于是检测是按照帧来的,所以当你速度够快或者正好卡在某个帧检测之间碰撞了,是会出现穿墙现象,可以另外写逻辑来判断解决,例如:绝地求生穿到地底或者墙里面的情况。

4.Projectile和物理材质碰撞检测问题,例如Projectile撞到了树检测不出树的物理材质,一直返回默认值。请在Projectile类碰撞设置里面勾选移动时返回物理材质




第二部分

   一个巴掌拍不响,碰撞事件的产生一定是双方的,所以UE4中的碰撞问题其实也就是两个Object之间的响应设置问题。

    UE4中给物体的碰撞响应规定了三种状态,分别是Ignore(忽略),Overlap(重叠),Block(阻挡)。字面意思其实很清楚了,基本规则是

1.如果两个物体至少有一个被设置成了Ignore,那么不会产生任何碰撞事件。

2.如果两个物体至少有一个被设置成了Overlap,并且不是Ignore那么会产生Overlap事件。

3.仅有两个物体都设置成Block,才会产生Hit事件。

下面这张图片很直观:

PS:Overlap或者Hit事件的生成一定要勾选对应的生成选项。否则不会有事件触发

另外不建议同时勾选Block和Overlap,逻辑上来讲,不会有物体既能处于Hit状态又可以重叠。

选项在这:



    接下来我们需要解释下CollisionPreset(碰撞预设)了,这个是碰撞规则响应的核心部分。


分为四块,

第一个是碰撞方式,有四种

其中,

NoCollision无碰撞,字面意思。

QueryOnly,通常用在不需要进行物理模拟的情况,仅仅是发出“询问”---你撞到我了么?反馈状态,例如射线检测,扫描等。

PhysicsOnly,仅用于物理,需要物理模拟的情况,比如玩家骨骼,物理约束的情况。

CollisionEnable,Query和Physic都生效。

第二个是对象类型。

定义了当前物体的碰撞类别,是与其他物体碰撞的时候计算结果的依据。

第三栏和第四栏都是碰撞响应

定义了物体碰撞发生的时候,响应的规则。3是对射线的响应,4是对其他类型物体的响应。

这些具体的响应大家打开引擎应该都很清楚。


  • 22
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值