unity3d中常规移动的四种方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d中常规移动的四种方法相关的知识,希望对你有一定的参考价值。
什么叫常规移动。。。纯粹的移动,在API来看只有transform.Translate吧
其他的诸如,三元数差值Vector3.Lerp,及其拓展定速靠近Vector3.MoveTowards,或者平滑阻尼Vector3.SmoothDamp,甚至直接改坐标值,都是可以达到移动的目的,不过这是对三元数Vector3这个结构体的操作,不是专门做移动的,因为Vector3可能是坐标,也可能是角度,或者是向量,也可以是缩放大小,或者自定义的其他的意义。
再说其他的,对某坐标轴的操作,比如改,x,y,z坐标,用Mathf.Lerp或者Mathf.MoveTowards或者其他的修改方式,和上面说的改Vector3一个原理,属于对坐标这个属性的操作。
其实Translate内部也是这个原理,改的是position,也是Vector3。。。
总归来说,所有的移动方式都是对坐标position这个属性的操作,也就是对Vector3的改变。
至于你说的常规移动的四种方法,不知道从哪看来的,一般没这种说法。。。 参考技术A 动的四种方法
unity 移动物体到指定位置的四种方法
http://blog.csdn.net/lcy0221/article/details/44040739
方法1:使用Vector3.MoveTowards
- </pre><pre name="code" class="csharp">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);
- yield return 0;
- }
- }
以上是关于unity3d中常规移动的四种方法的主要内容,如果未能解决你的问题,请参考以下文章