当某些东西进入触发器时,您能否使Unity中的预制件实例化克隆被破坏?

时间:2019-12-07 13:40:10

标签: c# unity3d unityscript

基本上,我有一个子弹,当您单击鼠标左键时,它会从您的播放器上的枪上射击。我不能专门摧毁击中东西的子弹,它会摧毁所有子弹。 :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);
    }
}

它使用静态布尔自毁

谢谢!

2 个答案:

答案 0 :(得分:1)

您最好的选择是在子弹实例上致电Object.Destroy。 那不会破坏任何其他子弹。

如果要销毁与当前脚本关联的对象,还可以在for numbers in product(range(10), repeat=3): if sum(numbers) == 10: print(*numbers) 上调用Object.Destroy

您可以致电OnCollisionEnter

编辑:您的问题不是this.gameObject摧毁了所有子弹,而是当一颗子弹被击中时,每一颗子弹都会自毁。 您可能要尝试:

Object.Destroy

答案 1 :(得分:0)

您可以在“可损坏”对象上有一个脚本来跟踪碰撞并摧毁与之碰撞的子弹,或者在子弹预制件上使用脚本在发生碰撞时自行销毁它。

在游戏上使用替代方法是根本不实例化子弹,如果您射击的子弹的移动速度与子弹真正移动的速度一样快,则玩家无论如何都不会看到它们,您可以使用raycast来查看您是否当玩家射击时击中某物,发出声音,枪口闪烁,将空的弹药掉在地上,并且万一玩家击中任何东西,请实例化一些粒子或子弹在另一端可能产生的任何影响并加以解决...