Unity3D学习之Unity基础——3D数学

文章目录

  • 1. 前言
  • 2 Mathf和Math基础
    • 2.1 一般用于只计算一次的函数
      • 2.1.1 PI Π PI
      • 2.1.2 取绝对值 Abs
      • 2.1.3 向上取整 CeilToInt
      • 2.1.4 向下取整 FloorToInt
      • 2.1.5 钳制函数 Clamp
      • 2.1.6 获取最大值 Max
      • 2.1.7 获取最小值 Min
      • 2.1.8 一个数的n次幂 Pow
      • 2.1.9 四舍五入 RoundToInt
      • 2.1.10 平方根 Sqrt
      • 2.1.11 判断是否是2的n次方 IsPowerOfTwo
      • 2.1.12 判断正负数 Sign
      • 2.1.13 其他函数
    • 2.2 一般用于不停计算的函数
      • 2.2.1 插值运算 Lerp
  • 3 三角函数
    • 3.1 弧度角度相互转换
    • 3.2 三角函数
    • 3.3 反三角函数
    • 3.4 把一个物体按正弦曲线进行移动
    • 3.5 坐标系
      • 3.5.1 坐标转换
  • 4 向量
    • 4.1 向量模长和单位向量
      • 4.1.1 向量
      • 4.1.2 两点决定一个向量
      • 4.1.3 零向量和复向量
      • 4.1.4 向量的模长
    • 4.2 单位向量
    • 4.3 向量加减乘除
      • 4.3.1 加法
      • 4.3.2 减法
      • 4.3.3 乘法除法
      • 4.3.4 unity中计算
      • 4.3.5 设置个相机跟随物体
    • 4.4 向量点乘
      • 4.4.1 使用Debug的画线
      • 4.4.2 计算点乘
      • 4.4.3 公式推导
      • 4.4.4 怪物视野范围
    • 4.5 向量叉乘
      • 4.5.1 计算叉乘
      • 4.5.2 几何意义
      • 4.5.3 完善索敌脚本
    • 4.6 插值运算
      • 4.6.1 线性插值
  • 5 四元数
    • 5.1 四元数是什么
    • 5.2 unity中的四元数
      • 5.2.1 轴角对
      • 5.2.2 四元数和欧拉角的转换
      • 5.2.3 四元数相乘
    • 5.3 四元数的常用方法
      • 5.3.1 单位四元数
      • 5.3.2 插值运算
      • 5.3.3 向量指向转四元素
      • 5.3.4 利用LookRotation实现LookAt方法
      • 5.3.5 利用 Slper实现摄像机匀速或先快后慢看向目标
      • 5.4 四元数计算
      • 5.4.1 四元数相乘
      • 5.4.2 四元数乘向量
      • 5.4.3 模拟飞机游戏中发射不同类型子弹的方法
      • 5.4.4 实现各类摄像机跟随效果


1. 前言

Unity3D学习之Unity基础——3D数学_第1张图片
从这几部分学习

2 Mathf和Math基础

2.1 一般用于只计算一次的函数

在这里插入图片描述
都是用于提供数学计算的

Mathf是结构体,Math是类
Mathf是Math的第二次封装,更适合游戏开发

2.1.1 PI Π PI

在这里插入图片描述

2.1.2 取绝对值 Abs

Unity3D学习之Unity基础——3D数学_第2张图片

2.1.3 向上取整 CeilToInt

Unity3D学习之Unity基础——3D数学_第3张图片

2.1.4 向下取整 FloorToInt

在这里插入图片描述

2.1.5 钳制函数 Clamp

Unity3D学习之Unity基础——3D数学_第4张图片
第一个参数,如果在第二个和第三个参数之间,就是合法的
如果小于第二个参数,则返回第二个参数
如果大于第三个参数,则返回第三个参数

2.1.6 获取最大值 Max

Unity3D学习之Unity基础——3D数学_第5张图片

2.1.7 获取最小值 Min

Unity3D学习之Unity基础——3D数学_第6张图片

2.1.8 一个数的n次幂 Pow

Unity3D学习之Unity基础——3D数学_第7张图片

4的2次方,
2的3次方

2.1.9 四舍五入 RoundToInt

Unity3D学习之Unity基础——3D数学_第8张图片

2.1.10 平方根 Sqrt

Unity3D学习之Unity基础——3D数学_第9张图片
结果是2,4,8

2.1.11 判断是否是2的n次方 IsPowerOfTwo

Unity3D学习之Unity基础——3D数学_第10张图片
true
true
false
true

2.1.12 判断正负数 Sign

正数是1,负数是-1
Unity3D学习之Unity基础——3D数学_第11张图片

2.1.13 其他函数

有三角函数计算这部分会在后面专门开个部分讲

2.2 一般用于不停计算的函数

2.2.1 插值运算 Lerp

Unity3D学习之Unity基础——3D数学_第12张图片

  1. 用法一
    在这里插入图片描述

