Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. public var maxStretch = 3.0;
  2. private var spring : SpringJoint2D;
  3. private var tempPlayer : Transform;
  4. private var clickedOn;
  5. private var rayToMouse : Ray;
  6. private var maxStretchSqr : float;
  7. private var prevVelocity : Vector2;
  8. private var attachedSpring = true;
  9.  
  10. var force = 4.0;
  11. var samples = 15;
  12. var spacing = 0.1; // Time between samples
  13.  
  14. private var offset : Vector2;
  15. private var home : Vector2;
  16. private var argo : GameObject[];
  17.  
  18. private var velocity = Vector2.zero;
  19.  
  20. function Awake () {
  21. spring = gameObject.GetComponent(SpringJoint2D);
  22. tempPlayer = spring.connectedBody.transform;
  23. }
  24.  
  25.  
  26. function Start () {
  27. home = transform.position;
  28. argo = new GameObject[samples];
  29. for (var i = 0; i < argo.Length; i++) {
  30. var go = GameObject.CreatePrimitive(PrimitiveType.Sphere);
  31. go.GetComponent.<Collider>().enabled = false;
  32. go.transform.localScale = Vector3(0.2, 0.2, 0.2);
  33. argo[i] = go;
  34. }
  35. rayToMouse = new Ray (tempPlayer.position, Vector3.zero);
  36. maxStretchSqr = maxStretch * maxStretch;
  37. }
  38.  
  39. function Update () {
  40. if (clickedOn) {
  41. Dragging ();
  42. }
  43.  
  44. if (spring != null) {
  45. if (!gameObject.GetComponent(Rigidbody2D).isKinematic && (prevVelocity.sqrMagnitude > gameObject.GetComponent(Rigidbody2D).velocity.sqrMagnitude)) {
  46. Destroy (spring);
  47. gameObject.GetComponent(Rigidbody2D).velocity = prevVelocity * 0.8f;
  48. }
  49. if (!clickedOn) {
  50. prevVelocity = gameObject.GetComponent(Rigidbody2D).velocity;
  51. }
  52.  
  53. }
  54. }
  55.  
  56. function ShowHideIndicators(show : boolean) {
  57. for (var i = 0; i < argo.Length; i++) {
  58. argo[i].GetComponent.<Renderer>().enabled = show;
  59. argo[i].transform.position = home;
  60. }
  61. }
  62.  
  63. function OnMouseDown() {
  64. spring.enabled = false;
  65. clickedOn = true;
  66. }
  67.  
  68. function OnMouseUp() {
  69. ShowHideIndicators(false);
  70. spring.enabled = true;
  71. gameObject.GetComponent(Rigidbody2D).isKinematic = false;
  72. clickedOn = false;
  73. }
  74.  
  75. function OnMouseDrag() {
  76. DisplayIndicators();
  77. spring.enabled = true;
  78. GetComponent(Rigidbody2D).isKinematic = false;
  79. clickedOn = false;
  80. }
  81.  
  82.  
  83. function DisplayIndicators() {
  84. argo[0].transform.position = transform.position;
  85. var v2 = transform.position;
  86. var y = (force * (home - transform.position)).y;
  87. var t = 0.0;
  88. v2.y = 0.0;
  89. for (var i = 1; i < argo.Length; i++) {
  90. v2 += force * (home - transform.position) * spacing;
  91. t += spacing;
  92. v2.y = y * t + 0.5 * Physics.gravity.y * t * t + transform.position.y;
  93. argo[i].transform.position = v2;
  94. }
  95. }
  96.  
  97. function Dragging () {
  98. mouseWorldPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);
  99. throwToMouse = mouseWorldPoint - tempPlayer.position;
  100.  
  101. if (throwToMouse.sqrMagnitude > maxStretchSqr) {
  102. rayToMouse.direction = throwToMouse;
  103. mouseWorldPoint = rayToMouse.GetPoint(maxStretch);
  104. }
  105.  
  106.  
  107. mouseWorldPoint.z = 0.0f;
  108. transform.position = mouseWorldPoint;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement