问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

UE4 碰撞篇-打破砂锅问到底(4) 碰撞计算

发布网友 发布时间:2024-10-03 14:31

我来回答

1个回答

热心网友 时间:2024-10-21 03:32

移动类型的碰撞检测使用的是PhysX的Sweep场景查询。当目标在移动过程中触发碰撞时,会引发OnHit事件和Overlap事件。跟踪代码是关键,首先查看调用堆栈,然后逐步分析。

在UE中,无论哪种移动方式,最终会调用一个类似的方法,它接受初始点和目标点作为参数。目标点是移动的目的地,这个方法用于检测目标点是否可达。接着在UWorld::ComponentSweepMulti中遍历关联的PhysX的pxShape执行sweep查询。

ExecuteOnPxRigidActorReadOnly是一个宏,内部执行传入的函数,该函数的参数是BodyInstance中获取的pxActor。之后通过FillInlinePxShapeArray_AssumesLocked获取到所有关联的pxShape执行GeomSweepMulti_PhysX。

首先准备查询参数,包括碰撞规则的pxFilterData、查询所需的回调函数PQueryCallbackSweep等作为参数,执行pxScene->sweep传递给物理引擎处理请求。这里关键在于回调函数,让虚幻实现自己的碰撞规则。

FPxQueryFilterCallbackSweep继承自FPxQueryFilterCallback,而PxQueryFilterCallback继承自PhysX中的结构体PxQueryFilterCallback并重载了preFilter和postFilter函数。根据PhysX的回调规则,判断preFilter返回的结果,如果为PxQueryHitType::eBLOCK则为block目标,如果为PxQueryHitType::eTOUCH则为overlap目标,如果为PxQueryHitType::eNONE则忽略目标。因此,重载的preFilter就是计算移动碰撞的地方。

在其中,CalcQueryHitType定义了碰撞规则的计算方式。最终明白虚幻的碰撞规则:如果两个对象都是block,碰撞结果为block;一个block、一个overlap,则碰撞结果为overlap;一个block与一个ignore,碰撞结果为ignore;两个都是overlap,则碰撞结果为overlap;只要有一个ignore,碰撞结果为ignore。

射线类型碰撞检测与移动碰撞类似,遵循相同的碰撞规则。首先从LineTraceSingle开始分析,将ETraceTypeQuery TraceChannel转换为ECollisionChanel,接着配置参数并调用RaycastSingle执行碰撞查询。

物理模拟类型碰撞检测同样遵循碰撞规则。在执行物理模拟时,系统会自动检测和处理碰撞事件,确保物理对象之间的正确交互。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
合作医疗和市医保冲突吗?哪个报销的多 合生元益生菌怎么样多少钱 带你正确认识它 合生元的益生菌多少钱一盒呢? 探索NikonD300s图书目录 邮政投诉11183最狠的办法 投诉11183最狠的办法 百度网盟推广怎么删除? - 知乎 世界十大禁片之索多玛120天 拍索多玛120天有什么意义? 支付宝商家定位怎么更改不了 Unity和UE4两大游戏虚拟引擎,如何选择? ...女10年熬成黄脸婆,你如今事业有业却嫌我不再青春,怎么办? 听胎教音乐的正确姿势 胎教要平躺还是侧躺 胎教需要读出声么 求两篇小文章,每篇一千字以上,一篇题材不限,一篇以科学发展观为主题... 对党的认识 一千字左右 神奇宝贝全系列动画版跟剧场版观看顺序 X1的电源接口哪个不用启动车能用 初中物理实验"探究杠杆平衡条件"实验前使杠杆水平平衡的目的是什么? 布洛芬胶囊是治什么的 ...困难都找别人帮忙,怎么锻炼他独立解决问题的能力? ...里面洪金宝他们坐直升机去执行任务 但是当他们跳伞时 林正英收... 对于7 岁的孩子,怎样培养他们的解决问题的能力? 有哪些培养孩子的问题解决能力的方法? ...困难都找别人帮忙,怎么提高他独立解决问题的能力? 银行卡刷卡显示发卡方状态不正常是什么意思? 家庭教育如何培养孩子的问题解决能力? ...困难都找别人帮忙,怎样锻炼他独立解决问题的能力? π=4∑(k=0,..∞)(-1)^k/(2k+1) 怎么算? 求级数∑((1+1/k)^k²)/3^k的值 UE4工程升级UE5教程及注意事项 中年妇女网上爱眛是现实中缺爱吗? 我是一个平凡的中年妇女,不善交流,也很少和异性交往,为啥见了面的异性... 逆战里面的GP步枪SG551和XM8哪把枪好用 逆战神兽步枪排名2015 逆战方天画戟比玄武朱雀哪个好 优步的评分是按七天显示4.94。按一天算是4.67。到时候一周审核下来... ...APP显示,近7天评分是4.67,而今天的是5分,以那个为准 优步才4.67星怎么才能恢复五星 平级4.67优步会给奖励吗 优步4.67星要跑多少单才能上4.8 微信被异常关闭并提示“重新拨打”? 王者荣耀公孙离打法攻略介绍_王者荣耀公孙离打法攻略是什么 梦幻西游0级到85级剧情点一共多少个? 李明世的影视作品 求张东健演的一部电影 李惠恩生平 阳江开车到香港香港天坛大佛费用 吉化建设公司在一次施工探伤结束后,探伤仪器的探头中的放射源因自动关闭... 宋学文核辐射事件真相 当时发生了什么
  • 焦点

热门图文

猜你喜欢