Я делаю счетчик здоровья со спрайт-изображениями для игры с разбиением блоков. Проблема в том, что когда мяч попадает в коллайдер, он автоматически отправляется на сцену Lose, не теряя ни одной жизни. Предполагается, что пользователь теряет жизнь каждый раз, когда мяч касается коллайдера, и когда у него кончается жизнь, пользователь выходит на сцену потери, но ни одна из них не работает.
Я не знаю, собираюсь ли я что-то изменить или добавить в один из моих сценариев. Может кто-то помочь мне, пожалуйста? Спасибо.
На картинке ниже вы можете увидеть инспектора бала
На картинке ниже вы можете увидеть инспектора Сердца 1,2,3 и 4
Живой скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Lives : MonoBehaviour
{
public int health;
public int NumberOfHearts;
public LoadScenes LoadLevel;
public LevelManager lvlManager;
public Image[] hearts; //Creating an arry.
public Sprite FullHeart;
public Sprite EmptyHeart;
void Update()
{
if(health > NumberOfHearts) //This is to make sure that the ball doesn't go over 4 lives
{
health = NumberOfHearts;
}
for (int i = 0; i < hearts.Length; i++) //Variable i is less than the length of hearts
{
if (i < health) //If i is smaller than the health
{
hearts[i].sprite = FullHeart; //The sprite of FullHeart is displayed
}
else
{
hearts[i].sprite = EmptyHeart; //The sprite of EmptyHeart is displayed
}
if (i < NumberOfHearts)//For loop to check if i is smaller than the NumberOfHearts
{
hearts[i].enabled = true; //If i IS smaller than the NumberOfHearts than hearts of the index i is visiable
}
else
{
hearts[i].enabled = false; //If it ISN'T smaller than the NumberOfHearts than hearts of the index i is invisiable
}
if (NumberOfHearts < 0)
{
lvlManager.LoadLevel("Lose");
}
}
}
}
Скрипт LoadScene:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadScenes : MonoBehaviour {
public LevelManager lvlManager;
//If the ball hits one of the walls the colliders will be triggered
void OnTriggerEnter2D()
{
print("The wall is triggered by the ball");
lvlManager.LoadLevel("Lose");
Bricks.brickCount = 0;
}
void OnCollisionEnter2D()
{
Debug.Log("The ball has collided with the wall");
}
}
Сценарий LevelManager:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LevelManager : MonoBehaviour {
public void LoadLevel(string name)
{
print("Level loading requested for" + name);
SceneManager.LoadScene(name);
}
}