Oyun Kütüphanesi

Root Motion ile Gerçekçi Hareket

Animasyon Bağlantıları Unity C# 2
RootMotionileGerçekçiHareket .cs
C#
// Root Motion: Karakterin hareketi koda değil animasyona bağlıdır.
// Animasyoncu 'Walk' animasyonunu yerinde değil ilerliyormuş gibi yapabilir.

// ============ UNITY EDİTÖR ADIMLAR ============
// Animator bileşeninde:
// Apply Root Motion = TRUE yapın
// =============================================

using UnityEngine;
[RequireComponent(typeof(Animator))]
public class RootMotionController : MonoBehaviour
{
    Animator anim;
    static readonly int SpeedHash = Animator.StringToHash("Speed");
    static readonly int TurnHash = Animator.StringToHash("Turn");

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

    void Update()
    {
        float speed = Input.GetAxis("Vertical");
        float turn = Input.GetAxis("Horizontal");
        anim.SetFloat(SpeedHash, speed, 0.1f, Time.deltaTime);
        anim.SetFloat(TurnHash, turn, 0.1f, Time.deltaTime);
    }

    // Root Motion ile gelen hareketi burada override edebilirsin
    void OnAnimatorMove()
    {
        // Animasyonun hesapladığı delta pozisyonu al
        Vector3 rootDelta = anim.deltaPosition;
        // İstersen burada çarparak hızlandırabilirsin
        transform.position += rootDelta;
        transform.rotation *= anim.deltaRotation;
    }
}

Açıklama

Animator'ın Root Motion özelliğini etkinleştirerek animasyonun karakteri hareket ettirmesi ve script ile override edilmesi.

Etiketler

Root Motion Animator Hareket Fizik

Nasıl Kullanılır?

1. Animator > Apply Root Motion = TRUE yapın.

2. Bu scripti karaktere ekle.

3. Animator'da Speed ve Turn float parametreleri oluştur.

4. OnAnimatorMove() root motion'ı override eder — burada fizik veya çarpımlama yapabilirsin.

5. CharacterController varsa cc.Move() ile birleştirme gerekebilir.

Unity 2022+ ve Unity 6 ile uyumludur.

MonoBehaviour tabanlı scriptleri Assets klasörüne .cs olarak kaydedin.