unity2d 角色跳跃中的卡墙问题

问题描述

当角色跳起来接触左右墙壁时按住左右移动键,会出现卡墙现象,就是角色不会因为重力掉下来,而接触墙壁停止在半空(不符合客观规律)

解决思路

在跳跃中,设置角色刚体摩擦力为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.sharedMaterial = p1;
}

private void FixedUpdate() {
        。。。
        // 着地逻辑
        if (isGrounded) {
                。。。
                rigidbody2d.sharedMaterial = p1;
        }
        // 跳跃逻辑
        if (!isGrounded) {
                。。。
                rigidbody2d.sharedMaterial = p2;
        }
}

至此,就解决了角色跳跃中的卡墙问题,解决方案出乎意料的简单,果然实践出真知呀。

你可能感兴趣的:(unity2d 角色跳跃中的卡墙问题)