【Unity】人物跳跃卡墙Bug的解决方法

问题描述

发现人物在跳跃时如果碰到墙壁,会卡住不动。

卡墙

原因是人物的RigidBody没有物理材质,导致其产生的摩擦力无限大,造成了卡墙现象

人物的RigidBody2D

问题解决

给人物设置两个物理材质,一个有摩擦,一个无摩擦。

在人物跳跃时切换无摩擦材质,其他情况切换有摩擦的材质。

两种材质

1
2
3
4
5
6
7
8
9
10
11
12
13
//物理材质
public PhysicsMaterial2D pm_normal;
public PhysicsMaterial2D pm_jump; //跳跃时切换无摩擦力,防止卡墙

private RigidBody2D rig;
...
if (落地条件) {
rig.sharedMaterial = pm_normal;
}

if (跳跃条件) {
rig.sharedMaterial = pm_jump;
}

挺取巧的一个办法,就当作是简单的补丁先用着吧。


【Unity】人物跳跃卡墙Bug的解决方法
https://chordfish-k.github.io/2023/01/12/unity/unity-20230112/
作者
超弦鱼
发布于
2023年1月12日
许可协议