问题描述
当角色跳起来接触左右墙壁时按住左右移动键,会出现卡墙现象,就是角色不会因为重力掉下来,而接触墙壁停止在半空(不符合客观规律)
解决思路
在跳跃中,设置角色刚体摩擦力为0即可
解决方案
要改角色刚体摩擦力在Rigidbody组件当中没有摩擦力这个参数,需要为我们Rigidbody组件添加Material。
在Project视图中,右键,Create->Physic Material 2D,这里我们创建两个Material,分别为p1, p2。(p1是有摩擦力的,p2是无摩擦力的(p2->Friction为0))
拖动p1到角色Rigidbody组件中的Material,然后,贴代码:
Rigidbody2D rigidbody2d;
public PhysicsMaterial2D p1; // 有摩擦力的
public PhysicsMaterial2D p2; // 无摩擦力的
bool isGrounded;
void Start()
{
rigidbody2d = GetComponent<Rigidbody2D>();
rigidbody2d.sharedMaterial = p1;
}
private void FixedUpdate() {
。。。
// 着地逻辑
if (isGrounded) {
。。。
rigidbody2d.sharedMaterial = p1;
}
// 跳跃逻辑
if (!isGrounded) {
。。。
rigidbody2d.sharedMaterial = p2;
}
}
至此,就解决了角色跳跃中的卡墙问题,解决方案出乎意料的简单,果然实践出真知呀。