C# Unity Game Dev - действительно не могу понять проблему с этим сценарием состояния анимации ⇐ C#
-
Гость
C# Unity Game Dev - действительно не могу понять проблему с этим сценарием состояния анимации
Я не знаю, упускаю ли я что-то действительно очевидное, поскольку я совершенно новичок в программировании в целом, но я написал сценарий для здоровья моего персонажа и хотел включить обновление состояния анимации, чтобы я мог играть анимации ранения и смерти, но, похоже, есть постоянная ошибка, которую я не могу понять. (Кроме того, я знаю, что включил в свой код «использование Unity.Engine.UI» и не использовал ничего из этой библиотеки, но это потому, что я еще не дошел до механики экранных сердечек, пытаясь решить эту проблему раньше идем дальше.)
с использованием System.Collections; использование System.Collections.Generic; использование System.Xml.Schema; использование UnityEditor; использование UnityEngine; использование UnityEngine.SceneManagement; использование UnityEngine.U2D.Animation; использование UnityEngine.UI; публичный класс PlayerLife: MonoBehaviour { частный Rigidbody2D РБ; личный Аниматор анимаций; частный спрайт SpriteRenderer; [SerializeField] частный AudioSource deathSoundEffect; [SerializeField] частный AudioSource больноSoundEffect; public int playerHealth = 0; общественный ИНТ maxHealth = 6; частный bool gotHurt = ложь; частное перечисление DamageState { больно, мертв } частная пустота Старт() { rb = GetComponent(); аним = GetComponent(); спрайт = GetComponent(); playerHealth = максимальное здоровье; } частная пустота OnCollisionEnter2D (столкновение Collision2D) { if (collision.gameObject.CompareTag("Враждебный")) { если (playerHealth == 1) { Здоровье игрока = Здоровье игрока - 1; Debug.Log("Игрок умер"); Умереть(); } Здоровье игрока = Здоровье игрока - 1; Debug.Log("Осталось здоровья: " + playerHealth); Повредить(); получилHurt = ложь; } } частная пустота Боль() { получилHurt = правда; больноSoundEffect.Play(); anim.SetTrigger("Больно"); } частная пустота Die() { DeathSoundEffect.Play(); rb.bodyType = RigidbodyType2D.Static; anim.SetTrigger("Смерть"); } частная пустота UpdateDamageState() { Состояние DamageState если (gotHurt == правда) { если (playerHealth >= 2) { DamageState = DamageState.hurt; } иначе, если (playerHealth == 1) { DamageState = DamageState.dead; } } anim.SetInteger("DamageState", (int)damageState); } частная пустота RestartLevel() { SceneManager.LoadScene(SceneManager.GetActiveScene().name); } } Я пробовал несколько разных методов, которые видел в Интернете, но даже когда я адаптирую их к своему коду или иногда даже явно делаю это именно так, как они это сделали, просто чтобы получить что-то, что работает, я получаю ошибку, несмотря ни на что.
Я не знаю, упускаю ли я что-то действительно очевидное, поскольку я совершенно новичок в программировании в целом, но я написал сценарий для здоровья моего персонажа и хотел включить обновление состояния анимации, чтобы я мог играть анимации ранения и смерти, но, похоже, есть постоянная ошибка, которую я не могу понять. (Кроме того, я знаю, что включил в свой код «использование Unity.Engine.UI» и не использовал ничего из этой библиотеки, но это потому, что я еще не дошел до механики экранных сердечек, пытаясь решить эту проблему раньше идем дальше.)
с использованием System.Collections; использование System.Collections.Generic; использование System.Xml.Schema; использование UnityEditor; использование UnityEngine; использование UnityEngine.SceneManagement; использование UnityEngine.U2D.Animation; использование UnityEngine.UI; публичный класс PlayerLife: MonoBehaviour { частный Rigidbody2D РБ; личный Аниматор анимаций; частный спрайт SpriteRenderer; [SerializeField] частный AudioSource deathSoundEffect; [SerializeField] частный AudioSource больноSoundEffect; public int playerHealth = 0; общественный ИНТ maxHealth = 6; частный bool gotHurt = ложь; частное перечисление DamageState { больно, мертв } частная пустота Старт() { rb = GetComponent(); аним = GetComponent(); спрайт = GetComponent(); playerHealth = максимальное здоровье; } частная пустота OnCollisionEnter2D (столкновение Collision2D) { if (collision.gameObject.CompareTag("Враждебный")) { если (playerHealth == 1) { Здоровье игрока = Здоровье игрока - 1; Debug.Log("Игрок умер"); Умереть(); } Здоровье игрока = Здоровье игрока - 1; Debug.Log("Осталось здоровья: " + playerHealth); Повредить(); получилHurt = ложь; } } частная пустота Боль() { получилHurt = правда; больноSoundEffect.Play(); anim.SetTrigger("Больно"); } частная пустота Die() { DeathSoundEffect.Play(); rb.bodyType = RigidbodyType2D.Static; anim.SetTrigger("Смерть"); } частная пустота UpdateDamageState() { Состояние DamageState если (gotHurt == правда) { если (playerHealth >= 2) { DamageState = DamageState.hurt; } иначе, если (playerHealth == 1) { DamageState = DamageState.dead; } } anim.SetInteger("DamageState", (int)damageState); } частная пустота RestartLevel() { SceneManager.LoadScene(SceneManager.GetActiveScene().name); } } Я пробовал несколько разных методов, которые видел в Интернете, но даже когда я адаптирую их к своему коду или иногда даже явно делаю это именно так, как они это сделали, просто чтобы получить что-то, что работает, я получаю ошибку, несмотря ни на что.
Мобильная версия