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;  
        }  
    }  
上一篇:Unity使用心得 之 ☀️ Unity中 多种相机视角跟随方式 (第一、三人称都有哦,快来看看叭)


下一篇:2021-04-24