diff options
Diffstat (limited to 'GameCode/Grass.cs')
-rw-r--r-- | GameCode/Grass.cs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/GameCode/Grass.cs b/GameCode/Grass.cs new file mode 100644 index 0000000..0557f48 --- /dev/null +++ b/GameCode/Grass.cs @@ -0,0 +1,63 @@ +using UnityEngine; + +public class Grass : MonoBehaviour +{ + public float target; + + private float velocity; + + private float currentRot; + + public float minSpring; + + public float maxSpring; + + public float minDrag; + + public float maxDrag; + + private float spring; + + private float drag; + + public float minPlayerEffect; + + public float maxPlayerEffect; + + private float playerEffect; + + public Sprite[] sprites; + + private void Start() + { + if (Random.value > 0.5f) + { + Object.Destroy(base.gameObject); + return; + } + GetComponentInChildren<SpriteRenderer>().sprite = sprites[Random.Range(0, sprites.Length)]; + spring = Random.Range(minSpring, maxSpring); + drag = Random.Range(minDrag, maxDrag); + playerEffect = Random.Range(minPlayerEffect, maxPlayerEffect); + currentRot = base.transform.localEulerAngles.z; + } + + private void Update() + { + velocity = Mathf.Lerp(velocity, (target - currentRot) * spring, CappedDeltaTime.time * drag); + currentRot += velocity * CappedDeltaTime.time; + base.transform.localEulerAngles = new Vector3(0f, 0f, currentRot); + if (PlayerManager.instance.players != null && PlayerManager.instance.players.Count > 0 && Vector2.Distance(PlayerManager.instance.players[0].data.playerVel.position, base.transform.position) < 1.5f) + { + AddForce(PlayerManager.instance.players[0].data.playerVel.velocity.x * playerEffect * CappedDeltaTime.time * 60f); + } + float num = 0.5f; + float num2 = 0.05f; + AddForce((Mathf.PerlinNoise(base.transform.position.x * num2 + Time.time * num, base.transform.position.y * num2 + Time.time * num) - 0.5f) * 30f * playerEffect * CappedDeltaTime.time * 60f); + } + + public void AddForce(float f) + { + velocity += f; + } +} |