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. 前言

在这里插入图片描述
从这几部分学习

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.mzph.cn/news/638501.shtml

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

相关文章

Spring Boot实现统一异常处理的技术解析

引言 在软件开发过程中,异常处理是非常重要的一环。一个好的异常处理机制可以帮助我们更好地定位问题,提高代码的可维护性和稳定性。Spring Boot作为一款轻量级的Java开发框架,提供了一种简单而高效的方式来实现统一异常处理。本文将详细介绍…

springboot 3 + mysql8 + flyway 数据库版本管理

1、flyway flyway官方文档地址:https://documentation.red-gate.com/fd 对于不怎么看文档的我来说: 1)flyway是个管理数据库版本的工具,可以对不同环境的sql进行迁移操作。 2)优点:初始化、后期数据的管理…

java使用jsch处理软链接判断是否文件夹

前言 这一次主要是碰到一个问题。因为使用jsch去读取文件的时候,有一些文件它是使用软链接制作的一个映射。因为这里面有一个问题。如果它是软链接你就无法判断他到底是文件。还是文件夹?因为他没有提供可以直接读取的方法,用权限信息去判断…

Nomogram文献分析:提取数据

前言 今天教大家如何分析Nomogram类型的文章,并使用我们开发的系统零代码提取数据。 系统地址:https://clinicaldata.fun/ 要分析的文章:https://pubmed.ncbi.nlm.nih.gov/36504658/ 。这是一篇典型的mimic-iii数据分析的套路,…

srm-50——攻防世界

可以知道这道题是二类题型,你完成某个事情给你flag 我们输入正确的东西,给“flag” 运行一下可以知道这些关键词 直接关键词在字符串里面 找到运行得到的东西 INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) {HMODULE Mo…

vue.js js 雪花算法ID生成 vue.js之snowFlake算法

随着前端业务越来越复杂,自定义表单数据量比较大,每条数据的id生成则至关重要。想到前期IOS中实现的雪花算法ID,照着其实现JS版本,供大家学习参考。 一、库的建立引入 在你项目中创建一个snowFlake.js的文件:拷贝以下…

【2020】百度校招Java研发工程师笔试卷(第二批)算法题

贴一下我去年9月份写的博客 三道编程题,一道数学题,两道图论,哎嘿嘿,我就是不会做,哎嘿嘿,哭了。。。 一.最小值 牛牛给度度熊出了一个数学题,牛牛给定数字n,m,k,希望度度熊能找到…

Python使用graphviz绘制模块间数据流

graphviz官方参考链接: http://www.graphviz.org/documentation/ https://graphviz.readthedocs.io/en/stable/index.html 文章目录 需求描述环境配置实现思路代码实现 需求描述 根据各模块之间的传参关系绘制出数据流,如下图所示: 并且生成…

【SpringBoot】SpringBoot 项目初始化方法

github 搜索 springboot 模板 github 搜索 springboot 模板,拉取现成代码。 SpringBoot 官方的模板生成器 SpringBoot 官方的模板生成器(https://start.spring.io/) 在 IDEA 开发工具中生成 这里我修改成阿里的镜像主要是要使用 Java8。 …

YOLOv8 更换主干网络之 HGNetV2

论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 YOLOv8 更换方式 YOLOv8 想用这个主干直接换就行了,因为项目里面已经集成了,写一个…

[python]使用pyqt5搭建yolov8钢筋计数一次性钢材计数系统

【官方框架地址】 github地址:https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8是一种先进的深度学习模型,用于目标检测和识别。在钢筋计数任务中,Yolov8可以有效地识别和计数图像中的钢筋。下面是对如何使用Yolov8实现钢筋…

【嵌入式移植】4、U-Boot源码分析1—Makefile

U-Boot源码分析1—Makefile 1 分析思路2 u-boot源码目录结构3 Makefile源码3.1 版本号3.2 环境变量3.3 Beautify output3.4 输出文件的目录设置、PHONY目标3.6 目录信息3.5 Source Code Checker3.7 设置单独编译模块、PHONY目标3.8 获取宿主机的架构和系统3.9 设置交叉编译工具…

一个非常流行的R语言调色板:RColorBrewer

R 语言有许多非常优秀的调色板,本文就介绍一个非常流行的,我也经常在用的调色板 R 包:RColorBrewer。 安装 install.packages("RColorBrewer") 加载 library(RColorBrewer) library(knitr) 初探 ?RColorBrewer 在帮助页面可以看到…

Python实现单因素方差分析

Python实现单因素方差分析 1.背景 正念越来越受到人们关注,正念是一种有意的、不加评判的对当下的注意觉察。可以通过可以通过观呼吸、身体扫描、正念饮食等多种方式培养。 为了验证正念对记忆力的影响,选取三组被试分别进行正念训练,运动训…

使用STM32的UART实现蓝牙通信

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!&#x1f447…

解密.dataru被困的数据:如何应对.dataru勒索病毒威胁

导言: 在数字时代,勒索病毒如.dataru正在不断演变,威胁着用户的数据安全。本文91数据恢复将深入介绍.dataru勒索病毒的特点、被加密数据的恢复方法,以及预防措施,帮助您更好地了解并对抗这一数字威胁。当面对被勒索病…

基于SpringBoot的在线问卷调查管理系统

基于SpringBoot的在线问卷调查管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台主页 问卷列表 问卷详情 管理员界面 摘要 基于Spring Boot的在线问卷调…

JVM篇--垃圾回收器高频面试题

1 你知道哪几种垃圾收集器,各自的优缺点是啥,重点讲下cms和G1,包括原理,流程,优缺点? 1)首先简单介绍下 有以下这些垃圾回收器 Serial收集器: 单线程的收集器,收集垃圾时…

云贝教育 |【OceanBase】OBCA认证考试预约流程

一、OBCA账号登录/注册,链接 https://www.oceanbase.com/ob/login/mobile?gotohttps%3A%2F%2Fwww.oceanbase.com%2Ftraining%2Fdetail%3Flevel%3DOBCA 注册完之后,请点击右上“登录”进行实名认证 OBCA考试报名链接:https://www.oceanbase.…

stm32cubemx下载以及安装【最新版本傻瓜式教程】

一、官网 https://www.st.com/zh/development-tools/stm32cubemx.html 二、下载【废话不多说,按照图示所圈进行】 没有登录账号的建议先注册登录再进行下载,这样省去后面认证的麻烦。 选择自己电脑对应环境的版本,我的是windows11&#xf…