【unity3D】 分享学习路上的一些坑(一)——商店导入的模型人物站上去看起来是飘着的;

问题描述:

由于需求原因,从unity上的商店购置了一套资源,作为场景搭建的元素。搭建完放上角色行走时发现人物会悬浮在模型上方。
即运行后如图,光照阴影是贴在模型上的,但人物的脚与影子却不在一个点上,很明显是漂浮在模型上方的:
人物看起来飘离地面

分析:

1.检查是否有其余模型覆盖在二者之间
简单查看的方法:从层级列表里拖出这两个对象,重新放置在另一个场景中运行。将二者拉出来放在另一个空白场景主要是为了排除其它模型的干扰,确保场景内基本只有他们俩的存在以方便问题的排查。
层级中模型只有人物character和地面ground
当重新放置在另一个场景中运行,未出现上述情况,则说明有其它模型阻挡,与该人物脚下地面关系不大,仔细查看其余模型即可。
若依旧出现上述人物飘浮的情况,则进行进一步排查。

2.查看人物刚体
如图:人物身上的胶囊体,360°检查是否位于脚底;或者可以直接创建一个cube查看是否是人物的问题:
人物身上的胶囊刚体
cube影子
如果cube没问题但人物有问题的话则重点检查人物的胶囊体是否有偏差;
若都有问题则说明问题处在地形模型上。

3.查看地形模型

点击地形模型(记得打开Gizmos,勾选mesh系列)查看模型网格:
ground网格
发现网格加在了模型上方的感觉,查看其碰撞体,有两个,且都勾选了凸面:
ground的Collider
问题应该就出在这上面,所以下一步,可以选择运行场景,在场景里的重力作用下实时观察到哪个mesh是导致出现飘浮问题的原因。
具体即先将MeshCollider组件都取消选中凸面的勾选
凸面勾选取消
然后运行场景,逐个选中组件,但记得留至少一个mesh。直到cube正常落在地面上:
选择最终有用的Collider
至此,问题解决。关闭运行后,将ground模型的MeshCollider重新勾选为运行时最后的状态即可。
而造成上述问题的原因,不太清楚,猜测是因为模型导入的时候unity为其自动匹配了两个mesh。且凸面是具有厚度的,会导致比原模型厚度稍微高点从而视觉上看起来显得漂浮。
如果有清楚原因的也可以告知一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值