文章目录
- 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. 前言
从这几部分学习
2 Mathf和Math基础
2.1 一般用于只计算一次的函数
都是用于提供数学计算的
Mathf是结构体,Math是类
Mathf是Math的第二次封装,更适合游戏开发
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
4的2次方,
2的3次方
2.1.9 四舍五入 RoundToInt
2.1.10 平方根 Sqrt
结果是2,4,8
2.1.11 判断是否是2的n次方 IsPowerOfTwo
true
true
false
true
2.1.12 判断正负数 Sign
正数是1,负数是-1
2.1.13 其他函数
有三角函数计算这部分会在后面专门开个部分讲
2.2 一般用于不停计算的函数
2.2.1 插值运算 Lerp
- 用法一
先快后慢
2)用法二
匀速运动
做跟随运动的时候,有两种方法,一种是先快后慢,一种是匀速运动
第二种
3 三角函数
3.1 弧度角度相互转换
3.2 三角函数
使用需要传入弧度值
3.3 反三角函数
通过三角函数得到的值,得到相应的弧度,就是上面这个函数里传入值
3.4 把一个物体按正弦曲线进行移动
3.5 坐标系
Camera组件里的视口坐标系
3.5.1 坐标转换
4 向量
4.1 向量模长和单位向量
4.1.1 向量
4.1.2 两点决定一个向量
4.1.3 零向量和复向量
4.1.4 向量的模长
如果这个向量不是两个点的向量,则是原点到这个点的距离
4.2 单位向量
v
4.3 向量加减乘除
4.3.1 加法
向量 + 向量 = 新向量
位置 + 向量 = 新位置
向量 + 位置 = 新位置
4.3.2 减法
位置 - 位置 = 向量
向量 - 向量 = 向量
位置 - 向量 = 位置
向量 - 位置 没有意义
4.3.3 乘法除法
向量 * / = 向量
向量 * / 正数 = 方向不变,放大缩小模长
向量 * / 正数 = 方向变反,放大缩小模长
向量 * 0,得到零向量
4.3.4 unity中计算
4.3.5 设置个相机跟随物体
摄像机一直在物体后方4米,向上偏7米的位置
把target拖入
这样位置是没问题,但是没有看向物体
加一句就行
4.4 向量点乘
4.4.1 使用Debug的画线
使用Debug的画线方法
给两个物体画一条射线,将终点 换成变量,在ins里拖入
4.4.2 计算点乘
4.4.3 公式推导
如果有巡逻怪,他有个视野范围,此时需要计算角度,判断是否在这个视野范围内,需要一个计算公式
1) 计算出两物体的单位向量
2) 用反三角函数得出角度
dot中第一个是起点的单位向量,第二个是终点即起点到终点的向量的单位向量
算出的范围在 0- 180度之间
怎么算出他在左右方向,在后面讲
这个API在 unity中提供两个向量夹角的方法
Vector3.Angle
4.4.4 怪物视野范围
1)首先判断距离
2)再判断角度
也可以直接用API
4.5 向量叉乘
4.5.1 计算叉乘
4.5.2 几何意义
同时垂直于A向量和B向量
AXB向量垂直于A和B组成的平面
A X B = -( B X A )
使用函数时参数互换的话得到结果相反
4.5.3 完善索敌脚本
1)
右后和左后同理
2)
4.6 插值运算
4.6.1 线性插值
5 四元数
首先讲欧拉角
把角度分成按X,Y,Z三个轴进行旋转
所以为什么使用四元数
5.1 四元数是什么
Q = [cos(角度/2),sin(角度/2)n]
5.2 unity中的四元数
5.2.1 轴角对
第一种方法(一般不用)
第二种方法(简单记这个)
绕Vector3.right 旋转60度
5.2.2 四元数和欧拉角的转换
5.2.3 四元数相乘
四元素相乘代表旋转四元数
表示按面朝向旋转
5.3 四元数的常用方法
5.3.1 单位四元数
表示没有旋转
5.3.2 插值运算
一般使用Slerp
start要实时更新
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,3
根据鼠标中间输入修改dis的值,从而修改摄像机离物体的距离
实现了2
实现4 .5