2

我正在 Unity 5.2 上创建一个快节奏的 2D 横向滚动游戏,用离散的“块”构建我的地形,每个块都有自己的EdgeCollider2D组件。

遇到一个问题,我的角色在从一个街区穿越到另一个街区时会向上颠簸(想象一下你的车在路上的减速带上行驶)。

这不会一直发生。似乎是随机的,这更令人恼火,因为它使寻找解决方案变得更加困难。

我已经尝试了所有可以在本网站上找到的类似问题的建议,包括:

  • CircleCollider2D's在角色上使用
  • 确保地形块及其对应的对撞机完全对齐。随附的屏幕截图显示了其中一个交叉点。
  • 将“惩罚的最小穿透”设置更改为允许的最小值 (0.0001)
  • 在角色的离散和连续碰撞检测之间切换RigidBody2D
  • 增加角色的质量和重力比例RigidBody2D

……无济于事。

除了从头到尾用一个边缘对撞机构建一个单一的、巨大的地形对象(我试图避免)之外,我已经没有想法了。还有什么我想念的吗?它只是一个 Unity 错误吗?

帮助!

地形块交叉口截图 - 放大

缩小 - 场景

4

1 回答 1

0

尝试检测碰撞并将垂直速度设置为零。

void OnCollisionEnter2D(Collision2D col)
{
    if (col.gameObject.name.StartsWith("block"))
        rigidbody2d.velocity = new Vector2(rigidbody2d.velocity.x, 0);
}
于 2015-11-15T16:52:20.720 回答