C# 在碰撞的游戏对象中激活脚本
如何激活其他脚本中的部分代码? 注意:我不需要激活所有脚本。例如,一束子弹围绕着一个玩家飞来飞去。当一个人与玩家发生碰撞时,则需要激活碰撞对象的部分脚本(与玩家发生碰撞) PlayerControl.csC# 在碰撞的游戏对象中激活脚本,c#,unity3d,C#,Unity3d,如何激活其他脚本中的部分代码? 注意:我不需要激活所有脚本。例如,一束子弹围绕着一个玩家飞来飞去。当一个人与玩家发生碰撞时,则需要激活碰撞对象的部分脚本(与玩家发生碰撞) PlayerControl.cs void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "Bullet1") { lasthit = 1f; //
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Bullet1")
{
lasthit = 1f;
// I need to activate Destroyy() in Bullet1 script
}
}
公告1.cs
public void Destroyy()
{
Debug.Log("Destroyed!"); // I need to activate this part of the code
} // ONLY in Bullet1.cs
public bool booldestroy;
private void Update()
{
if (booldestroy)
{
Destroyy();
}
}
下面的代码显示了如何执行此操作:
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Bullet1")
{
lasthit = 1f;
// I need to activate Destroyy() in Bullet1 script
// HERE'S HOW:
if(col.gameObject.GetComponent<Bullet1>() != null)
col.gameObject.GetComponent<Bullet1>().Destroyy();
}
}
无效OnCollisionInter2D(Collision2D列)
{
如果(col.gameObject.tag==“Bullet1”)
{
lasthit=1f;
//我需要在Bullet1脚本中激活Destroy()
//以下是方法:
if(col.gameObject.GetComponent()!=null)
col.gameObject.GetComponent().Destroy();
}
}
只需获取组件就更容易了
void OnCollisionEnter2D(Collision2D col)
{
Bullet1 b = col.gameObject.GetComponent<Bullet1>();
if (b == null)
{
return;
}
lasthit = 1f;
b.Destroyy();
}
无效OnCollisionInter2D(Collision2D列)
{
Bullet1 b=col.gameObject.GetComponent();
如果(b==null)
{
返回;
}
lasthit=1f;
b、 破坏();
}
在Bullet1脚本中激活布尔值
Player.cs
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Bullet1")
{
col.gameObject.GetComponent<Bullet1pt().booldestroy = true;
}
}
激活脚本的一部分是什么意思?当发生冲突时,您希望调用的是类还是方法?您的标记可能会出错。我刚刚编辑了代码,试试这个。不,如果你再添加一个
,那么它就不起作用了,所以成功的机会很低