繁体   English   中英

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

[英]How can I pass a object to an instantiated object?

我正在创建一个游戏,其中有一个炮塔可以击落物体,并且只有它们在射程内……至少是这样。

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

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

唯一的问题是子弹没有目标。 在Bullet的脚本(C#)上,我定义了一个public GameObject Target ,该目标应包含该目标。 但是我该如何设置呢? 因为当我实例化项目符号时,我知道目标。 通常,我会直接将其设置为Bullet.Target = target类的东西,但是我是Unity的新手,无法看到如何设置我实例化的游戏对象的属性。 然后,子弹的脚本将检查目标是否存在,如果不将其自身销毁,则应移动至目标:)

但是如何设置目标呢?

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

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

在我看来,您似乎使事情变得过于复杂,因为您似乎想让子弹转开。 我不知道您的炮塔是如何工作的,但是我在游戏中看到的大多数炮塔在视线范围内都会跟随目标,然后在足够接近的位置开始射击。

伪式的,像这样:

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

        if ( targetInRange() ) {
            startShooting();
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM