Mathf
————一般可计算一次————
1.Π
2.取绝对值
3.向上取整
4.向下取整
5.钳制函数
比小的还小就取小值,比大的还大就去大值,若是在两者之间则取自己本身。
6.获取最大值
7.获取最小值
8.一个数的n次幂
第一个数传底数,第二个数传n次方
9.四舍五入
10.返回一个数的平方根
11.判断一个数是否是2的n次方
返回值是 true or false
12.判断正负数
0被认为是正数返回1
负数返回-1
————一般不停计算————
1.插值运算
Lerp函数公式
规则
插值运算用法一
默认start=0
插值运算用法二
默认start=0;result=0;time=0;
示例:使用线性插值实现一个方块跟随另一个方块移动
1.在场景中创建AB两个方块
2.创建FollowCube脚本将其挂载给A
3.代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowCube : MonoBehaviour
{
public Transform B;
public float moveSpeed;
private Vector3 pos;
private Vector3 bNowPos;
private Vector3 startPos;
private float time;
void Update()
{
// 第一种 先快后慢的形式
//pos = transform.position;
//pos.x = Mathf.Lerp(pos.x, B.position.x, Time.deltaTime * moveSpeed);
//pos.y = Mathf.Lerp(pos.y, B.position.y, Time.deltaTime * moveSpeed);
//pos.z = Mathf.Lerp(pos.z, B.position.z, Time.deltaTime * moveSpeed);
//this.transform.position = pos;
// 第二种 匀速运动
if (bNowPos != B.transform.position)
{
time = 0;
bNowPos = B.transform.position;
startPos = this.transform.position;
}
time += Time.deltaTime;
pos.x = Mathf.Lerp(startPos.x, bNowPos.x, time * moveSpeed);
pos.y = Mathf.Lerp(startPos.y, bNowPos.y, time * moveSpeed);
pos.z = Mathf.Lerp(startPos.z, bNowPos.z, time * moveSpeed);
this.transform.position = pos;
}
}
两种方法对应先快后慢和匀速
演示视频如下
Lerp方法实现第一种方式
Lerp方法实现第二种方式