首页 文章

在团结中摧毁和奇怪的行为(多个克隆)

提问于
浏览
0

我想创造一些行为像矿井一样的东西,这意味着会有一个物体,当有人踩到它时,会发生爆炸,踩到的物体会受到伤害 . 这部分很有效,我已经能够自己弄清楚这种行为 .

踩到矿井后,物体会自行消灭 . 因此,它所创造的“爆炸”仍然存在 . 更奇怪的是,该矿创造了这次爆炸的多重克隆 . 这是代码

using UnityEngine;
using System.Collections;

public class Mine : MonoBehaviour {

    Transform playerT;
    GameObject itself;

    // Use this for initialization
    void  Awake() {
        playerT = GameObject.FindGameObjectWithTag ("Player").transform;
    }


    void OnTriggerEnter(Collider other) 
    {
        if (other.gameObject.tag == "Monster") {

            EnemyHealth enemyHeatlh = other.GetComponent<EnemyHealth> ();
            enemyHeatlh.Death ();

            PyroExplode Pyro = gameObject.AddComponent("PyroExplode") as PyroExplode;

            Pyro.setTransform(transform);
            Pyro.Generate ();

            Destroy (Pyro.gameObject, 1.6f);
            Destroy (this.gameObject, 1.6f);

        }
    }
}

在这段代码中,我实例化一个新的PyroExplode,设置它的transform属性并在他身上调用方法Generate() . 这是Generate()方法:

public void Generate(){ 
    Instantiate ( Resources.Load ("Pyro1"), mineTransform.position, mineTransform.rotation);
}

这将加载带有动画,球体对撞机和附加脚本的预制件(脚本呈现爆炸效果) . 所以,现在当有人踩到矿井时会发生这种情况!
enter image description here

创建了多个克隆 . 我首先想到的是因为怪物仍在与矿井相撞,因此回想起OnTriggerEnter()事件 . 我试图在我的OnTriggerEnter()中将我的对撞机的半径设置为0,这样它就不会再碰到任何其他东西,但它没有帮助 . 此外,正如您所看到的,Pyro不会被破坏 . 我试图在PyroExplode类中调用Destroy来查看它是否会产生影响,但它并没有 .

所以这是我的两个问题:

1-为什么它不被破坏?
2-为什么有什么东西踩到矿井时会有超过1个火焰?

1 回答

  • 2

    我认为既然你有一个球体对撞机,那么另一个物体在进入时会碰到很多点 . 考虑两个球体碰撞,为引擎报告碰撞,这两个项目需要重叠 . 如果你有两个至少有4个接触点的球体,那么这四个球体就要求进入了 . 与立方体相同 . 如果对撞机更复杂,可能会有更多的呼叫 .

    您可以尝试阻止多个调用:

    private bool sentinel = false;
    void OnTriggerEnter(Collider col){
        if(this.sentinel == true){ return; }
        this.sentinel = true;
        // rest of the code
    }
    

相关问题