0

现在我们正在研究 Infinity-Runner,我遇到了这个奇怪的错误。有东西离开屏幕后,它会被一个摧毁一切的对撞机捕获。它工作......几乎。它会摧毁地面、背景东西、你跳过的敌人,但不会摧毁新实施的“路障”。

这是一张图片,绿色占位符是障碍物 http://s4.postimg.org/8uaorv7ot/Bug.png 希望这可能有助于可视化我在说什么^^。

我用于 Destroyed(绿盒对撞机)的脚本是:

            void OnTriggerEnter2D(Collider2D other)
{
    if (other.tag == "Player")
    {
        Debug.Log ("Break is gonna happen");
        Debug.Break();
    }
    else if (other.gameObject.transform.parent)
    {
        Destroy(other.gameObject.transform.parent.gameObject);
    }
    else
    {
        Destroy(other.gameObject);
    }
}

这是障碍的脚本:

        void OnCollisionEnter2D(Collision2D other)
{
    if(other.gameObject.tag == "Player")
    {
        Debug.Break ();
    }
}

所以基本上没有任何东西会破坏 DestroyerScript。它甚至比敌人的剧本简单得多……但他们被摧毁了。

提前感谢您的帮助,如果需要,我可以提供更多信息。(哦,这张照片中的所有艺术都是占位符^^)

4

1 回答 1

0

您可以尝试在玩家离开对撞机时使用 OnTriggerExit2D 触发。并确保您在http://docs.unity3d.com/ScriptReference/Collider2D.OnTriggerExit2D.html之前向您的精灵添加了合适的 collider2d 我以前没有使用它,但我认为它可能有效

于 2014-12-20T08:21:56.823 回答