Unity 5.2 - 在2D边缘碰撞器之间移动角色碰撞

时间:2015-10-22 15:37:49

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

我在Unity 5.2上创建一个快节奏的2D侧滚动游戏,用离散的"块"构建我的地形,每个块都有自己的aws.subnet_id = "subnet-ed9cd588" # vagrantVPC publicSubnet aws.associate_public_ip = true 组件。

遇到问题,当我的角色从一个街区穿过另一个街区时,我的角色会向上碰撞(想象一下驾驶你的汽车越过路上的减速带)。

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

我已尝试过在本网站上针对类似问题找到的所有建议,包括:

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

......无济于事。

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

帮助!

Terrain block intersection screenshot - zoomed in

Zoomed out - scene

1 个答案:

答案 0 :(得分:0)

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

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