【Unity】Mathf

【Unity】Mathf

1.Math与Mathf

推荐使用Mathf

  • Math是C#中封装好的用于数学计算的工具 类,Math位于System命名空间中
  • Mathf是Unity中封装好的用于数学计算的工具 结构体,Mathf位于UnityEngine命名空间中
  • Mathf比Math方法多,不仅包含Math中的方法 还多了适用于游戏开发的方法

2.常用成员

  • Π PI
Debug.Log(Mathf.PI);//3.141593
  • 绝对值 Abs
Debug.Log(Mathf.Abs(-1));//1
  • 向上取整 CeilToInt
Debug.Log(Mathf.CeilToInt(1.1f));//2
  • 向下取整 FloorToInt
Debug.Log(Mathf.FloorToInt(1.99f));//1
  • 钳制函数 Clamp
Debug.Log(Mathf.Clamp(5, 1, 10));//5
Debug.Log(Mathf.Clamp(0, 1, 10));//1
Debug.Log(Mathf.Clamp(11, 1, 10));//10
  • 最大值 Max
Debug.Log(Mathf.Max(1, 2, 3, 4, 5, 8, 9, 10));//10
  • 最小值 Min
Debug.Log(Mathf.Min(5, 6, 8, 1, 8));//1
  • 数的n次幂 Pow
Debug.Log(Mathf.Pow(2, 4));//16
  • 四舍五入 RoundToInt
Debug.Log(Mathf.RoundToInt(1.5f));//2
Debug.Log(Mathf.RoundToInt(1.49f));//1
  • 平方根 Sqrt
Debug.Log(Mathf.Sqrt(64));//8
  • 是否是2的n次方 IsPowerOfTwo
Debug.Log(Mathf.IsPowerOfTwo(4));//true
Debug.Log(Mathf.IsPowerOfTwo(3));//false
  • 是否正负数 Sign
Debug.Log(Mathf.Sign(0));//1
Debug.Log(Mathf.Sign(-10));//-1
Debug.Log(Mathf.Sign(11));//1
  • 角度转换成弧度 Deg2Rad
180° == Π 弧度
Debug.Log(30 * Mathf.Deg2Rad);//0.5235988
  • 弧度转换角度 Rad2Deg
Debug.Log(0.5235988 * Mathf.Rad2Deg);//30.0000017482986
  • 正弦(弧度) Sin
Debug.Log(Mathf.Sin(30 * Mathf.Deg2Rad));//0.5
  • 余弦(弧度) Cos
Debug.Log(Mathf.Cos(60 * Mathf.Deg2Rad));//0.5
  • 反正弦 得到弧度 Asin
Debug.Log(Mathf.Asin(0.5f) * Mathf.Rad2Deg);//30
  • 反余弦 得到弧度 Acos
Debug.Log(Mathf.Acos(0.5f) * Mathf.Rad2Deg);//60

3.插值Mathf.Lerp

公式 Lerp : result = start + (end - start) * t

private float start = 0;
private float end = 0;
private float time = 0;
// Update is called once per frame
void Update()
{
    //插值Lerp : result = start + (end - start) * t
    //先快后慢 (end - start) 由大到小, 无限接近 但不会到达目标
    start = Mathf.Lerp(start, 10, Time.deltaTime);

    //优化 匀速变化 会达到目标
    time += Time.deltaTime;
    end = Mathf.Lerp(start, 10, time);
}

4.案例跟随

public GameObject Player;
public float speed;
private Vector3 pos;

private Vector3 targetPos;
private Vector3 startPos;
private float time;

void Update()
{
    //先快后慢
    //pos = transform.position;
    //pos.x = Mathf.Lerp(pos.x, Player.transform.position.x, Time.deltaTime * speed);
    //pos.y = Mathf.Lerp(pos.y, Player.transform.position.y, Time.deltaTime * speed);
    //pos.z = Mathf.Lerp(pos.z, Player.transform.position.z, Time.deltaTime * speed);
    //transform.position = pos;

    //匀速
    if (targetPos != Player.transform.position)
    {
        time = 0;
        targetPos = Player.transform.position;
        startPos = transform.position;
    }
    time += Time.deltaTime;
    pos.x = Mathf.Lerp(startPos.x, targetPos.x, time * speed);
    pos.y = Mathf.Lerp(startPos.y, targetPos.y, time * speed);
    pos.z = Mathf.Lerp(startPos.z, targetPos.z, time * speed);
    transform.position = pos;
}

因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/592910.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32单片机实战开发笔记-I2C通讯总线【wulianjishu666】

嵌入式单片机开发实战例程合集: 链接:https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码:28ab I2C模块测试 功能描述 I2C总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序&am…

QCC3071/QCC3081/QCC3083/QCC3084/QCC5171/QCC5181/QCC3091/QCC3095平台LDAC解码

QCC3071/QCC3081/QCC3083/QCC3084/QCC5171/QCC5181/QCC3091/QCC3095平台LDAC解码 LDAC Decoder Evaluation Kit for QCC5181 and QCC5171 (The 5181 Kit) 随着Qualcomm DSP向下开放,QCC3071/QCC3081/QCC3083/QCC3084目前可以可以实现LDAC Decoder。 QCC3071/QCC3…

MATLAB 多项式

MATLAB 多项式 MATLAB将多项式表示为行向量,其中包含按幂次降序排列的系数。例如,方程P(x) X 4 7 3 - 5 9可以表示为 p [1 7 0 -5 9]; 求值多项式 polyval函数用于求一个特定值的多项式。例如,在 x 4 时,计算我们之前的多项式…

