UE4碰撞专题笔记

目录

碰撞基础

碰撞查询详解

碰撞应用

碰撞基础

  • 静态网格体里需要区分复杂碰撞和简单碰撞

    • 简单碰撞可以通过盒体、球体、凸包分解等算法生成,适用于简单的单个模型

    • 复杂碰撞适用于组合的复杂模型,比如带有门的一面墙需要部分阻挡部分不阻挡,可以将碰撞模式设置为将复杂碰撞用于简单碰撞(影响性能)

  • 植被工具设置碰撞

    需要模型(Static Mesh)设置好碰撞的同时,植被工具里设置植物的碰撞预设

  • Actor的碰撞是组件的碰撞, 触发事件:on component hit

  • Actor包含多个组件时,碰撞之间可能会冲突,两种碰撞组件:mesh,碰撞体积(包括角色自带胶囊体和添加的碰撞盒)), 一般碰撞查询都会使用碰撞体积而不是mesh的碰撞

 

碰撞查询详解

  • 碰撞查询原理及规则推荐文章

  • 碰撞需要双方配合(ignore overlap block),碰撞响应总共有三个选项:Ignore,Overlap,Block。顾名思义,Ignore忽略碰撞,Block就是阻挡,而Overlap与Ignore类似,不会产生阻挡,但会产生重合的事件通知。两两组合就有下面的情况:

    《UE4碰撞专题笔记》

    • 上图可理解为“消极组合”,以最低级的碰撞为准

  • CollisionEnabled决定了碰撞的用途

    • NoCollision:如果是这个,那么其他碰撞设置都会被忽略不计,因为不再考虑碰撞了;

    • Query Only:仅用于查询,不会考虑物理仿真;(射线&球体trace, 移动碰撞查询)

    • Physics Only:仅用于物理仿真,不考虑查询;(刚体的物理模拟)

    • Collision Enabled(Query and Physics):同时用于查询与仿真

  • generate hit eventsgenerate overlap events选项一般不会同时勾,既碰撞又重叠不合理。重叠用于检测,碰撞用于阻挡或模拟物理

  • 自定义碰撞

    • 项目设置 – collison中可以自定义obj channeltrace channelcollison 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数组保存检测到的物品列表

    • 根据是否实现了蓝图接口确定物品交互的级别:是否可交互?是否可拾取?

    • 具体的交互操作由物品自己实现的蓝图接口方法决定

    原文作者:Ctrlturtle
    原文地址: https://blog.csdn.net/hechao3225/article/details/113532209
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