using UnityEngine; public class WindController : MonoBehaviour { [Header("settings větru")] [Tooltip("Maximální síla větru (kladná i záporná)")] public float maxWindTorque = 8f; [Tooltip("Jak rychle se větr mění směrem/sílou")] public float windChangeSpeed = 0.6f; [Tooltip("Jak často se objeví silnější vichřice (v sekundách)")] public float gustInterval = 4f; [Tooltip("Multiplier pro sílu vichřice")] public float gustMultiplier = 2.0f; public float CurrentWindTorque { get; private set; } private float targetTorque; private float gustTimer; void Start() { PickNewTargetTorque(); gustTimer = gustInterval; } void Update() { // Smoothly move wind toward target torque CurrentWindTorque = Mathf.Lerp(CurrentWindTorque, targetTorque, Time.deltaTime * windChangeSpeed); // Occasional gusts gustTimer -= Time.deltaTime; if (gustTimer <= 0f) { // Apply a short gust by shifting target torque more aggressively float gust = Random.Range(-maxWindTorque, maxWindTorque) * gustMultiplier; targetTorque = Mathf.Clamp(gust, -maxWindTorque * gustMultiplier, maxWindTorque * gustMultiplier); gustTimer = gustInterval; Invoke(nameof(PickNewTargetTorque), 0.8f); // gust lasts ~0.8s } } private void PickNewTargetTorque() { targetTorque = Random.Range(-maxWindTorque, maxWindTorque); } }