Test2DMove.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using UnityEngine;
  2. using System.Collections;
  3. /// <summary>
  4. ///
  5. /// </summary>
  6. public class Test2DMove : MonoBehaviour
  7. {
  8. /// <summary>
  9. ///
  10. /// </summary>
  11. private Vector3 mStart = Vector3.zero;
  12. /// <summary>
  13. ///
  14. /// </summary>
  15. private Vector3 mEnd = Vector3.zero;
  16. /// <summary>
  17. ///
  18. /// </summary>
  19. Vector3 center = Vector3.zero;
  20. /// <summary>
  21. ///
  22. /// </summary>
  23. Vector3 riseRelCenter;
  24. /// <summary>
  25. ///
  26. /// </summary>
  27. Vector3 setRelCenter;
  28. /// <summary>
  29. ///
  30. /// </summary>
  31. public float mSpeed = 0.01f;
  32. /// <summary>
  33. ///
  34. /// </summary>
  35. public bool IsOver = false;
  36. /// <summary>
  37. ///
  38. /// </summary>
  39. float mFloat = 0;
  40. public Transform startOjb = null;
  41. public Transform endOjb = null;
  42. void Start()
  43. {
  44. Init(startOjb.transform.position, endOjb.transform.position);
  45. }
  46. /// <summary>
  47. ///
  48. /// </summary>
  49. /// <param name="start"></param>
  50. /// <param name="end"></param>
  51. public void Init(Vector3 start, Vector3 end)
  52. {
  53. this.mStart = start;
  54. this.mEnd = end;
  55. // 弧线的中心
  56. center = (mStart + mEnd) * 0.5f;
  57. // 向下移动中心,垂直于弧线
  58. center += new Vector3(3.5f, 0, 0);
  59. riseRelCenter = start - center;
  60. setRelCenter = end - center;
  61. IsOver = true;
  62. }
  63. void Update()
  64. {
  65. if (IsOver)
  66. {
  67. //transform.LookAt(mEnd);
  68. mFloat += Time.deltaTime * mSpeed;
  69. // 相对于中心在弧线上插值
  70. transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, mFloat);
  71. transform.position += center;
  72. if (transform.position == mEnd)
  73. {
  74. IsOver = false;
  75. //Destroy(gameObject);
  76. }
  77. }
  78. }
  79. }