TeHArGiS10

Untitled

Aug 12th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class ufoController : MonoBehaviour {
  5.  
  6. public Transform mainUFO;
  7. public float sensitivity;
  8. public float speed;
  9. public float smoothness = 0.3f;
  10. public float bobSmoothness = 0.4f;
  11. public Transform originalPos;
  12. public Transform targetForward;
  13. public Transform targetBackwards;
  14. public Transform targetLeft;
  15. public Transform targetRight;
  16. public Transform targetUp;
  17. public Transform targetDown;
  18. public Vector3 priVelocity;
  19. Rigidbody rb;
  20. Animation anim;
  21.  
  22. void Start ()
  23. {
  24. rb = GetComponent<Rigidbody>();
  25. anim = mainUFO.GetComponent<Animation>();
  26. }
  27.  
  28. void FixedUpdate ()
  29. {
  30. //Movement
  31. float xPos = Input.GetAxisRaw("Horizontal");
  32. float zPos = Input.GetAxisRaw("Vertical");
  33.  
  34. Vector3 xMov = Camera.main.transform.right * xPos;
  35. Vector3 zMov = Camera.main.transform.forward * zPos;
  36.  
  37. priVelocity = (xMov + zMov).normalized * speed;
  38.  
  39. if (priVelocity != Vector3.zero)
  40. {
  41. rb.MovePosition(rb.position + priVelocity * Time.deltaTime);
  42.  
  43. anim["Idle"].wrapMode = WrapMode.Once;
  44. anim.PlayQueued("Nothing");
  45. anim.Stop("Nothing");
  46. } else
  47. {
  48. anim["Idle"].wrapMode = WrapMode.Default;
  49. StartCoroutine(delayIdle());
  50. }
  51.  
  52. //Camera
  53. float yRot = Input.GetAxisRaw("Mouse X");
  54.  
  55. Vector3 vectorY = new Vector3(0, 0, yRot) * sensitivity;
  56. rb.MoveRotation(rb.rotation * Quaternion.Euler(vectorY));
  57.  
  58. //More movement
  59. Vector3 vel = Vector3.zero;
  60. if (Input.GetKey(KeyCode.W))
  61. {
  62. Vector3 targetPosForward = new Vector3(targetForward.transform.position.x, targetForward.transform.position.y, targetForward.transform.position.z);
  63. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosForward, ref vel, smoothness);
  64. } else
  65. {
  66. Vector3 originalPosPos = new Vector3(originalPos.transform.position.x, originalPos.transform.position.y, originalPos.transform.position.z);
  67. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, originalPosPos, ref vel, smoothness);
  68. }
  69.  
  70.  
  71. if (Input.GetKey(KeyCode.S))
  72. {
  73. Vector3 targetPosBackwards = new Vector3(targetBackwards.transform.position.x, targetBackwards.transform.position.y, targetBackwards.transform.position.z);
  74. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosBackwards, ref vel, smoothness);
  75. }
  76. else
  77. {
  78. Vector3 originalPosPos = new Vector3(originalPos.transform.position.x, originalPos.transform.position.y, originalPos.transform.position.z);
  79. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, originalPosPos, ref vel, smoothness);
  80. }
  81.  
  82. //Bobbing
  83. float bobX = Input.GetAxisRaw("Mouse X");
  84. float bobY = -Input.GetAxisRaw("Mouse Y");
  85.  
  86. if (bobX < 0)
  87. {
  88. //left
  89. Vector3 targetPosLeft = new Vector3(targetLeft.transform.position.x, targetLeft.transform.position.y, targetLeft.transform.position.z);
  90. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosLeft, ref vel, bobSmoothness);
  91. } else if (bobX > 0)
  92. {
  93. //right
  94. Vector3 targetPosRight = new Vector3(targetRight.transform.position.x, targetRight.transform.position.y, targetRight.transform.position.z);
  95. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosRight, ref vel, bobSmoothness);
  96. }
  97.  
  98. if (bobY < 0)
  99. {
  100. //up
  101. Vector3 targetPosUp = new Vector3(targetUp.transform.position.x, targetUp.transform.position.y, targetUp.transform.position.z);
  102. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosUp, ref vel, bobSmoothness);
  103. }
  104. else if (bobY > 0)
  105. {
  106. //down
  107. Vector3 targetPosDown = new Vector3(targetDown.transform.position.x, targetDown.transform.position.y, targetDown.transform.position.z);
  108. mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosDown, ref vel, bobSmoothness);
  109. }
  110. }
  111.  
  112. IEnumerator delayIdle ()
  113. {
  114. yield return new WaitForSeconds(1.5f);
  115.  
  116. if (priVelocity == Vector3.zero)
  117. {
  118. anim.Play("Idle");
  119. }
  120. }
  121.  
  122. }
Advertisement
Add Comment
Please, Sign In to add comment