[英]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.