如何修复 Unity 中 2D 碰撞中的弹跳问题?



我的游戏是一个自上而下的2D游戏,当玩家在移动时与另一个物体相撞时,玩家开始弹跳。我尝试使用弹性为 0 的 2D 物理材料,但它并没有解决问题。我认为这与我的运动代码方式有关。我尝试使用Rigidbody.MovePosition,但它不起作用,我的播放器出现故障。这是我的运动代码。

float horizontal = Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime;
float vertical = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime;
transform.Translate(new Vector2(horizontal, vertical));

尝试在 FixedUpdate 中的刚体上使用 MovePosition 方法,而不是更改玩家变换的位置。如果这不能解决问题,请尝试将玩家刚体的碰撞检测模式更改为连续。

在 Unity 中使用物理和刚体时,您可能希望在 FixedUpdate 方法中执行大多数与物理相关的操作。此方法与 Unity 的物理循环同步运行,所有物理计算都是在调用所有 FixedUpdate 方法后立即完成的。这允许平滑的交互和物理效果。

最新更新