MIF_E31230101/Assets/Script Manager/SimpleCharacterAnim.cs

75 lines
2.4 KiB
C#

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);
}
}
}