Unity2D Tilemap碰撞问题

时间:2018-01-25 08:18:25

标签: unity3d unity5 unity3d-2dtools

我正在开发游戏并使用新的Tilemap功能。到目前为止他们的工作非常棒。这么容易掀起一个级别。然而,当我在tilemap对撞机上反射激光时,我遇到了问题。你可以在下面的GIF中看到前几个激光反射很好,但有时在碰撞器遇到的小裂缝中,我的激光会产生不必要的行为。

激光由一个小的子弹精灵渲染器对象组成,后面有一个跟踪颜色的跟踪渲染器和一个圆形对撞机。

这是我的碰撞代码。其中direction是一个Vector2变量类,而rb是GameObject' s RigidBody2D组件隐藏在Start()函数中。

if (collision.collider.gameObject.layer == LayerMask.NameToLayer ("Terrain")) {
    direction = Vector2.Reflect (direction, collision.contacts[0].normal);
    rb.velocity = direction.normalized*GameManager.instance.bouncySpeed;
}

我可以采取哪些措施来避免这种行为?

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为由于激光被重定向,条件返回true。但某些变量在某处是错误的。

尝试打印directioncollision.contacts[0].normalcollision.contacts.LengthGameManager.instance.bouncySpeedrb.velocity

if (collision.collider.gameObject.layer == LayerMask.NameToLayer ("Terrain")) {
    direction = Vector2.Reflect (direction, collision.contacts[0].normal);
    rb.velocity = direction.normalized*GameManager.instance.bouncySpeed;

    Debug.Log("////////");
    Debug.Log("direction: " + direction);
    Debug.Log("collision.contacts[0].normal: " + collision.contacts[0].normal);
    Debug.Log("collision.contacts.Length: " + collision.contacts.Length);
    Debug.Log("GameManager.instance.bouncySpeed: " + GameManager.instance.bouncySpeed);
    Debug.Log("rb.velocity: " + rb.velocity);
    Debug.Log("////////");
}

在工作和窃听时比较这些值。如果您没有找到错误的

,也可以在这里发布