1

我将如何删除动画师上的敌人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 enemytrans : Transform;
var enemy : GameObject;

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

2 回答 2

2

我认为您不能删除 GameObject 并保存其组件之一。每个组件都需要附加到某个 GameObject 上,您也不能将它们移动到其他 GameObjects 上。

你可以做的是从你的游戏对象中删除其他组件,你会得到相同的结果。您可以使用以下脚本删除组件:

Destroy(gameObject.GetComponent(yourComponent));
于 2014-10-29T10:12:56.320 回答
0

可以保存ComponentDestroyGameObject尽管我只能想到很少有特殊情况可以用逻辑来完成(不是出于疯狂)。

例如,你可能有不同的敌人,当一个人死亡时,它的特殊力量会通过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>();
}

我以前从未这样做过,但结果非常棒,现在我要把它添加到我的一个游戏中

于 2014-10-31T03:33:01.743 回答