Некоторая часть кода работает (hp1 -= damage1;
), но вторая часть не работает.Где я допустил ошибку?
Вот части двух скриптов:
Player1.cs
private Bullet1 b1;
void Start()
{
b1 = FindObjectOfType<Bullet1>();
}
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Bullet1")
{
hp1 -= damage1; // it works, my player loses hp
Destroy1(); // doesn't work
}
}
void Destroy1()
{
b1.hit1 = true; // hit for bullet1.cs
}
Bullet1.cs
public bool hit1;
void Update()
{
if (hit1)
{
hit1 = false;
Destroy(gameObject);
}
}
Если я переключу bool hit = true
в режиме реального времени в Unity, уничтожаются работы.Это означает, что Bullet1.cs
не может получить hit = true;
Если я поменяю местами hp1 -= damage1;
и Destroy1();
, мой игрок не сможет получить урон,Итак, Destroy1();
останавливает мой код и не может активировать другие строки.Также, если я изменю Destroy1();
на b1.hit1 = true;
, ничего нового не произойдет.