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

news2024/11/13 8:04:22

文章目录

  • 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

在这里插入图片描述

  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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL主从复制原理与实践:从配置到故障监控

文章目录 前言主从复制原理复制源主节点的工作从节点的工作复制流程的设计 主从复制环境搭建一、主从节点配置二、从节点开启复制步骤1、备份主节点的数据2、将数据同步到从节点3、从节点复制参数配置 三、验证复制环境 主从复制故障监控监控主从复制状态监控主从复制延迟 总结…

Rancher部署k8s集群测试安装nginx(节点重新初始化方法,亲测)

目录 一、安装前准备工作计算机升级linux内核时间同步Hostname设置hosts设置关闭防火墙,selinux关闭swap安装docker 二、安装rancher部署rancher 三、安装k8s安装k8s集群易错点,重新初始化 四、安装kutectl五、测试安装nginx工作负载 一、安装前准备工作…

Python中二维数据(数组、列表)索引和切片的Bug

Python中有关数据结构索引和切片引起的Bug 一维数据索引和切片一维数组一维列表 二维数据的索引和切片二维数组二维(错误)列表 一维数据索引和切片 一维数组 对于一维数据进行索引和切片操作,大家都比较熟悉通过下面代码进行实现 import numpy as np data np.ra…

实验七 RMAN恢复管理器

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Linux的权限(3)

目录 文件类型 ​d目录文件 -普通文件 l链接文件 b块设备文件 p管道文件 c字符设备文件 文件权限 目录权限 umask 粘滞位 Q1umask权限默认值664/775 Q2"可执行性"权限 Q3"删除"权限 Q4怎么共享一批文件 【1】粘滞位 【2】添加交互人员到所…

SpringBoot跨域问题解决

前端访问后台接口时,浏览器报错,跨域无法访问。 报错信息如下: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the requested resource. 经过一番百度之后&#…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

如何用H5+CSS+JS写一个简单的招聘网站

大家好,我是猿码叔叔,一个 Java 语言开发者。应网友要求,写一个简单的招聘页面。由于技术原因,页面相对简单,朋友们可以选择性的阅读,如果对您有帮助,也可直接拿去使用,因为接下来除…

Linux ---- 小玩具

目录 一、安装: 1、佛祖保佑,永不宕机,永无bug 2、小火车 3、艺术字和其它 天气预报 艺术字 4、会说话的小牦牛 5、其他趣味图片 我爱你 腻害 英雄联盟 帅 忍 龙 你是猪 福 好运连连 欢迎 加油 想你 忘不了你 我错了 你…

介绍几个免费的国内chatgpt网站

概述:水点文章。 第一:chataa网站 chataa (chat778.com) 进去之后注册一下,即可免费使用。 第二:AlchatOS网站 AIchatOS 第三:ChatGPT在线聊天 ChatGPT在线聊天 (zxf7460.cn) 第四:说我真帅&#xff0…

重构改善既有代码的设计-学习(一):封装

1、封装记录(Encapsulate Record) 一些记录性结构(例如hash、map、hashmap、dictionary等),一条记录上持有什么字段往往不够直观。如果其使用范围比较宽,这个问题往往会造成许多困扰。所以,记录…

pytest + allure(windows)安装

背景 软硬件环境: windows11,已安装anaconda,python,pycharm用途:使用pytest allure 生成报告allure 依赖java,点击查看java安装教程 allure 下载与安装 从 allure下载网址下载最新版本.zip文件 放在自…

火速收藏!2024 新年微信红包封面领取全攻略

2024“龙”重登场!今年有哪些令人期待的红包封面? 前方大批精美红包封面来袭,全新品牌氛围红包封面上线,支持品牌定制特色氛围元素,沉浸感受浓浓年味儿,收获满满惊喜! 新年开好运,微…

7 python快速上手

数据类型(下) 数据类型(下)1.集合(set)1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 集合的存储原理1.5.2 元素必须可哈希1.5.3 查找速度特别快1.5.4 对比和嵌套 强插:None类型2.字典…

CloudPanel file-manager/backend/makefile接口存在远程命令执行漏洞CVE-2023-35885

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. CloudPanel 简介 微信公众号搜索:南风漏…

Vulnhub靶机:EvilBox-One

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:EvilBox-One(10.0.2.25) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/e…

python中Pytest常用的插件

前言 除了框架本身提供的功能外,Pytest还支持上百种第三方插件,良好的扩展性可以更好的满足大家在用例设计时的不同需求。本文将为大家详细介绍下面5项常用的插件。 1. 用例依赖 编写用例的时候,我们会注意用例之间的独立性,但部…

Python爬虫IP池

目录 一、介绍 1.1 为什么需要IP池? 1.2 IP池与代理池的区别 二、构建一个简单的IP池 三、注意事项 一、介绍 在网络爬虫的世界中,IP池是一个关键的概念。它允许爬虫程序在请求网页时使用多个IP地址,从而降低被封禁的风险,提高…

【2024最新】如何有效搭建自动化测试框架?

前言 最近好多小伙伴都在说接口自动化测试,那么究竟什么是接口自动化测试呢?让我们一起往下看就知道了,首先我们得先弄清楚下面这个问题。 为什么要做(自动化)接口测试? 1、由于现在各个系统的复杂度不断…

Jenkins环境配置篇-更换插件源

作为持续集成的利器 Jenkins 已经得到了广泛地应用,仅仅作为一个工具,Jenkins 已然有了 自己的生态圈,支持其的 plugin 更是超过 1300。在实际中如何使用以及如何更好地使用 jenkins,一直是大家在实践并讨论的。本系列文章将会从如…