Unity3D学习之Unity基础——3D数学_第13张图片
先快后慢
2)用法二

Unity3D学习之Unity基础——3D数学_第14张图片

Unity3D学习之Unity基础——3D数学_第15张图片

匀速运动

做跟随运动的时候,有两种方法,一种是先快后慢,一种是匀速运动

Unity3D学习之Unity基础——3D数学_第16张图片
第二种
Unity3D学习之Unity基础——3D数学_第17张图片

Unity3D学习之Unity基础——3D数学_第18张图片

Unity3D学习之Unity基础——3D数学_第19张图片

3 三角函数

Unity3D学习之Unity基础——3D数学_第20张图片

Unity3D学习之Unity基础——3D数学_第21张图片

3.1 弧度角度相互转换

Unity3D学习之Unity基础——3D数学_第22张图片

3.2 三角函数

使用需要传入弧度值
Unity3D学习之Unity基础——3D数学_第23张图片

3.3 反三角函数

通过三角函数得到的值,得到相应的弧度,就是上面这个函数里传入值

Unity3D学习之Unity基础——3D数学_第24张图片

3.4 把一个物体按正弦曲线进行移动

Unity3D学习之Unity基础——3D数学_第25张图片

Unity3D学习之Unity基础——3D数学_第26张图片

3.5 坐标系

Unity3D学习之Unity基础——3D数学_第27张图片
Unity3D学习之Unity基础——3D数学_第28张图片

Unity3D学习之Unity基础——3D数学_第29张图片
Unity3D学习之Unity基础——3D数学_第30张图片

Unity3D学习之Unity基础——3D数学_第31张图片
Unity3D学习之Unity基础——3D数学_第32张图片

Unity3D学习之Unity基础——3D数学_第33张图片
Camera组件里的视口坐标系
在这里插入图片描述

3.5.1 坐标转换

Unity3D学习之Unity基础——3D数学_第34张图片
Unity3D学习之Unity基础——3D数学_第35张图片
Unity3D学习之Unity基础——3D数学_第36张图片
Unity3D学习之Unity基础——3D数学_第37张图片

4 向量

Unity3D学习之Unity基础——3D数学_第38张图片

4.1 向量模长和单位向量

4.1.1 向量

Unity3D学习之Unity基础——3D数学_第39张图片

4.1.2 两点决定一个向量

Unity3D学习之Unity基础——3D数学_第40张图片

Unity3D学习之Unity基础——3D数学_第41张图片

4.1.3 零向量和复向量

Unity3D学习之Unity基础——3D数学_第42张图片

4.1.4 向量的模长

Unity3D学习之Unity基础——3D数学_第43张图片
如果这个向量不是两个点的向量,则是原点到这个点的距离

4.2 单位向量

Unity3D学习之Unity基础——3D数学_第44张图片
Unity3D学习之Unity基础——3D数学_第45张图片v
v

4.3 向量加减乘除

4.3.1 加法

向量 + 向量 = 新向量
位置 + 向量 = 新位置
向量 + 位置 = 新位置

4.3.2 减法

位置 - 位置 = 向量
向量 - 向量 = 向量
位置 - 向量 = 位置
向量 - 位置 没有意义

4.3.3 乘法除法

向量 * / = 向量
向量 * / 正数 = 方向不变,放大缩小模长
向量 * / 正数 = 方向变反,放大缩小模长
向量 * 0,得到零向量

4.3.4 unity中计算

Unity3D学习之Unity基础——3D数学_第46张图片

4.3.5 设置个相机跟随物体

摄像机一直在物体后方4米,向上偏7米的位置
Unity3D学习之Unity基础——3D数学_第47张图片
把target拖入
这样位置是没问题,但是没有看向物体
在这里插入图片描述
加一句就行

4.4 向量点乘

Unity3D学习之Unity基础——3D数学_第48张图片

4.4.1 使用Debug的画线

使用Debug的画线方法
Unity3D学习之Unity基础——3D数学_第49张图片
Unity3D学习之Unity基础——3D数学_第50张图片

给两个物体画一条射线,将终点 换成变量,在ins里拖入
在这里插入图片描述

Unity3D学习之Unity基础——3D数学_第51张图片

4.4.2 计算点乘

Unity3D学习之Unity基础——3D数学_第52张图片

4.4.3 公式推导

如果有巡逻怪,他有个视野范围,此时需要计算角度,判断是否在这个视野范围内,需要一个计算公式
Unity3D学习之Unity基础——3D数学_第53张图片

Unity3D学习之Unity基础——3D数学_第54张图片
1) 计算出两物体的单位向量
2) 用反三角函数得出角度

在这里插入图片描述
dot中第一个是起点的单位向量,第二个是终点即起点到终点的向量的单位向量
算出的范围在 0- 180度之间
怎么算出他在左右方向,在后面讲

这个API在 unity中提供两个向量夹角的方法
Vector3.Angle
在这里插入图片描述

