Sinuousity

RadialLineRenderer.cs

Jun 22nd, 2015
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.96 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class RadialLineRenderer : MonoBehaviour
  5. {
  6.     LineRenderer lr;
  7.     [Range(-1f,1f)]public float wave = 0.5f,spin = 0.5f;
  8.     public float radius = 3f;
  9.     public int verts = 500;
  10.     [Range(2,8)]public int armCount = 5;
  11.     [Range(0.5f,16f)]public float armPower = 0.5f;
  12.  
  13.     void Start ()
  14.     {
  15.         if (lr == null)
  16.             lr = GetComponent(typeof(LineRenderer)) as LineRenderer;
  17.         if (lr == null)
  18.             lr = gameObject.AddComponent(typeof(LineRenderer)) as LineRenderer;
  19.     }
  20.  
  21.     void Update ()
  22.     {
  23.         if (lr == null)
  24.             return;
  25.  
  26.         lr.SetVertexCount(verts);
  27.         for ( int i = 0 ; i < verts ; i++)
  28.         {
  29.             Vector3 p = transform.position;
  30.             float a = ((float)i / ((float)verts-1f)) * 2f * Mathf.PI;
  31.             float mod = Mathf.Pow(0.5f+0.5f*Mathf.Sin( a * armCount + Time.time * spin * 2f),armPower) * radius * wave;
  32.             float r = mod + radius;
  33.             p.x += r * Mathf.Cos ( a );
  34.             p.y += r * Mathf.Sin ( a );
  35.             lr.SetPosition(i , p);
  36.         }
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment