using UnityEngine; public class SimpleCharacterAnim : MonoBehaviour { [Header("Bagian Tubuh")] public RectTransform kepala; public RectTransform badan; public RectTransform tanganMelambai; [Header("Setingan Gerak Bersama (Napas)")] public float kecepatanNapas = 1.8f; public float tinggiNapas = 7f; [Header("Setingan Geleng Kepala (Lincah)")] public float kecepatanGeleng = 4.5f; // Dibuat lebih cepat sesuai permintaan public float lebarGeleng = 6f; [Header("Setingan Lambaian Tangan (Medium-Slow)")] public float kecepatanLambai = 3.2f; // Kecepatan menengah yang smooth public float lebarLambaian = 14f; private Vector3 posAwalKepala; private Vector3 posAwalBadan; private Vector3 posAwalTangan; private Quaternion rotAwalTangan; private Quaternion rotAwalKepala; void Start() { // Catat semua posisi dan rotasi awal if (kepala) { posAwalKepala = kepala.anchoredPosition; rotAwalKepala = kepala.localRotation; } if (badan) posAwalBadan = badan.anchoredPosition; if (tanganMelambai) { posAwalTangan = tanganMelambai.anchoredPosition; rotAwalTangan = tanganMelambai.localRotation; } } void Update() { float waktu = Time.time; // 1. GERAK NAIK TURUN (SINKRON: Badan, Kepala, Tangan) float gerakBersama = Mathf.Sin(waktu * kecepatanNapas) * tinggiNapas; if (badan) badan.anchoredPosition = posAwalBadan + new Vector3(0, gerakBersama, 0); if (kepala) kepala.anchoredPosition = posAwalKepala + new Vector3(0, gerakBersama, 0); if (tanganMelambai) tanganMelambai.anchoredPosition = posAwalTangan + new Vector3(0, gerakBersama, 0); // 2. GELENG KEPALA (Dibuat lebih aktif/lincah) if (kepala) { float geleng = Mathf.Sin(waktu * kecepatanGeleng) * lebarGeleng; kepala.localRotation = rotAwalKepala * Quaternion.Euler(0, 0, geleng); } // 3. LAMBAIAN TANGAN (Smooth & Medium Speed) if (tanganMelambai) { float putaran = Mathf.Sin(waktu * kecepatanLambai) * lebarLambaian; tanganMelambai.localRotation = rotAwalTangan * Quaternion.Euler(0, 0, putaran); } } }