• unity 移动物体到指定位置的四种方法 【精确移动到指定位置,再也不是计算距离了,物体可以高速移动】


    方法1:使用Vector3.MoveTowards

    [csharp] view plain copy
     
    1. </pre><pre name="code" class="csharp">void Update ()   
    2. {  
    3.     float step = speed * Time.deltaTime;  
    4.     gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(10, -3, 50), step);  
    5. }  
    方法2:使用插值
    [csharp] view plain copy
     
    1. void Update ()   
    2. {  
    3.     float step = speed * Time.deltaTime;  
    4.     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));//插值算法也可以  
    5. }  

    方法3:使用iTween

    [csharp] view plain copy
     
    1. iTween.MoveTo(m_UIbgCamera, iTween.Hash("x",     -20,  
    2.                                                 "y",     -3,  
    3.                                                 "z",     50,  
    4.                                                 "time",  1.0,  
    5.                                                 "islocal", true  
    6.                        ));  


    方法4:使用协程

    [csharp] view plain copy
     
    1. StartCoroutine(MoveToPosition());  

    [csharp] view plain copy
     
    1. IEnumerator MoveToPosition()  
    2.     {  
    3.         GameObject m_UIbgCamera = GameObject.Find("UI/FengMian/UIbgCamera");  
    4.         while (m_UIbgCamera.transform.localPosition != new Vector3(-5, -3, 50))  
    5.         {  
    6.             m_UIbgCamera.transform.localPosition = Vector3.MoveTowards(m_UIbgCamera.transform.localPosition, new Vector3(-20, -3, 50), 10 * Time.deltaTime);  
    7.             yield return 0;  
    8.         }  
    9.     }  


     朝某个方向移动

            
    //方案一
    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);
     
  • 相关阅读:
    第九次训练赛
    什么是 Catalan 数列以及其应用
    Python pip 安装与使用
    HDU 1179:Ollivanders: Makers of Fine Wands since 382 BC.
    身份证信息
    流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?
    从零入门 Serverless | 函数计算的可观测性
    如何管理越来越多的 operator?OLM 给你答案
    Fluid: 让大数据和 AI 拥抱云原生的一块重要拼图
    SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可监控)
  • 原文地址:https://www.cnblogs.com/sanyejun/p/7683641.html
Copyright © 2020-2023  润新知