运行时数据区-基础

运行时数据区-基础 为什么学习运行时数据区Java内存区域(运行时数据区域)和内存模型(JMM) 区别组成部分(jdk1.7 / jdk1.8)从线程隔离性分类与类加载的关系每个区域的功能参考文章 为什么学习运行时数据区 …

Amazon EKS创建S3数据存储卷

亚马逊相关文档 1、创建适用于 Amazon S3的IAM策略 创建存储桶amazoneks {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "s3express:CreateSession","Resource": &…

Java零基础入门到精通_Day 9

1.ArrayList 编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需求,更适应不了变化的需求,那么,此时该如何选择呢? 集 合 集合类的特点:提供一种存储空间可变的存储模型,存储的…

2024年 Java 面试八股文——SpringBoot篇

目录 1. 什么是 Spring Boot? 2. 为什么要用SpringBoot 3. SpringBoot与SpringCloud 区别 4. Spring Boot 有哪些优点? 5. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 6. Spring Boot 支持哪些日志框架&#…

信息系统项目管理师0086:项目内外部运行环境(6项目管理概论—6.2项目基本要素—6.2.5项目内外部运行环境)

点击查看专栏目录 文章目录 6.2.5项目内外部运行环境1.组织过程资产2.组织内部的事业环境因素3.组织外部的事业环境因素6.2.5项目内外部运行环境 项目在内部和外部环境中存在和运作,这些环境对价值交付有不同程度的影响。内部和外部环境可能会影响规划和其他项目活动。这些影响…

《苍穹外卖》Day12部分知识点记录——数据统计-Excel报表

一、工作台 需求分析和设计 接口设计 今日数据接口订单管理接口菜品总览接口套餐总览接口订单搜索(已完成)各个状态的订单数量统计(已完成) 代码实现 今日数据接口 1. WorkspaceController 注意不要导错包了 package com.sk…

【Linux IO基础】缓冲区

概念 缓冲区的主要作用是提高效率 --- 提高使用者的效率,因为有缓冲区的存在,我们可以积累一部分再统一发送,提高发送的效率。 刷新方式 缓冲区因为能够暂存数据,必定要有一定的刷新方式: 一般策略: 无…

【JavaEE】线程的概念

文章目录 1、什么是线程2、进程和线程的区别3、多线程的概述4、在Java中实现多线程的方法1.继承Thread类2.实现Runnable接口3.使用匿名内部类来继承Thread类,实现run方法4.使用匿名内部类来实现Runnable接口,实现run方法5.使用 lambda表达式 1、什么是线…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic,python都在/usr/bin中,一共是两个版本的python,一个是python3.8,另一个是python2.7。 问题发现 当安装anaconda后,并且将anaconda的bin目录加入到系统环境中时候,…

【微服务】——Docker 基础知识

这里写自定义目录标题 1.1 了解Docker1.1.1应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker——未实践 2.Dock…

【莫比乌斯变换-03】python实现圆对圆的变换

文章目录 一、说明二、python实现复平面的莫比乌斯变换三、线的变换四、画笑脸 一、说明 我们在前面的文章中,叙述了莫比乌斯变换的复数分析,以及种种几何属性,本篇中叙述如何程序地实现:复平面上的圆在莫比乌斯变换下的图像是另…

【ONE·基础算法 || 回溯和剪枝(暴搜/深搜)】

总言 主要内容:编程题举例,熟悉理解回溯剪枝类题型(如何画决策树,如何使用深搜进行递归,如何运用剪枝,如何在一维数组/二维数组中使用)。 文章目录 总言1、回溯和剪枝2、全排列(med…

【机器学习】BK- SDM与LCM的融合策略在文本到图像生成中的应用

突破边缘设备限制:BK-SDM与LCM的融合策略在文本到图像生成中的应用 一、引言二、稳定扩散算法的挑战与现状三、BK-SDM与LCM的融合策略利用高质量图像-文本对进行训练为LCM量身定制高级蒸馏过程 四、结论与展望 一、引言 随着人工智能技术的飞速发展,文本…

数据结构(十)----图

目录 一.图的概念 1.图的定义 2.图的类别 3.图的性质 4.几种特殊形态的图 二.图的存储结构 1.邻接矩阵(顺序存储) 2.邻接表(顺序链式存储) 3.十字链表 4.邻接多重表 四.图的遍历 1.广度优先遍历(BFS&#…

Mysql复习笔记: 基础概念(待补充)

一. 基础概念 通用概念: 网络连接必须得分配给一个线程去进行处理,由一个线程来监听请求以及读取请求数据,比如从网络连接中读取和解析出来一条我们的系统发送过去的SQL语句 在数据库中,哪怕执行一条SQL语句,其实也可以是一个独立…

Python | Leetcode Python题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; class Solution:def generateMatrix(self, n: int) -> List[List[int]]:matrix [[0] * n for _ in range(n)]num 1left, right, top, bottom 0, n - 1, 0, n - 1while left < right and top < bottom:for col in range(left, r…

pandas学习笔记11

DataFrame结构 DataFrame 一个表格型的数据结构&#xff0c;既有行标签&#xff08;index&#xff09;&#xff0c;又有列标签&#xff08;columns&#xff09;&#xff0c;它也被称异构数据表&#xff0c;所谓异构&#xff0c;指的是表格中每列的数据类型可以不同&#xff0c;…
最新文章