75 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|
|
} |