4.4.4 怪物视野范围

Unity3D学习之Unity基础——3D数学_第55张图片
1)首先判断距离
2)再判断角度
Unity3D学习之Unity基础——3D数学_第56张图片

也可以直接用API
在这里插入图片描述

4.5 向量叉乘

Unity3D学习之Unity基础——3D数学_第57张图片

4.5.1 计算叉乘

在这里插入图片描述

4.5.2 几何意义

Unity3D学习之Unity基础——3D数学_第58张图片
同时垂直于A向量和B向量
AXB向量垂直于A和B组成的平面
A X B = -( B X A )

Unity3D学习之Unity基础——3D数学_第59张图片

Unity3D学习之Unity基础——3D数学_第60张图片
使用函数时参数互换的话得到结果相反

4.5.3 完善索敌脚本

Unity3D学习之Unity基础——3D数学_第61张图片

1)Unity3D学习之Unity基础——3D数学_第62张图片
右后和左后同理
2)
Unity3D学习之Unity基础——3D数学_第63张图片

4.6 插值运算

4.6.1 线性插值

Unity3D学习之Unity基础——3D数学_第64张图片

Unity3D学习之Unity基础——3D数学_第65张图片
Unity3D学习之Unity基础——3D数学_第66张图片
Unity3D学习之Unity基础——3D数学_第67张图片

5 四元数

首先讲欧拉角
把角度分成按X,Y,Z三个轴进行旋转
Unity3D学习之Unity基础——3D数学_第68张图片

Unity3D学习之Unity基础——3D数学_第69张图片Unity3D学习之Unity基础——3D数学_第70张图片
Unity3D学习之Unity基础——3D数学_第71张图片
Unity3D学习之Unity基础——3D数学_第72张图片
Unity3D学习之Unity基础——3D数学_第73张图片
所以为什么使用四元数
Unity3D学习之Unity基础——3D数学_第74张图片

5.1 四元数是什么

Unity3D学习之Unity基础——3D数学_第75张图片

Unity3D学习之Unity基础——3D数学_第76张图片
Unity3D学习之Unity基础——3D数学_第77张图片
Q = [cos(角度/2),sin(角度/2)n]

5.2 unity中的四元数

5.2.1 轴角对

Unity3D学习之Unity基础——3D数学_第78张图片
第一种方法(一般不用)
Unity3D学习之Unity基础——3D数学_第79张图片
在这里插入图片描述
第二种方法(简单记这个)
在这里插入图片描述
在这里插入图片描述

绕Vector3.right 旋转60度

5.2.2 四元数和欧拉角的转换

Unity3D学习之Unity基础——3D数学_第80张图片

5.2.3 四元数相乘

四元素相乘代表旋转四元数
在这里插入图片描述
表示按面朝向旋转

5.3 四元数的常用方法

Unity3D学习之Unity基础——3D数学_第81张图片

5.3.1 单位四元数

Unity3D学习之Unity基础——3D数学_第82张图片
Unity3D学习之Unity基础——3D数学_第83张图片
表示没有旋转

5.3.2 插值运算

Unity3D学习之Unity基础——3D数学_第84张图片

一般使用Slerp
在这里插入图片描述
Unity3D学习之Unity基础——3D数学_第85张图片
start要实时更新

在这里插入图片描述

5.3.3 向量指向转四元素

Unity3D学习之Unity基础——3D数学_第86张图片
Unity3D学习之Unity基础——3D数学_第87张图片
在这里插入图片描述

5.3.4 利用LookRotation实现LookAt方法

Unity3D学习之Unity基础——3D数学_第88张图片

5.3.5 利用 Slper实现摄像机匀速或先快后慢看向目标

Unity3D学习之Unity基础——3D数学_第89张图片

5.4 四元数计算

5.4.1 四元数相乘

代表两个旋转量的叠加,相当于旋转
在这里插入图片描述

5.4.2 四元数乘向量

Unity3D学习之Unity基础——3D数学_第90张图片
返回一个新向量,获得旋转对应四元数的旋转向量

Unity3D学习之Unity基础——3D数学_第91张图片
相当于获得了新的方向向量

5.4.3 模拟飞机游戏中发射不同类型子弹的方法

Unity3D学习之Unity基础——3D数学_第92张图片

Unity3D学习之Unity基础——3D数学_第93张图片

5.4.4 实现各类摄像机跟随效果

Unity3D学习之Unity基础——3D数学_第94张图片
Unity3D学习之Unity基础——3D数学_第95张图片

画条线观测一下

Unity3D学习之Unity基础——3D数学_第96张图片
Unity3D学习之Unity基础——3D数学_第97张图片
实现了1,3

在这里插入图片描述

根据鼠标中间输入修改dis的值,从而修改摄像机离物体的距离
实现了2

Unity3D学习之Unity基础——3D数学_第98张图片
实现4 .5

你可能感兴趣的:(学习,unity,笔记)