前言
本篇博客旨在解决黑魂like游戏开发时遇到的一个问题,当我们的角色跳起来撞墙时,会卡在半空中。
而且由于在空中时我们是没用办法操作的,所以基本上就卡死了。
今天实现的内容:
角色跳起来时的卡墙问题描述
这个问题的描述如前言所述,问题产生的原因主要是因为在我们的角色控制器代码会在跳起来时锁死m_planarVec,而这时m_planarVec是有大小的,所以在FixedUpdate中会一直给刚体的速度赋值(m_rb.velocity = new Vector3(m_planarVec.x, m_rb.velocity.y, m_planarVec.z) + m_thrustVec;
),这本来是为了维持跳跃时的惯性效果,却导致角色撞在墙上时依旧会一直具有一个向前的速度,按照Unity的物理引擎算法,这会产生一个与墙面的摩擦力,所以导致角色掉不下来卡死在墙上。所以这是一个摩擦力的问题。要解决,我们可以更换墙面的物理材质,或者在检测到撞墙时改变m_planarVec从而改变速度。
修改物理材质方案
先创建一个新的物理材质。
关于Unity物理材质的几个参数,分别是动摩擦系数,(最大)静摩擦系数,弹性,描述该物理材质与物体产生摩擦时按照什么算法计算实际摩擦系数(两个物体的最大值、最小值、平均值、相乘的值)、以及描述该物理