Oyun Kütüphanesi

IK ile El Pozisyonlama (Silah Tutuş)

Animasyon Bağlantıları Unity C# 2
IKileElPozisyonlamaSilahTutuş .cs
C#
// ============ UNITY EDİTÖR ADIMLAR ============
// 1. Animator bileşenine tıkla
// 2. IK Pass = TRUE yap (her layer için ayrı)
// =============================================

using UnityEngine;
[RequireComponent(typeof(Animator))]
public class HandIK : MonoBehaviour
{
    public Transform rightHandTarget;  // Sağ el hedefi (silah sapı)
    public Transform leftHandTarget;   // Sol el hedefi (silah önü)
    [Range(0,1)] public float rightWeight = 1f;
    [Range(0,1)] public float leftWeight = 1f;

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

    void OnAnimatorIK(int layerIndex)
    {
        if (rightHandTarget)
        {
            anim.SetIKPositionWeight(AvatarIKGoal.RightHand, rightWeight);
            anim.SetIKRotationWeight(AvatarIKGoal.RightHand, rightWeight);
            anim.SetIKPosition(AvatarIKGoal.RightHand, rightHandTarget.position);
            anim.SetIKRotation(AvatarIKGoal.RightHand, rightHandTarget.rotation);
        }
        if (leftHandTarget)
        {
            anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, leftWeight);
            anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, leftWeight);
            anim.SetIKPosition(AvatarIKGoal.LeftHand, leftHandTarget.position);
            anim.SetIKRotation(AvatarIKGoal.LeftHand, leftHandTarget.rotation);
        }
    }
}

Açıklama

OnAnimatorIK callback'i kullanarak karakterin elini bir hedef Transform'a (silah sapı) doğru çeken IK sistemi.

Etiketler

IK Inverse Kinematics El Silah OnAnimatorIK

Nasıl Kullanılır?

1. ÖNCE: Animator > Layers > Base Layer > IK Pass = TRUE yapın.

2. Bu scripti karaktere ekle.

3. Silahın sapında boş bir Transform oluştur → rightHandTarget'a ata.

4. Sol el için silahın ön kısmında ikinci bir Transform oluştur.

5. Weight değerleri 0-1 arası; 1=tam IK, 0=animasyon.

Unity 2022+ ve Unity 6 ile uyumludur.

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