• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > 初学unity,关于解决有向匀速运动的问题

初学unity,关于解决有向匀速运动的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了unity 匀速移动,匀速运动,匀速直线运动,匀速圆周运动,匀速直线运动图像等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 初学unity,关于解决有向匀速运动的问题
描述:

unity匀速运动Vector3.Lerp算法

     在项目中,可能会遇到迅速任意方向的运动需求,要解决匀速运动大家可能会首先想到Vector3.Lerp和unity 的itween插件来解决,但是真正使用之后,你就会发现Vector3.Lerp和itween插件路径算法并不是你需要的效果,在目标点转换的时候使用这两个方法并不会匀速,两点间的距离越大速度就越快,我对itween的算法还不太了解,现在我着重解释一下怎么用Vector3.Lerp解决“变速”的问题;
      Vector3.Lerp
      static Vector3 Lerp(Vector3 from, Vector3 to, float t);假设from和to的坐标分别为(x1,y1,z1)和(x2,y2,z2),两点之间可以连成一条直线。Vector3.Lerp(from,to,t)的值(x,y,z)就是在这条直线上的一点,并且满足x-x1/x2-x1=y-y1/y2-y1=z-z1/z2-z1=t,根据这个方程求得x=t(x2-x1)+x1,y=t(y2-y1)+y1,z=t(z2-z1)+z1,即Vector3.Lerp(from,to,t)的(返回)值为(t(x2-x1)+x1,t(y2-y1)+y1,t(z2-z1)+z1),由于x1,y1,z1,x2,y2,z2都是常数,所以x,y,z随t单调递增或递减。当t=0时,x=t(x2-x1)+x1=x1,y=y1,z=z1;当t=1时,x=x2,y=y2,z=z2;当t=1/2时,x=x1+x2/2,y=y1+y2/2,z=z1+z2/2,正好为两点之间的中点。函数返回值实际上就是由from到to的直线的t分点综上所述,当0<=t<=1时,并且由0向1变化时,函数返回值沿直线由点from逐渐变化为点to。在Unity中,t<0按t=0处理,t>1按t=1处理在Update中调用该函数时,transform.position=Vector3.Lerp(transform.position,GameObject.FindWithTag("Player").transform.position,0.9f);每经过一帧,物体的位置向Player移动90%,两者之间越来越接近,但是永远不会在同一位置(特殊情况除外)。可见,只要t不为0和1,两者之间总是在逐渐接近,t越大,两者之间接近的速度越快,当t不等于1时,两者总不会在同一位置(特殊情况除外)。当t=1时,两者总在同一位置
     了解了 Vector3.Lerp每次都是按剩余百分比,这就是速度变化的原因,而想要控制速度只需要很简单的把t=1/((from - to).magnitude)就行了,每一帧都对剩余的量求解,这样就能实现匀速了。
     而方向控制就使用Quaternion.Slerp就非常容易解决。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 初学unity,关于解决有向匀速运动的问题

相关文章

  • 2017-06-05 cocos2d-x310按钮可以加减,点击数字也可以自定义输入怎么实现?
  • 2017-06-05 Opengl怎么通过一个纹理单元去设置多个纹理对象?
  • 2017-06-05 小子新人一枚,目前正在实习期间,WEB游戏开发,遇到了一个问题。。
  • 2022-04-30Unity 3D Scrollbar控件
  • 2022-04-30Unity 3D Event System事件系统
  • 2022-04-30Unity 3D布料
  • 2017-06-05 图形引擎,游戏引擎开发方向在深圳有什么比较好的公司推荐
  • 2022-04-30Unity 3D游戏场景设计实例
  • 2022-04-30Unity 3D Canvas画布
  • 2022-04-30Unity 3D Hierarchy视图

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何猜或者截取DDS文件头?
    • 原创cocos2d-x横版手游《打小三》源码下载!
    • 这类cocos2dx写的AI格斗游戏,能去游戏公司干活了吗,诚恳
    • cocos2dx多人技能格斗游戏源码+文档
    • 有哪些好的网站可以买cocos2d游戏源码
    • unity安装问题sslpeercertificateorsshwasnotok
    • unity访问安卓手机本地资源(如图片、视频)
    • 俄罗斯方块的旋转算法怎么弄?
    • 小弟有个外行的问题问一下各位大神
    • Unity 3D贴图

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有