unity中物体移动到指定位置的四种方法(精确移动、无距离计算、速度可变)

法一:使用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;  
        }  
    }  

版权声明:本文为wk131421原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。