Guest User

Untitled

a guest
Jun 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class Projectile : MonoBehaviour {
  7. const float AngleMin = 0f;
  8. const float AngleMax = 90f;
  9. const float VelocityMin = 5f;
  10. const float VelocityMax = 25f;
  11.  
  12. [SerializeField]
  13. private Text _velocityDisplay = null;
  14.  
  15. [SerializeField]
  16. private Slider _velocitySlider = null;
  17.  
  18. [SerializeField]
  19. private Text _elevationDisplay = null;
  20.  
  21. [SerializeField]
  22. private Slider _elevationSlider = null;
  23.  
  24. private float _initialVelocity;
  25. private float _elevation;
  26. private LineRenderer _trajectoryRenderer;
  27. private bool _flying = false;
  28.  
  29. private void Awake()
  30. {
  31. _initialVelocity = Mathf.Lerp(VelocityMin, VelocityMax, _velocitySlider.value);
  32. _elevation = Mathf.Lerp(AngleMin, AngleMax, _elevationSlider.value);
  33.  
  34. _trajectoryRenderer = gameObject.AddComponent<LineRenderer>();
  35. _trajectoryRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
  36. _trajectoryRenderer.receiveShadows = false;
  37. _trajectoryRenderer.allowOcclusionWhenDynamic = false;
  38. _trajectoryRenderer.startWidth = _trajectoryRenderer.endWidth = 0.1f;
  39. }
  40.  
  41. private void Update()
  42. {
  43. if(!_flying)
  44. {
  45. _velocityDisplay.text = string.Format("Velocity: {0:f1}", _initialVelocity);
  46. _elevationDisplay.text = string.Format("Angle: {0:f1}", _elevation);
  47. var positions = ProjectileUtil.MakeTrajectory(_elevation, _initialVelocity, Physics.gravity.y);
  48. _trajectoryRenderer.positionCount = positions.Length;
  49. _trajectoryRenderer.SetPositions(positions);
  50. }
  51. }
  52.  
  53. public void Throw()
  54. {
  55. float verticalInitialSpeed = Mathf.Sin(Mathf.Deg2Rad * _elevation) * _initialVelocity;
  56. float horizontalInitialSpeed = Mathf.Cos(Mathf.Deg2Rad * _elevation) * _initialVelocity;
  57. var rigid = GetComponent<Rigidbody>();
  58. rigid.velocity = new Vector3(horizontalInitialSpeed, verticalInitialSpeed, 0f);
  59. rigid.useGravity = true;
  60. rigid.drag = 0f;
  61. _flying = true;
  62. }
  63.  
  64. public void OnVelocityChanged(float value)
  65. {
  66. _initialVelocity = Mathf.Lerp(VelocityMin, VelocityMax, value);
  67. }
  68.  
  69. public void OnElevationChanged(float value)
  70. {
  71. _elevation = Mathf.Lerp(AngleMin, AngleMax, value);
  72. }
  73. }
Add Comment
Please, Sign In to add comment