zoukankan      html  css  js  c++  java
  • unity3d中控制物体移动方法有那些及区别

    1. 利用GameObject的Translate,直接改变它的Transform,前提是需要你实现准备变换矩阵
    2. 用MoveTo方法,你只要知道你的目标位置即可。
    3. 用Math的Lerp方法计算位置分量的线性差值,以TimeDelta(或其倍数)为调节量,可以使移动变得很平滑。这个方法可与方法2结合使用。



    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.     }  
    
    
  • 相关阅读:
    洛谷 P1521 求逆序对
    火柴棒等式(2008年NOIP全国联赛提高组)
    扫雷游戏
    数字统计(2010年NOIP全国联赛普及组)
    祖瑪
    巧克力棒&&新年的巧克力棒
    关押罪犯(2010年NOIP全国联赛提高组)
    大整数运算||高精度运算
    國王遊戲(2012年NOIP全国联赛提高组)
    谁拿了最多奖学金(2005提高组第一题)
  • 原文地址:https://www.cnblogs.com/mimime/p/6237078.html
Copyright © 2011-2022 走看看