using UnityEngine; public class Slither : MonoBehaviour { public float offset; public float timeMultiplier = 1f; public AnimationCurve slitherCurve; public float forceMultiplier; private GenericForceMovement movement; private void Start() { movement = GetComponent(); timeMultiplier *= Random.Range(0.9f, 1.1f); } private void FixedUpdate() { Vector3 normalized = Vector3.Cross(movement.movementDirection, Vector3.up).normalized; for (int i = 0; i < movement.rigs.Length; i++) { movement.rigs[i].rig.AddForce(normalized * forceMultiplier * slitherCurve.Evaluate((Time.time * timeMultiplier + offset * (float)i) % 1f) / ((float)i * 0.2f + 1f), ForceMode.Acceleration); } } }