57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
public class RotateOrbit : MonoBehaviour
|
|
{
|
|
[Header("Revolusi (kaya tata surya)")]
|
|
public Vector3 revolutionAxis = Vector3.up;
|
|
public float revolutionSpeed = 30f;
|
|
|
|
[Header("Kemiringan / precession")]
|
|
public Vector3 tiltAxis = Vector3.right;
|
|
public float tiltSpeed = 10f;
|
|
|
|
// --- TAMBAHAN BARU ---
|
|
private Quaternion startRotation; // Menyimpan posisi asli FBX
|
|
private bool isAnimating = true; // Status gerak atau diam
|
|
|
|
void Start()
|
|
{
|
|
// PENTING: Simpan rotasi lokal awal saat aplikasi mulai
|
|
// LocalRotation dipakai karena dia anak dari Inti Atom
|
|
startRotation = transform.localRotation;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
// Kalau dimatikan (Stop), jangan jalankan kode putar-putar
|
|
if (!isAnimating) return;
|
|
|
|
// --- KODE LAMA KAMU ---
|
|
// Muter mengelilingi nukleus
|
|
transform.Rotate(revolutionAxis * revolutionSpeed * Time.deltaTime, Space.World);
|
|
|
|
// Muter sumbu orbit (atas-bawah / miring)
|
|
transform.Rotate(tiltAxis * tiltSpeed * Time.deltaTime, Space.Self);
|
|
}
|
|
|
|
// Fungsi ini yang akan dipanggil oleh Manager/Button
|
|
public void SetAnimationState(bool isActive)
|
|
{
|
|
isAnimating = isActive;
|
|
|
|
if (!isAnimating)
|
|
{
|
|
// RESET: Kembalikan ke posisi awal (Snap langsung)
|
|
transform.localRotation = startRotation;
|
|
|
|
// Opsional: Kalau mau resetnya halus (animasi), butuh Coroutine.
|
|
// Tapi untuk AR, snap langsung lebih aman biar posisinya akurat sesuai FBX.
|
|
}
|
|
}
|
|
|
|
// Fungsi Toggle (Opsional, buat shortcut)
|
|
public void ToggleAnimation()
|
|
{
|
|
SetAnimationState(!isAnimating);
|
|
}
|
|
} |