unity3d Vector3.Lerp解析
Vector3.Lerp:http://www.ceeger.com/Script/Vector3/Vector3.Lerp.html
手册中描述的不是很详细,什么叫“按照数字t在from到to之间插值”???t代表什么鬼?还得自己测试一下才知道
我以前这样用过:
from.position = Vector3.Lerp(from.position, to.position, Time.deltaTime);
或者想要快一些我就这样:
from.position = Vector3.Lerp(from.position, to.position, Time.deltaTime * 2f);
不知道大家有没有像我这样用过!第三个参数取值范围0~1,其实就是距离百分比,比如填0.5f,那么就是取A点到B点的中间位置
如果像我上面那种方法去使用,就会导致物体在移动的时候会越来越慢
假设A点到B点距离是10,第三个参数t我填0.5f,那么插值一次后距离就减少了一半,在执行一次,又减少了一半距离
当然,如果需求就是这样的话直接用就行了,但是如果需求是匀速平滑到某点,这咋办呢?
既然都知道第三个参数其实就是距离百分比了,那我们自己算一下距离百分比不就行了吗?
public Transform from;
public Transform to;
public float mMoveTime;
private Vector3 mStartPos;
private float t; private bool mIsPlay = false; void Update()
{
if (!mIsPlay)
return; t += 1f / mMoveTime * Time.deltaTime;
from.position = Vector3.Lerp(mStartPos, to.position, t);
} void OnGUI()
{
if(GUI.Button(new Rect(,,,),"play"))
{
mStartPos = from.position;
mIsPlay = true;
}
}
看了上面的介绍,相信对Vector3.Lerp有些了解了!
如果我想要他移动到指定位置后继续保持匀速运动怎么做呢?也许你会说用Vector3.Lerp完全可以啊!
可是你别忘了,它的取值范围是0~1,也就是说>1的值它会忽略掉,我测试了一下的确如此
那看来只能自己实现了!这其实很简单,下面我们就来自己实现一遍
void Update()
{
if (!mIsPlay)
return; t += 1f / mMoveTime * Time.deltaTime;
//from.position = Vector3.Lerp(mStartPos, to.position, t);
from.position = mStartPos + (to.position - mStartPos) * t;
}
原文链接:http://www.cnblogs.com/shenggege/p/5658650.html
unity3d Vector3.Lerp解析的更多相关文章
- Unity3d之json解析研究
Unity3d之json解析研究 json是好东西啊!JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 JSON简单易用,我要好好研究一下 ...
- Vector3.Lerp 插值
Vector3.Lerp 插值 static function Lerp (from : Vector3, to : Vector3, t : float) : Vector3 Description ...
- 对Vector3.Lerp 插值的理解
有时,我们在做游戏时会发现有些跟随动作不够圆滑或者需要一个缓冲的效果,这时,一般会考虑到插值.所以对插值的理解是必需的.(比如摄像机跟随主角) 插值是数学上的一个概念,在这里用公式表示就是:from ...
- Unity3d vector3.forward和transform.forward的区别!
原文连接: http://blog.csdn.net/kaluluosi111/article/details/17206655 在unity3d中有2个forward,一个是vector3.forw ...
- Unity3d 插值Lerp与Slerp
Lerp Lerp表示线性插值. Slerp 球形插值在Vector3.Quaternion等类都有使用,一般多在Quaternion的旋转操作时使用.
- Unity3d Vector3
using UnityEngine; using System.Collections; public class test : MonoBehaviour { void Start () { Vec ...
- 时光煮雨 Unity3D实现2D人物移动-总结篇
系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...
- Unity3D脚本中文系列教程(十三)
http://dong2008hong.blog.163.com/blog/static/469688272014032334486/ Unity3D脚本中文系列教程(十二) ◆ function G ...
- [Unity3D] C# Basic : Gameplay Scripting
教程:https://unity3d.com/cn/learn/tutorials/s/scripting 补充:http://www.runoob.com/csharp/csharp-inherit ...
随机推荐
- C#语言基础——特殊集合
特殊集合一.stack集合栈:stack,先进后出,一个一个赋值,一个一个取值,按顺序,且没有索引属性和方法:.count 取集合内元素的个数.push() 将元素一个一个推入集合中.pop() 将元 ...
- SQLServer查询锁表
查看被锁表: select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys. ...
- 【hadoop】——修改hadoop FileUtil.java,解决权限检查的问题
在Hadoop Eclipse开发环境搭建这篇文章中,第15.)中提到权限相关的异常,如下: 15/01/30 10:08:17 WARN util.NativeCodeLoader: Unable ...
- 004.UDP--拼接UDP数据包,构造ip头和udp头通信(使用原始套接字)
一.大致流程: 建立一个client端,一个server端,自己构建IP头和UDP头,写入数据(hello,world!)后通过原始套接字(SOCK_RAW)将包发出去. server端收到数据后,打 ...
- ELF Format 笔记(二)—— ELF Header
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 以 32 位的 ELF header 数据结构为例: #define EI_NIDENT 16 typede ...
- php 批量更新某字段内容的部分内容 replace(要替换的字段,'被替换的字符串,'替换成的字符串')
要求: 一个字段值: ------预约---- 要将其中 "预约",改成"预定". 但是我开始写的时候,写成了 update 表名 set smscontent ...
- linux /proc/sys/fs/file-nr /proc/sys/fs/file-max /etc/security/limits.conf 三者的关联
ulimit -n 对应 /etc/security/limits.conf 文件设置 问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题. 在 ...
- 使用ajaxfileupload.js上传文件
一直以来上传文件都是使用form表单上传文件,也看到过有人使用js上传文件,不过看起来蛮简单的也就没有怎么去理会.今天突然要使用这种方式上传文件,期间还遇到点问题.因此就记录下来,方便以后遇到这样的问 ...
- POJ1094[有向环 拓扑排序]
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33184 Accepted: 11 ...
- 第63课 C语言异常处理
1. 异常的概念 (1)程序在运行过程中可能产生异常 (2)异常(Exception)与Bug的区别 ①异常是程序运行时可预料的执行分支 ②Bug是程序是的错误,是不被预期的运行方式 2. 异常和Bu ...