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

发布时间:2024年01月18日

文章目录


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

在这里插入图片描述

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

在这里插入图片描述
先快后慢
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
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

文章来源:https://blog.csdn.net/Lmz_0314/article/details/135651416
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。