【问题标题】:Why does the Sprite not get destroyed 2D unity为什么 Sprite 不会被破坏 2D unity
【发布时间】:2015-02-06 00:21:54
【问题描述】:

现在我们正在研究 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。它甚至比敌人的脚本要简单得多……但他们会被摧毁。

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

【问题讨论】:

  • 我认为:如果您对 unity3d 有一些疑问,最好不要在 stackoverflow 上提问。试试这个:forum.unity-community.de
  • 可能会尝试这个...如果问题是基于统一的...只是认为我可能根据我的代码犯了一个错误。
  • 看看:docs.unity3d.com/Manual/CollidersOverview.html 并检查碰撞器。也许你设置了触发器,但你不应该。还要检查 Colliders 是否都是 2D 类型。这就是我能猜到的。也许它有帮助。否则请检查上面的链接,因为 C# != Unity3D 中的 C#。

标签: c# unity3d destroy unity3d-2dtools


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2020-03-08
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    相关资源
    最近更新 更多