[unity]移动物体的几种方法
参考大佬博客:https://www.cnblogs.com/sanyejun/p/7683641.html
方法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; } }
另附:朝某个方向移动
//方案一 transform.Translate(Vector2.left * speed * Time.deltaTime * moveDir); //方案二 Vector3 targetVelocity = new Vector2(-moveDir * speed, body2D.velocity.y); body2D.velocity = Vector3.SmoothDamp(body2D.velocity, targetVelocity, ref curSpeed, 0.1f);

浙公网安备 33010602011771号