Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当某个东西进入它的触发器时,你能使Unity中某个预置的实例化克隆被破坏吗?_C#_Unity3d - Fatal编程技术网

C# 当某个东西进入它的触发器时,你能使Unity中某个预置的实例化克隆被破坏吗?

C# 当某个东西进入它的触发器时,你能使Unity中某个预置的实例化克隆被破坏吗?,c#,unity3d,C#,Unity3d,基本上,我有一颗子弹,当你左键点击时,它会被枪射中。我不能特别摧毁击中某物的子弹,它摧毁了所有的子弹C 我想一个很好的解决办法是,当有东西进入它的触发器时,它会自我毁灭吗? 我不知道该怎么做,所以如果有人能帮忙,那就太棒了! 如果你想看我的代码,你可以直接问 这是关于子弹击中的东西: void OnTriggerEnter() { enemyHealth -= 2f; ishit = true; } void OnTriggerExit() { ishit = fals

基本上,我有一颗子弹,当你左键点击时,它会被枪射中。我不能特别摧毁击中某物的子弹,它摧毁了所有的子弹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);
    }
}
它利用静态布尔来摧毁自己

谢谢

你最好的选择是调用你的bullet实例。 这不会摧毁任何其他子弹

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

你可以打这个电话

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

void OnTriggerEnter(Collider bullet)
{
    enemyHealth -= 2f;
    Object.Destroy(bullet.gameObject);
}
您可以在“可损坏”对象上创建一个脚本,跟踪碰撞并销毁与其碰撞的子弹,或者让子弹预置上的脚本在碰撞时自行销毁子弹


在你的游戏中,另一种方法是根本不实例化子弹,如果你发射的子弹移动速度与子弹实际移动速度一样快,玩家无论如何也不会看到它们,你可以使用光线投射来查看玩家射击时你是否击中了什么东西,发出声音,枪口闪光,将一辆空车扔在地上,如果玩家击中任何东西,实例化一些粒子或子弹会对另一端产生的任何影响,并对其进行处理…

通常,在stackoverflow上,由您提供。我更新了我的答案,以反映您发布的代码。如果这能解决你的问题,那是C#还是UnityScript?这是关于,不是。我还是不能让它工作。一旦子弹击中了你无法射击的东西。而且,它仍然会摧毁从那颗子弹复制过来的每一颗子弹。你有机会看一下指南吗?如果你不提供其中一个,我们可能无法比上面的指针做得更好。这是敌人的代码(子弹击中的东西),我不能发布它,现在有问题了!如何做到这一点?看起来你是unity的第一个项目之一,你有一些阅读材料要做,我也从网上搜索视频中学到了很多,接下来的两个链接是关于光线投射的,但是你应该学习如何将脚本附加到预制件上并实例化/销毁它们: