法一:使用Vector3.MoveTowards()方法
void Update(){
float step = Speed*Time.deltaTime();
gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(0, 0, 60), step);
}
法二:使用iTween
iTween.MoveTo(m_UIbgCamera, iTween.Hash("x", -10, "y", 0, "z", 50, "time", 5.0f,"islocal", true));
法三:使用差值Lerp
void Update ()
{
float step = Speed * Time.deltaTime;
gameObject.transform.localPosition=new Vector3(Mathf.Lerp(gameObject.transform.localPosition.x, 10, step),Mathf.Lerp(gameObject.transform.localPosition.y, 0, step),Mathf.Lerp(gameObject.transform.localPosition.z, 50, step));//插值算法
}
法四:使用协程 IEnumerate(**注意:**调用该协程的方法是:StartCoroutine(MoveToPosition()); )
IEnumerator MoveToPosition(){ //方法的声明 必须使用IEnumerate关键字
GameObject m_UIbgCamera = GameObject.Find("UI/FengMian/UIbgCamera");
while (m_UIbgCamera.transform.localPosition != new Vector3(-5, 0, 50)){
m_UIbgCamera.transform.localPosition = Vector3.MoveTowards(m_UIbgCamera.transform.localPosition, new Vector3(-20, 0, 50), 10 * Time.deltaTime);
yield return 0;
}
}