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); } /// /// 初始化摇杆点 /// /// 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); } }