如何将对象传递给实例化对象?

时间:2014-04-10 19:08:02

标签: c# unity3d

我创造了一个游戏,其中有一个炮塔击落物体,并且只有当它们在射程内时......至少这是想法。

现在我能够检测物体距离,如果距离足够近,炮塔就会发射物体:

            if( distanceToTarget < 10 )
            {
                Instantiate(Bullet, transform.position, new Quaternion());
            }

唯一的问题是子弹没有目标。在Bullet的脚本(C#)上我定义了一个应该保持目标的public GameObject Target。但是我该怎么设置呢?因为当我实例化子弹时,我知道目标。我会定期将其设置为Bullet.Target = target,但我是Unity的新手,并且无法查看如何设置我实例化的游戏对象的属性。 子弹的脚本然后将检查目标是否存在,如果不是自我毁灭,如果前往目标:)

但我怎样才能设定它的目标?

2 个答案:

答案 0 :(得分:1)

此Instantiate函数返回实例化对象。 您所需要做的就是:

if( distanceToTarget < 10 )
    {
        GameObject obj = (GameObject) Instantiate(Bullet, transform.position, new Quaternion());
        obj.GetComponent<Bullet>().Target = target;
    }

答案 1 :(得分:0)

在我看来,你过于复杂的事情,因为你似乎想要操纵子弹。我不知道你的炮塔是如何工作的,但是我在游戏中看到的大多数炮塔都会在目标开始时跟踪目标,然后在目标足够接近时开始射击。 / p>

Pseudo-ish,像这样:

void Update () {
    if ( canSeeTarget() ) {
        rotateToTarget();

        if ( targetInRange() ) {
            startShooting();
        }
    }
}
相关问题