MIF_E31230838/Assets/Scripts/AR/RotateOrbit.cs

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