summaryrefslogtreecommitdiff
path: root/Slither.cs
blob: bd176f461f71047d4d02d7d9f551240c5b7b4c2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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<GenericForceMovement>();
		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);
		}
	}
}