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);
}
}
}
}