Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Sticker : MonoBehaviour {
  6.  
  7. public Transform stickOne;
  8. public Transform stickTwo;
  9.  
  10. new public LineRenderer renderer;
  11.  
  12. public float MovementSpeed;
  13.  
  14. public float Frequency = 1f;
  15. public float Amplitude = 0.2f;
  16.  
  17. public float SineLerpPower = 1.65f;
  18. public float SineSpeed = 6f;
  19.  
  20. void Start() {
  21. renderer = GetComponent<LineRenderer>();
  22.  
  23. renderer.numPositions = 100;
  24. }
  25.  
  26. float mapRange( float value, float low1, float high1, float low2, float high2 ) {
  27. return low2 + ( high2 - low2 ) * ( value - low1 ) / ( high1 - low1 );
  28. }
  29.  
  30. void Update() {
  31. var h1 = Input.GetAxis( "Horizontal" );
  32. var h2 = Input.GetAxis( "Horizontal2" );
  33.  
  34. var v1 = Input.GetAxis( "Vertical" );
  35. var v2 = Input.GetAxis( "Vertical2" );
  36.  
  37.  
  38. stickOne.transform.position += new Vector3( h1, v1 ) * MovementSpeed * Time.deltaTime;
  39. stickTwo.transform.position += new Vector3( h2, v2 ) * MovementSpeed * Time.deltaTime;
  40.  
  41.  
  42.  
  43. var diff = stickTwo.position - stickOne.position;
  44. var middle = stickOne.transform.position + diff / 2f;
  45. var maxDist = diff.magnitude;
  46.  
  47. var freq = mapRange( diff.magnitude, 20, 1, 0, 2 ) * 0.5f;
  48. freq = Mathf.Clamp( freq, 0, 2 );
  49.  
  50.  
  51. var step = diff / ( renderer.numPositions - 1 );
  52. for ( int i = 0; i < renderer.numPositions; i++ ) {
  53. var p = stickOne.transform.position + ( step * i );
  54. var normal = new Vector3( diff.y, -diff.x );
  55. normal.Normalize();
  56.  
  57. var sin = Mathf.Sin( ( i * freq ) + Time.realtimeSinceStartup * SineSpeed ) * Amplitude;
  58.  
  59. var distToMiddle = Mathf.Pow( ( middle - p ).magnitude, SineLerpPower );
  60.  
  61.  
  62. sin = Mathf.Lerp( sin, 0, ((1f / maxDist) * distToMiddle) );
  63.  
  64. p += normal * sin;
  65.  
  66. renderer.SetPosition( i, p );
  67. }
  68. }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement