2015-10-22 33 views
2

我对统一5.2创建一个快节奏,2D横向卷轴游戏,建设我的地形进行离散“块”,每一个都有自己EdgeCollider2D组件。统一5.2 - 移动二维边缘撞机之间的字符颠簸

有地方,因为它从一个块到另一个穿过我的性格被向上撞(想象一下,在道路上驾驶自己的车在减速带)的问题。

这不会发生所有的时间。似乎是随机的,这更加刺激,因为它使寻找解决方案更加困难。

我已经尝试了所有的我能找到这个网站类似的问题的建议,其中包括:

  • 上的字符
  • 确保地形块及其相应的对撞机是完全使用CircleCollider2D's对齐。附上的截图显示了其中一个交叉点。
  • 改变“最小渗透惩罚”设置为最小允许值离散和连续碰撞检测之间(0.0001)
  • 切换为字符的RigidBody2D
  • 增加了对人物的RigidBody2D
质量和重力规模

...无济于事。

除了建设有从开始单一的边缘撞机到结束(这我试图避免)一个单一的,大规模的地形对象,我已经江郎才尽。还有什么我失踪?它只是一个Unity错误?

帮助!

Terrain block intersection screenshot - zoomed in

Zoomed out - scene

+0

不是呃... 100%确定你的图片代表什么。看起来只是一个正交视口的屏幕截图......对象只有一半的视图? – Serlite

+0

@Serlite它的其中两个地形块及其对撞机相交放大的(和裁剪)截图 - 以显示他们是(全部)完全一致。我编辑了这个问题,并添加了第二个缩小的屏幕截图,希望能够让它更清晰。 – nerv

+0

你在使用顶点捕捉吗? http://docs.unity3d.com/Manual/PositioningGameObjects.html – user3071284

回答

0

尝试检测到冲突并垂直速度设置为零。

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