using UnityEngine; using System.Collections; /// /// /// public class Test2DMove : MonoBehaviour { /// /// /// private Vector3 mStart = Vector3.zero; /// /// /// private Vector3 mEnd = Vector3.zero; /// /// /// Vector3 center = Vector3.zero; /// /// /// Vector3 riseRelCenter; /// /// /// Vector3 setRelCenter; /// /// /// public float mSpeed = 0.01f; /// /// /// public bool IsOver = false; /// /// /// float mFloat = 0; public Transform startOjb = null; public Transform endOjb = null; void Start() { Init(startOjb.transform.position, endOjb.transform.position); } /// /// /// /// /// public void Init(Vector3 start, Vector3 end) { this.mStart = start; this.mEnd = end; // 弧线的中心 center = (mStart + mEnd) * 0.5f; // 向下移动中心,垂直于弧线 center += new Vector3(3.5f, 0, 0); riseRelCenter = start - center; setRelCenter = end - center; IsOver = true; } void Update() { if (IsOver) { //transform.LookAt(mEnd); mFloat += Time.deltaTime * mSpeed; // 相对于中心在弧线上插值 transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, mFloat); transform.position += center; if (transform.position == mEnd) { IsOver = false; //Destroy(gameObject); } } } }