我正在开发游戏并使用新的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;
}
我可以采取哪些措施来避免这种行为?
答案 0 :(得分:0)
我认为由于激光被重定向,条件返回true。但某些变量在某处是错误的。
尝试打印direction
,collision.contacts[0].normal
,collision.contacts.Length
,GameManager.instance.bouncySpeed
和rb.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("////////");
}
在工作和窃听时比较这些值。如果您没有找到错误的
,也可以在这里发布