При уничтожений одного обьекта уничтожаются все, как исправить?



@Ad1yar

когда я убиваю ОДНОГО зомби убиваются все пачиму?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BulletDestroy : MonoBehaviour
{
    void Update()
    {
        Destroy(gameObject, 10f);
    }

    private void OnCollisionEnter(Collision other)
    {
        if (other.gameObject.tag == "Zombie")
        {
            Zombie.zHP -= 10;
            Destroy(gameObject);
        }

        if (other.gameObject.tag == "Player")
        {
            Destroy(gameObject);
        }
        Destroy(gameObject);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class Zombie : MonoBehaviour
{
    public NavMeshAgent navMesh;
    public Animator anim;
    public Transform player;
    public static int zHP = 200;

    void Start()
    {

    }

    void Update()
    {
        navMesh.SetDestination(player.transform.position);

        if (zHP == 0)
        {
            Destroy(this.gameObject);
        }
    }
}


Решения вопроса 0


Ответы на вопрос 2



@K0TlK

Потому что хп зомби у тебя статик поле. Всё, что статик — принадлежит классу, всё что не статик принадлежит конкретному объекту, класс — фабрика объектов, существует в единичном экземпляре => твое хп одно для всех => если хп == 0, то оно 0 у всех зомби. Убирай статику, делай TryGetComponent(out Zombie zombie) в OnCollisionEnter в Bullet и отнимай хп у конкретного зомби.



@freeExec

Кто вам сказал, что вы уничтожаете одного зомби, а не код работает для всех.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *