12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class RockerMove : MonoBehaviour
- {
- public Transform cameraRig;
- public float moveSpeed;
- protected Transform rockerPoint;
- protected Transform holdPoint;
- protected bool isMove = false;
- public Transform holdBall;
- // Use this for initialization
- public virtual void Update()
- {
- if (isMove)
- {
- Move();
- HoldBallControl();
- }
- }
- public virtual void HoldBallControl()
- {
- float localScale = Vector3.Distance(holdPoint.position, rockerPoint.position);
- localScale = Mathf.Clamp(localScale, 0, 0.1f);
- holdBall.transform.localScale = Vector3.one * localScale * 2;
- holdBall.LookAt(holdPoint.position);
- }
- /// <summary>
- /// 初始化摇杆点
- /// </summary>
- /// <param name="holdPoint"></param>
- public void InitRockerPoint(Transform _holdPoint)
- {
- if (!rockerPoint)
- {
- rockerPoint = new GameObject("Rocker").transform;
- rockerPoint.parent = this.transform;
- holdBall.transform.parent = rockerPoint;
- holdBall.transform.localPosition = Vector3.zero;
- }
- this.holdPoint = _holdPoint;
- rockerPoint.transform.position = holdPoint.position;
- holdBall.gameObject.SetActive(true);
- isMove = true;
- HoldBallControl();
- }
- public virtual void Move()
- {
- Vector3 _moveDir = holdPoint.position - rockerPoint.position;
- cameraRig.transform.Translate(_moveDir * moveSpeed * Time.deltaTime, Space.World);
- }
- public void Close()
- {
- isMove = false;
- holdPoint = null;
- holdBall.gameObject.SetActive(false);
- }
- }
|