Files
ToriaAssets/Imports/Beautify addon/Demo/Scripts/RockBob.cs
T

45 lines
1.3 KiB
C#
Raw Normal View History

2026-08-13 16:49:22 +02:00
using UnityEngine;
namespace EdgeFusion {
public class RockBob : MonoBehaviour {
[Tooltip("Movement amplitude in meters")] public float amplitude = 0.2f;
[Tooltip("Oscillation period in seconds")] public float period = 2.5f;
[Tooltip("Ease-in/out factor (0=sinusoidal)")] [Range(0f,1f)] public float smooth = 0.25f;
Vector3 initialPosition;
float angularSpeed;
float phase;
void Awake() {
initialPosition = transform.position;
angularSpeed = period > 0f ? (Mathf.PI * 2f) / period : 0f;
phase = Random.value * Mathf.PI * 2f;
}
void OnEnable() {
angularSpeed = period > 0f ? (Mathf.PI * 2f) / period : 0f;
}
void Update() {
if (angularSpeed <= 0f || amplitude == 0f) return;
phase += angularSpeed * Time.deltaTime;
if (phase > Mathf.PI * 2f) phase -= Mathf.PI * 2f;
float s = Mathf.Sin(phase);
if (smooth > 0f) {
float t = (s + 1f) * 0.5f; // [0..1]
float eased = t * t * (3f - 2f * t);
s = Mathf.LerpUnclamped(-1f, 1f, eased);
}
Vector3 p = initialPosition;
p.y += s * amplitude;
transform.position = p;
}
}
}