Unity ve Mixamo Karakter Animasyonu


Mixamo sitesinden istenen karakter ve animasyonları seçilerek indirilir, Assets içine kopyalanır.

İlk kez karakter indirilmesi, format “FBX for Unity (*.fbx)” seçilmelidir.

Walk, run, jump ve idle (boşta) animasyonlarının indirilmesi, format “FBX for Unity (*.fbx)” seçilmelidir.

Proje içine dosyaların kopyalanması

Boş sahne içine 1 plane atılır ve Assets içindeki karakter yerin üstüne sürüklenir. T pozunda kalmış ve materyalleri gözükmüyor.

Assets klasöründeki 5 yeni nesne seçilerek Rig kısmında Humanoid olarak seçilir, Apply tıklanır.

Karakter tıklanarak Materials sekmesindeki “Extract Textures…” denir ve gelen penceredeki bir adet hata “Fix now” ile tamir edilir.

Idle, run, walk animasyonlarının özelliklerinden “Loop Time” özellikleri seçilerek “Apply” denir.

Karakterin olduğu klasöre “Animator Controller” eklenir ve bu nesne sahnedeki karakterin “Animator” özelliğine bağlanır. 

Karakterin Controller ve “Apply Root Motion” özelliklerinin düzenlenmesi

Yeni kontrolcüye çift tıklanarak boş tasarım ekranı açılır.

4 animasyon pencereye atılır ve isimleri düzenlenir. 

Oyun test edildiğinde artık idle animasyonu görülebilir.

Any State ve Exit arasındaki gri animasyonlar “Make Transition” diyerek birleştirilir.

1 adet Trigger eklenir; jump adları verilir. 2 Bool eklenir; run ve walk adları verilir.

3 bağlantı için durum bilgileri seçilir. Bool türler için ismi ve değeri seçilir.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class karakterAnim : MonoBehaviour
{
    Animator animator;
   
    void Start()
    {
        animator = GetComponent<Animator>();    
    }
       
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetTrigger("jump");
            animator.SetBool("run", false);
            animator.SetBool("walk", false);
        }
        else if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.W))
        {
            animator.SetBool("run", true);
            animator.SetBool("walk", false);
        }
        else if (Input.GetKeyDown(KeyCode.W))
        {
            animator.SetBool("run", false);
            animator.SetBool("walk", true);
        }        
        else
        {
            animator.SetBool("run", false);
            animator.SetBool("walk", false);
        }
    }
}

Yorum bırakın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.