Unity 3D Контролер анімації

2075 / Unity / 3D / Контролер анімації

 

  • mixamo.com – FBX-персонажі (потрібна реєстрація)
  • Adobe Fuse – програма для створення персонажів

 

AnimController

 

Animator anim; // static
public float speed = 10.0f;
public float rotationSpeed = 100.0f;

void Start(){
  anim = GetComponent<Animator>();
}

void Update(){
  float translation = Input.GetAxis("Vertical") * speed;
  float rotation = Input.GetAxis("Horizontal") * rotationSpeed; 
  translation *= Time.deltaTime;
  rotation *= Time.deltaTime; 
  transform.Translate(0f, 0f, translation); // гори потребують окремих колайдерів
  transform.Rotate(0f, rotation, 0f); 
  if (Input.GetKeyDown(KeyCode.Space))
  {
    anim.SetTrigger("isJump");
  }
  if (translation != 0f){
    anim.SetBool("isWalk", true);
  } 
  else
  {
    anim.SetBool("isWalk", false);
  }
}


Тригер


a - показати усі анімації
 
Причепити тригер до стрілки



 

* Якщо є помилка з відображенням героя, то в його текстурі змінити transparent на opaque
* Inspector -> Marerials -> Use External Materials (Legasy)
* Анімація лежить всередині персонажу, її перетягнути в персонажа на сцені

Аби анімація не зациклювалася

Анімація в Assets -> Loop Time – зняти галочку

 

Запустити функцію під час анімації

 
Якщо додати 2-гу стрілку - з'являться 3 стрілки в тому ж напрямку, і можна буде додати кілька тригерів для одного і того ж переходу
 
Зміна параметрів у коді

Animator anim = GetComponent<Animator>();
anim.Play("Anim1", 0f, 0.5f); // програвати з позиції
anim.Play("Anim1"); // різко перейти до іншої анімації
anim.CrossFade("Anim1", 0.1f); // плавно
anim.speed = 0.1f; // змінити швидкість
anim.enabled = false; // виключити