UE4 单面模型法线翻转及碰撞问题

1. 前言

最近在做项目的过程中,由于项目简化,多处使用了单面模型,导致之前不得不面对的碰撞问题又重新浮现。
之前的解决方案是直接在模型法线朝向的另一边加一堵空气墙,防止玩家穿模。但效率其低,且不容易维护。
之后由于模型法线翻转,面数又过多,导致加空气墙的方法已经跟不上项目的发展,又想出一种解决方案。把单面模型加简单碰撞(使用Convex Decompo),不用其自身的复杂碰撞。
最后的解决方案我都没想到这么简单,只要在单面模型中把Double Sided Geometry勾选上,并设置为复杂碰撞(Use Complex Collision As Simple)就可以了。

2. 基础知识

关于单面模型法线的问题,就是法线朝向你的那面会有碰撞,另一面没有。这个有时就会发生很有趣的问题,举个栗子:把一根柱子的法线反转,使其法线朝向内部,会发生什么情况。后果就是玩家跑向柱子的时候可以进入柱子内部,但由于法线是朝向内部的,所以玩家出不来了,被困在柱子内部,形成困兽之斗。
下面举个具体栗子:在这里插入图片描述
上面这个单面模型黑色部分就是法线反转的部分,没有碰撞。具体看下模型反面图片就知道了。
在这里插入图片描述
可以清楚看到上面白色部分与之对应的反面是黑色部分的,即无碰撞部分。
在这里插入图片描述
打开单面模型一下,哦~原来只有白色部分才有显示,即有碰撞部分。

了解完基础知识后,下面举一下上面三种解决做法的具体栗子。

3. 具体例子

1.使用复杂碰撞,外加空气墙。空气墙的做法就是加一块板,然后把visibles设为false.一般适用于简单场景。在这里插入图片描述

2.把所有的单面模型使用简单碰撞,再用Convex Decompo生成简单碰撞。适用于单面模型不多的场景。在这里插入图片描述

3.在单面模型中把Double Sided Geometry勾选上,并设置为复杂碰撞(Use Complex Collision As Simple)。运用此方法的过程中,你可以先将使用场景的模型合并成一个Actor(当然是指没有写逻辑功能的场景模型),然后再勾选。十分方便,其中关于Double Sided Geometry,其如果为真的话,执行场景查询时物理三角形网格体将使用两侧面。适用于需要两侧皆有检测的平面和单侧网格体。在这里插入图片描述
至此,单面模型穿模和法线问题解决,可以愉快的去写逻辑代码咯~若有不足之处,请多多包涵并指正。也欢迎行业的大佬多多指点。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值