Я учусь, создавая простую игру, что-то вроде космических захватчиков. И проблема, которая у меня есть, иногда выполняется скрипт, а иногда нет. Позвольте мне показать вам код:
Сначала мой игрок стреляет из пистолета, он создает префаб пули.
выстрелить из пистолета:
void Update() {
if (Input.GetMouseButtonDown(0)) {
Instantiate(rocket, strzal.position, strzal.rotation);
}
}
Скрипт пули:
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.gameObject.tag== "Przeszkoda"){
collision.GetComponent().TakeDamage(damage);
Destroy(gameObject);
}
}
Тогда, если пуля попадает в цель, она вызывает функцию урона:
public void TakeDamage(float amount) {
health -= amount;
if (health <= 0) {
ABC.GetComponent<DEF>().NowyPoziomTrudnosci();
gameObject.SetActive(false);
И пока все работает просто отлично. Но проблема начинается с функции NowyPoziomTrudnosci
. Иногда он бежит, тогда 3 врага убиваются, и ничего не происходит, и 2 следующих врага запускают код, и снова x врагов умирают, а код не выполняется.
public void NowyPoziomTrudnosci() {
kills = kills + 1;
Debug.Log("wykonane"+ kills);
}
Есть идеи, где я допустил ошибку? Я бы понял, если бы NowyPoziomTrudnosci
вообще не побежал. Но он работает, просто не каждый раз.