刚刚发现了一个UNITY3D中物体移动比较齐全的方法,借鉴的,希望对大家都有所帮
unity3d中控制物体移动方法有那些及区别
1. 利用GameObject的Translate,直接改变它的Transform,前提是需要你实现准备变换矩阵。
2. 用MoveTo方法,你只要知道你的目标位置即可。
3. 用Math的Lerp方法计算位置分量的线性差值,以TimeDelta(或其倍数)为调节量,可以使移动变得很平滑。这个方法可与方法2结合使用。
unity 移动物体到指定位置的四种方法
方法1:使用Vector3.MoveTowards
void Update ()
{
float step = speed * Time.deltaTime;
gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition,new Vector3(10, -3, 50), step);
}
方法2:使用插值
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, -3, step),Mathf.Lerp(gameObject.transform.localPosition.z, 50, step));//插值算法也可以
}
方法3:使用iTween
iTween.MoveTo(m_UIbgCamera, iTween.Hash("x", -20,
"y", -3,
"z", 50,
"time", 1.0,
"islocal",true
));
方法4:使用协程
StartCoroutine(MoveToPosition());
IEnumerator MoveToPosition()
{
GameObject m_UIbgCamera = GameObject.Find("UI/FengMian/UIbgCamera");
while (m_UIbgCamera.transform.localPosition !=new Vector3(-5, -3, 50))
{
m_UIbgCamera.transform.localPosition = Vector3.MoveTowards(m_UIbgCamera.transform.localPosition,new Vector3(-20, -3, 50), 10 * Time.deltaTime);
yieldreturn 0;
}
}