无标题文章

刚刚发现了一个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;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • title: Optical Character Recognition (OCR)author: Marina ...
    4a87cc38dcbc阅读 386评论 0 0
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,185评论 1 0
  • EXCEL小白的进阶之路 从16年3月申请的小号,到现在发表的微文,屈指可数,纠结于想要好的内容,好的页面排版,然...
    Rachelhaha阅读 1,103评论 0 0
  • 1、设置UILabel行间距 NSMutableAttributedString*attrString=[[NSM...
    iOS祎阅读 2,223评论 0 0
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,789评论 0 9