【问题标题】:Unity 5.2 - Moving character bumps between 2D edge collidersUnity 5.2 - 在 2D 边缘碰撞器之间移动角色颠簸
【发布时间】:2016-01-21 23:11:17
【问题描述】:

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

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

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

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

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

... 无济于事。

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

帮助!

【问题讨论】:

  • 不是呃...100% 确定您的图像代表什么。看起来只是正交视口的屏幕截图...在一半视图中有一个对象?
  • @Serlite 这是两个地形块及其对撞机相交处的放大(和裁剪)屏幕截图 - 显示它们(全部)完全对齐。我已经编辑了问题并添加了第二张缩小的屏幕截图,希望它更清晰。
  • @user3071284 是的。我已经使用了顶点捕捉,并且还输入了所有传输点和碰撞点(通过脚本)以确保它们对齐。
  • 尝试换成3D/透视相机,看看能不能再放大一点;有时我发现正交相机可能放大不了那么远。碰撞发生在所有块之间还是仅在不平坦的块之间发生?

标签: unity3d game-development unity3d-2dtools collider


【解决方案1】:

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

void OnCollisionEnter2D(Collision2D col)
{
    if (col.gameObject.name.StartsWith("block"))
        rigidbody2d.velocity = new Vector2(rigidbody2d.velocity.x, 0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多