RockerMove.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class RockerMove : MonoBehaviour
  5. {
  6. public Transform cameraRig;
  7. public float moveSpeed;
  8. protected Transform rockerPoint;
  9. protected Transform holdPoint;
  10. protected bool isMove = false;
  11. public Transform holdBall;
  12. // Use this for initialization
  13. public virtual void Update()
  14. {
  15. if (isMove)
  16. {
  17. Move();
  18. HoldBallControl();
  19. }
  20. }
  21. public virtual void HoldBallControl()
  22. {
  23. float localScale = Vector3.Distance(holdPoint.position, rockerPoint.position);
  24. localScale = Mathf.Clamp(localScale, 0, 0.1f);
  25. holdBall.transform.localScale = Vector3.one * localScale * 2;
  26. holdBall.LookAt(holdPoint.position);
  27. }
  28. /// <summary>
  29. /// 初始化摇杆点
  30. /// </summary>
  31. /// <param name="holdPoint"></param>
  32. public void InitRockerPoint(Transform _holdPoint)
  33. {
  34. if (!rockerPoint)
  35. {
  36. rockerPoint = new GameObject("Rocker").transform;
  37. rockerPoint.parent = this.transform;
  38. holdBall.transform.parent = rockerPoint;
  39. holdBall.transform.localPosition = Vector3.zero;
  40. }
  41. this.holdPoint = _holdPoint;
  42. rockerPoint.transform.position = holdPoint.position;
  43. holdBall.gameObject.SetActive(true);
  44. isMove = true;
  45. HoldBallControl();
  46. }
  47. public virtual void Move()
  48. {
  49. Vector3 _moveDir = holdPoint.position - rockerPoint.position;
  50. cameraRig.transform.Translate(_moveDir * moveSpeed * Time.deltaTime, Space.World);
  51. }
  52. public void Close()
  53. {
  54. isMove = false;
  55. holdPoint = null;
  56. holdBall.gameObject.SetActive(false);
  57. }
  58. }