C# 如何将对象传递给实例化对象?
我正在制作一个游戏,游戏中有一个炮塔击落目标,并且只有当它们在射程内时。。。至少这是我的想法 现在我能够探测到目标距离,如果距离足够近,炮塔就会发射子弹:C# 如何将对象传递给实例化对象?,c#,unity3d,C#,Unity3d,我正在制作一个游戏,游戏中有一个炮塔击落目标,并且只有当它们在射程内时。。。至少这是我的想法 现在我能够探测到目标距离,如果距离足够近,炮塔就会发射子弹: if( distanceToTarget < 10 ) { Instantiate(Bullet, transform.position, new Quaternion()); } if(距离目标
if( distanceToTarget < 10 )
{
Instantiate(Bullet, transform.position, new Quaternion());
}
if(距离目标<10)
{
实例化(Bullet,transform.position,new Quaternion());
}
唯一的问题是子弹没有目标。在子弹的脚本(C#)上,我定义了一个应该容纳目标的公共游戏对象目标。但我该怎么设置呢?因为当我实例化子弹时,我知道目标。通常我会直接设置它,比如Bullet.Target=Target
,但我对Unity是新手,不知道如何设置我实例化的游戏对象的属性。
然后,项目符号的脚本将检查目标是否存在,如果不自行销毁,则返回目标:)
但是如何设置它的目标呢?这个实例化函数返回实例化对象。
您需要做的只是:
if( distanceToTarget < 10 )
{
GameObject obj = (GameObject) Instantiate(Bullet, transform.position, new Quaternion());
obj.GetComponent<Bullet>().Target = target;
}
if(距离目标<10)
{
GameObject obj=(GameObject)实例化(Bullet,transform.position,new Quaternion());
obj.GetComponent().Target=Target;
}
在我看来,你似乎把事情复杂化了,因为你似乎想控制局面。我不知道你的炮塔是如何工作的,但我在游戏中看到的大多数炮塔都会在目标出现时开始跟踪目标,然后在距离足够近时开始射击
比如说:
void更新(){
if(canSeeTarget()){
旋转目标();
if(targetRange()){
开始拍摄();
}
}
}
y难道你不把子弹射到敌人的位置吗?“子弹”(游戏对象)是我存储“子弹”预置的变量bullet'预置有一个带有公共游戏对象目标的脚本。我似乎无法设定目标?对不起,我忘了句末的演员阵容。这就是我所能做的/Bullet是一个游戏对象,我可以使用这样的预设?不。试着读一下,你将需要得到组件。这个答案似乎是你需要的,尽管我可能会在Bullet脚本中创建一个SetTarget函数,以便从塔脚本中使用,而不是直接设置变量。您可能希望接受以下答案,以鼓励人们在未来提供帮助:)