using UnityEngine; public class BoatWaveMotion : MonoBehaviour { [Header("Wave Settings")] public float amplitude = 0.5f; // Dalgaların yüksekliği public float frequency = 1.0f; // Dalgaların hızı [Header("Tilt Settings")] public float tiltAngleSide = 5f; // Sağa sola eğilme açısı public float tiltSpeedSide = 1.0f; // Sağa sola eğilme hızı public float tiltAngleForward = 5f; // İleri geri eğilme açısı public float tiltSpeedForward = 1.0f; // İleri geri eğilme hızı [Header("Random Offset Settings")] public float randomOffsetRange = Mathf.PI * 2f; // Rastgele ofset aralığı private Vector3 initialPosition; private Quaternion initialRotation; private float randomWaveOffset; private float randomTiltSideOffset; private float randomTiltForwardOffset; void Start() { // Başlangıç pozisyonu ve rotasyonu kaydedilir initialPosition = transform.position; initialRotation = transform.rotation; // Her bir bot için rastgele ofset oluşturulur randomWaveOffset = Random.Range(0f, randomOffsetRange); randomTiltSideOffset = Random.Range(0f, randomOffsetRange); randomTiltForwardOffset = Random.Range(0f, randomOffsetRange); } void Update() { // Yükseklik hareketi (sinüs dalgası) - rastgele offset ile float waveOffset = Mathf.Sin(Time.time * frequency + randomWaveOffset) * amplitude; transform.position = new Vector3(initialPosition.x, initialPosition.y + waveOffset, initialPosition.z); // Eğilme hareketi (yanal ve ileri-geri sallanma) - rastgele offset ile float tiltSideOffset = Mathf.Sin(Time.time * tiltSpeedSide + randomTiltSideOffset) * tiltAngleSide; // Sağa sola eğilme float tiltForwardOffset = Mathf.Cos(Time.time * tiltSpeedForward + randomTiltForwardOffset) * tiltAngleForward; // İleri geri eğilme transform.rotation = initialRotation * Quaternion.Euler(tiltForwardOffset, 0, tiltSideOffset); } }