unity3d如何删除敌人:S而不是动画师

时间:2014-10-29 09:35:06

标签: unity3d unityscript unity3d-2dtools

如何删除enemyprefab但不是enemanim动画师的敌人?

#pragma strict

var enemy : GameObject;
var speed : float = 1.0;
var enemanim : Animator;

function Start() {
    this.transform.position.x = 8.325;
    this.transform.position.y = -1.3;
    enemanim = this.GetComponent(Animator);
    enemanim.SetFloat("isdead", 0);
}

function OnCollisionEnter2D(coll: Collision2D) {
    if (coll.gameObject.CompareTag("distroy")) {
        Destroy(this.gameObject);
    }
}

function enemstruck() {
    enemanim.SetFloat("isdead", 1);
}

function FixedUpdate() {
    this.transform.Translate(Vector3(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0, 0));
    this.rigidbody2D.velocity = Vector2(-5, 0);
}

这是我的敌人预制代码我在我的主要实例化

这2个var:

var enemytrans : Transform;
var enemy : GameObject;

function Start () {
    while (true) {
        yield WaitForSeconds (Random.Range(3, 0));
        enemy = Instantiate(enemytrans).gameObject;
    }

2 个答案:

答案 0 :(得分:2)

我认为您无法删除GameObject并保存其中一个组件。每个组件都需要连接到一些GameObject,你也不能将它们移动到其他GameObjects。

您可以做的是从GameObject中删除其他组件,您将获得相同的结果。 您可以使用以下脚本删除组件:

Destroy(gameObject.GetComponent(yourComponent));

答案 1 :(得分:0)

可以保存ComponentDestroy GameObject。虽然我只能想到很少有特殊情况,这可以通过逻辑完成(不是出于疯狂)。

例如,您可能有不同的敌人,当一个人死亡时,其特殊权力通过Component转移到另一个敌人。


所以我就是这样做的,使用上面的例子(代码是C#,因为UnityScript缺乏力量):

public void die()
{
    Component c = GetComponent<TheType>();

    // Send component.
    BroadcastMessage("setComponent", c);

    // Destroy.
    Destroy(gameObject);
}

然后,正在听setComponent的任何对象都会处理它:

public void setComponent(Component c)
{
    gameObject.AddComponent<c>();
}

我之前从未这样做过,但它出来的太棒了,现在我要把它添加到我的一个游戏中