您能否在 Unity 中某个实例化的预制件克隆在进入其触发器时被销毁?

  • 本文关键字:触发器 Unity 实例化 c# unity-game-engine
  • 更新时间 :
  • 英文 :


基本上,我有一颗子弹,当你左键点击时,它会从你的玩家身上的枪中射出。我不能专门摧毁击中某物的子弹,它会摧毁所有的子弹。 :C 我认为一个很好的解决方法是让它在某物进入触发器时自行销毁? 我不知道该怎么做,所以如果有人能帮忙,那就太棒了! 如果你想看我的代码,那么你可以问。

这是在子弹击中的东西上:

void OnTriggerEnter()
{
enemyHealth -= 2f;
ishit = true;
}
void OnTriggerExit()
{
ishit = false;
}

它将静态变量设置为 true 和 false。 这是在子弹上:

void Update()
{
transform.Translate(Vector2.right * mspeed * Time.deltaTime);
bool hit = Enemy.ishit;
if (hit == true)
{
Object.Destroy(gameObject);
}
}

它使用静态布尔值来摧毁自己

谢谢!

最好的办法是在项目符号实例上调用Object.Destroy。 这不会摧毁任何其他子弹。

如果要销毁与当前脚本关联的对象,还可以在this.gameObject上调用Object.Destroy

您可以OnCollisionEnter执行此调用。

编辑:你的问题不是Object.Destroy正在摧毁所有的子弹,而是当一颗子弹击中时,每颗子弹都会自我摧毁。 您可能想尝试:

void OnTriggerEnter(Collider bullet)
{
enemyHealth -= 2f;
Object.Destroy(bullet.gameObject);
}

您可以使用"可损坏"物体上的脚本跟踪碰撞并摧毁与其碰撞的子弹,或者让子弹预制件上的脚本在碰撞时自行销毁它。

放弃你的游戏 另一种方法是根本不实例化子弹,如果你正在射击的子弹移动速度与子弹真正移动的速度一样快,玩家无论如何都不会看到它们,你可以使用光线投射来查看玩家射击时是否击中了什么东西,发出声音,枪口闪光, 将一个空的卡德里奇扔在地上,万一玩家击中任何东西,实例化一些粒子或子弹在另一端会产生的任何效果并完成它......

最新更新