@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);
        }
    }
}
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 2
K0TlK
@K0TlK
Буллю людей.
Потому что хп зомби у тебя статик поле. Всё, что статик - принадлежит классу, всё что не статик принадлежит конкретному объекту, класс - фабрика объектов, существует в единичном экземпляре => твое хп одно для всех => если хп == 0, то оно 0 у всех зомби. Убирай статику, делай TryGetComponent(out Zombie zombie) в OnCollisionEnter в Bullet и отнимай хп у конкретного зомби.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Кто вам сказал, что вы уничтожаете одного зомби, а не код работает для всех.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы