Mathf知识点

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方法实现第二种方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值