Time
time:从游戏开始到所用的时间
timeSinceLevelLoad:以秒计算到最后已经加载完的时间
deltaTime:以秒计算,最后一帧的时间
fixedTime:以秒计算游戏开始的时间
fixedDeltaTime:以秒计算时间间隔,在物理其他固定帧速率更新
maximumDeltaTime:一帧能获得的最大时间,物理其他帧速率
smoothDeltaTime:一个平滑淡出Time.deltaTime
timeScale:传递时间的,这可以减慢运动效果
frameCount:已经传递的帧的总数
realtimeSinceStartup:以秒计算,自游戏开始的实时时间
captureFramerate:时间会在每帧(1.0/captureFramerate)前进,不考虑真实时间
unscaledDeltaTime:以秒计算,完成最后一帧的时间(不计算Timescale)
unscaledTime:游戏开始到现在所用的时间(不计算Timescale)
Random
seed:设置用于随机数生成器的种子
value:返回一个随机数,在0.0~1.0之间
insideUnitCircle:返回半径为1的圆内的一个随机点
insideUnitSphere:返回半径为1的球体内的一个随机点
onUnitSphere:返回半径为1的球体表面的一个随机点
rotation:返回一个随机旋转角度
rotationUniform:返回一个随机选择角度(平均分布)
float Range(min, max) :返回一个随机float/int数,在min和max之间
Mathf
Ceil:返回大于或等于f的最小整数。
Floor:返回小于或等于该数的最大整数。
Round:返回浮点数 f 进行四舍五入最接近的整数。如果数字末尾是.5,因此它是在两个整数中间,不管是偶数或是奇数,将返回偶数。
Sigh:返回 f 的数字符号。当 f 为正或为0返回1,为负返回-1。
Clamp:限制value的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max,否则返回value
Clamp01:限制value在0,1之间并返回value。如果value小于0,返回0。如果value大于1,返回1,否则返回value 。
Lerp:基于浮点数t返回a到b之间的插值
LerpAngle:基于浮点数t返回a到b之间的角度插值
public float start = 0f;
public float end = 5f;
float startTime = 1f;
// Update is called once per frame
void Update () {
//Lerp
//使物体从start平滑移动至end
transform.position = new Vector3(
Mathf.Lerp(start, end, Time.time - startTime),
transform.position.y,
transform.position.z);
//LerpAngel
//使物体从start平滑旋转至end
float current = Mathf.LerpAngle(start, end, Time.time - startTime);
transform.eulerAngles = new Vector3(
transform.eulerAngles.x,
current,
transform.eulerAngles.z);
}
MoveTowards:改变一个当前值向目标靠近
MoveTowardsAngle:改变一个当前值向目标角度靠近
public float end = 5f;
public float speed = 1f;
// Update is called once per frame
void Update () {
//使物体匀速移动至终点
transform.position = new Vector3(
Mathf.MoveTowards(transform.position.x, end, Time.deltaTime * speed),
transform.position.y,
transform.position.z);
//使物体匀速旋转至最终角度
float current = Mathf.MoveTowardsAngle(transform.eulerAngles.x, end, Time.deltaTime * speed);
transform.eulerAngles = new Vector3(current, transform.eulerAngles.y, transform.eulerAngles.z);
}
SmoothStep:和lerp类似,在最小和最大值之间的插值,并在限制处渐入渐出
transform.position = new Vector3(
Mathf.Lerp(start, end, Time.time - startTime),
transform.position.y,
transform.position.z);
SmoothDamp:随着时间的推移逐渐改变一个值到期望值
SmoothDampAngle:随着时间的推移逐渐改变一个角度到期望角度
public float target;
float velocity = 2f;
public float maxSpeed;
// Update is called once per frame
void Update () {
//SmoothDamp
//使物体从起始点移动至终点
transform.position = new Vector3(
Mathf.SmoothDamp(transform.position.x, target, ref velocity, 1f, maxSpeed),
transform.position.y,
transform.position.z);
//SmoothDampAngles
//使物体从起始角度旋转至最终角度
float current = Mathf.SmoothDampAngle(transform.eulerAngles.x, target, ref velocity, 1f, maxSpeed);
transform.eulerAngles = new Vector3(current, transform.eulerAngles.y, transform.eulerAngles.z);
}
移动速度变化曲线
PingPong:让数值t在 0到length之间往返。t值永远不会大于length的值,也永远不会小于0。 返回值将在0和length之间来回移动。
Repeat:循环t值,从来不会比length大,并且从不会小于0,取值在0~length之间。
public float scale = 1f;
// Update is called once per frame
void Update () {
//scale = Mathf.Repeat(Time.time, 2);
scale = Mathf.PingPong(Time.time, 2);
transform.localScale = new Vector3(1, scale, 1);
}
GammaToLinearSpace:转换给定值从伽马到线性颜色空间。
LinearToGammaSpace:转换给定值从线性到伽马颜色空间。
PerlinNoise:生成二维柏林噪波。
public Material m;
Vector3 colorSpace;
// Use this for initialization
void Start () {
m = this.gameObject.GetComponent<Renderer>().material;
colorSpace = new Vector3(
Random.Range(0f, 10f),
Random.Range(0f, 10f),
Random.Range(0f, 10f)
);
}
// Update is called once per frame
void Update () {
float sX = Mathf.PerlinNoise(Time.time, colorSpace.x);
float sY = Mathf.PerlinNoise(Time.time, colorSpace.y);
float sZ = Mathf.PerlinNoise(Time.time, colorSpace.z);
m.color = new Color(sX, sY, sZ);
}
本文介绍了Unity中关于时间的各种属性及其使用方法,并详细讲解了Mathf类中的多种数学函数,如Lerp、MoveTowards等,这些函数对于实现物体平滑移动、旋转等效果至关重要。
435

被折叠的 条评论
为什么被折叠?



