Guest User

Untitled

a guest
Apr 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class HappyCube : MonoBehaviour {
  4.  
  5. MeshFilter mFilter;
  6. Mesh Mesh;
  7.  
  8. public float UpDownFactor = 0.1f;
  9. public float UpDownSpeed = 6f;
  10. public float LeftFactor = 0.3f;
  11. public float LeftSpeed = 3f;
  12. public float LeftOffset = 2.3f;
  13. public float StrechFactor = -0.1f;
  14. public float StrechSpeed = 6f;
  15.  
  16. // Use this for initialization
  17. void Start () {
  18.  
  19. Mesh = new Mesh();
  20. Mesh.name = "Dancing Cube";
  21.  
  22. var trigangles = new int[]
  23. {
  24. //top/bottom
  25. 0,2,1,
  26. 0,3,2,
  27. 4,5,6,
  28. 4,6,7,
  29.  
  30. //left/right
  31. 9,8,11,
  32. 8,10,11,
  33. 12,13,15,
  34. 14,12,15,
  35.  
  36. //front/back
  37. 16,17,19,
  38. 18,16,19,
  39. 20,21,23,
  40. 22,20,23
  41. };
  42.  
  43. Mesh.vertices = GenerateVerticies();
  44. Mesh.triangles = trigangles;
  45. Mesh.RecalculateBounds();
  46. Mesh.RecalculateNormals();
  47.  
  48. var mFilter = gameObject.AddComponent<MeshFilter>();
  49. mFilter.mesh = Mesh;
  50. }
  51.  
  52. protected Vector3[] GenerateVerticies(float up = 0f, float left = 0f, float strech = 0f, float forward = 0f)
  53. {
  54.  
  55. return new Vector3[]
  56. {
  57. //top
  58. new Vector3(-1,0,1),
  59. new Vector3(1,0,1),
  60. new Vector3(1,0,-1),
  61. new Vector3(-1,0,-1),
  62.  
  63. //bottom
  64. new Vector3(-1 - strech + left,2 + up,1 + strech + forward),
  65. new Vector3(1 + strech + left,2 + up,1 + strech + forward),
  66. new Vector3(1 + strech + left,2 + up,-1 - strech + forward),
  67. new Vector3(-1 - strech + left,2 + up,-1 - strech + forward),
  68.  
  69. //left
  70. new Vector3(-1,0,1),
  71. new Vector3(-1,0,-1),
  72. new Vector3(-1 - strech + left,2 + up,1 + strech + forward),
  73. new Vector3(-1 - strech + left,2 + up,-1 - strech + forward),
  74.  
  75. //right
  76. new Vector3(1,0,1),
  77. new Vector3(1,0,-1),
  78. new Vector3(1 + strech + left,2 + up,1 + strech + forward),
  79. new Vector3(1 + strech + left,2 + up,-1 - strech + forward),
  80.  
  81.  
  82. //front
  83. new Vector3(1,0,-1),
  84. new Vector3(-1,0,-1),
  85. new Vector3(1 + strech + left,2 + up,-1 - strech + forward),
  86. new Vector3(-1 - strech + left,2 + up,-1 - strech + forward),
  87.  
  88. //back
  89. new Vector3(-1,0,1),
  90. new Vector3(1,0,1),
  91. new Vector3(-1 - strech + left,2 + up,1 + strech + forward),
  92. new Vector3(1 + strech + left,2 + up,1 + strech + forward)
  93. };
  94. }
  95.  
  96. // Update is called once per frame
  97. void Update () {
  98.  
  99. //Walking
  100. var input = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
  101. var inputMagnitude = Mathf.Clamp(input.magnitude, 0, 1);
  102.  
  103. transform.position += Time.deltaTime * input * 20f;
  104.  
  105. if (inputMagnitude > 0)
  106. if (Vector3.Angle(input.normalized, Vector3.back) > 1)
  107. transform.rotation = Quaternion.FromToRotation(Vector3.forward, input.normalized);
  108. else
  109. transform.rotation = Quaternion.AngleAxis(180, Vector3.up);
  110.  
  111. //Animation
  112. Mesh.vertices = GenerateVerticies(Mathf.Sin(Time.realtimeSinceStartup * UpDownSpeed) * UpDownFactor,
  113. Mathf.Sin((Time.realtimeSinceStartup + LeftOffset) * LeftSpeed) * LeftFactor,
  114. Mathf.Sin(Time.realtimeSinceStartup * StrechSpeed) * StrechFactor,
  115. inputMagnitude);
  116.  
  117. }
  118. }
Add Comment
Please, Sign In to add comment