Система здравоохранения с использованием сердец в Unity - PullRequest
0 голосов
/ 03 мая 2020

Я получил этот скрипт и попытался добавить способ потерять сердца игрока. Я не уверен, что я что-то упустил. Я попробовал сценарий, но ничего не произошло. Это также для 2d платформера, и главное, я просто хочу, чтобы игрок потерял сердце, если он упадет. Пожалуйста, помогите.

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
 // Attach to an empty GameObject
 // To initialize script on a new scene, add updateHealthUI() in the Awake 
 or Start Method of your player
 // Then just use this script in your OnCollision method using 
 thisScript.Health --
 public class PlayerHealth : MonoBehaviour // MonoBehaviour
 {

  // Insert your 3 hearts images in the Unity Editor
public Image h1, h2, h3;
// Create an array because we're lazy
public Image[] images;
// Gameover
[SerializeField] private Image gameOver;
// A private variable to keep between scenes
int health = 3;
// Now we define Get / Set methods for health
// In case we Set health to a different value we want to update UI
public int Health { get { return health; } set { if (health != Health) 
health = Health; updateHealthUI(); } }

public void Awake()
{
    DontDestroyOnLoad(this.gameObject);
    images = new Image[] { h1, h2, h3 };
    if (transform.position.y == -80)
    {
        health--;
    }
}
private void updateHealthUI()
{
    for (int i = 0; i < images.Length; i++)
    {
        // Hide all images superior to the newHealth
        if (i >= health)
            images[i].enabled = false;
        else
            images[i].enabled = true;
    }
    // Game Over
    if (health == 0)
    {
        SceneManager.LoadScene(2);
    }
}
void Update()
{
    if (health == 3)
    {
        images = new Image[] { h1, h2, h3 };
    }
    else if (health == 2)
    {
        images = new Image[] { h1, h2 };
    }
    else if (health == 1)
    {
        images = new Image[] { h1 };
    }


    }
  }

1 Ответ

1 голос
/ 03 мая 2020

Вы пытаетесь уменьшить здоровье в Пробудитесь . Проблема в том, что Awake вызывается только один раз за время существования экземпляра скрипта. Поэтому попробуйте поместить это выражение if в метод Update вместо Awake:

if (transform.position.y == -80)
{
    health--;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...