Хочу сделать анимацию для игры. Возникла ошибка: NullReferenceException: Object reference not set to an instance of an object Upravlenie.set_State (CharState value) (at Assets/Upravlenie.cs:20). Вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Upravlenie : MonoBehaviour {
public float horizontalSpeed;
float speedX;
public float verticalImpulse;
Rigidbody2D rb;
bool isGrounded;
bool Running = false;
private Animator animator;
private CharState State
{
get { return (CharState)animator.GetInteger("State"); }
set { animator.SetInteger("State", (int)value); }
}
void Start () {
rb = GetComponent<Rigidbody2D>();
}
private void Flip()
{
isFacingRight = !isFacingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
public void LeftButtonDown()
{
speedX = -horizontalSpeed;
if (isGrounded) State = CharState.Run;
}
public void RightButtonDown()
{ speedX = horizontalSpeed;
if (isGrounded) State = CharState.Run;
}
public void Stop()
{
speedX = 0;
}
public void OnClickJump()
{
if (isGrounded)
rb.AddForce(new Vector2(0, verticalImpulse), ForceMode2D.Impulse);
if (!isGrounded) State = CharState.Jump;
}
void FixedUpdate()
{
transform.Translate(speedX, 0, 0);
if (isGrounded) State = CharState.Idle;
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Ground")
isGrounded = true;
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.tag == "Ground")
isGrounded = false;
}
}
public enum CharState
{
Idle,
Run,
Jump
}
Скриншот из аниматора:
Сому анимацию ТОЧНО сделал правильно
Мне нужна помощь взаимодействия анимации с кодом. Прошу помочь. P.S. Управление сделал через кнопки Button и добавил компонент event triger
У тебя не хватает как раз той самой переменной State
, на которую и будет реагировать анимация. Посмотри пример ниже.
Тут можно видеть 4 переменных (параметра): два float, bool и trigger.
Всё, что передается из скрипта — устанавливается во вкладке Parameters
(ну и наоборот, может доставаться).
А вот Conditions
(которое справа) уже реагирует на ту самую внутреннюю переменную меканима.
Также ты забыл сделать при старте animator = GetComponent<Animator>();
, чтобы инициализировать переменную. И проблема скорее всего даже именно в этом)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть файл с которым работает программаОна считывает и записывает в него данные
Почему данный код вписывает в файл числа только до 359?
Я начинал изучатьFramework MonoGame/XNA языка C#,уже понимаю устройство программы,но не могу понять зачем нужен метод Initialize()