Unity中的3D数学
3D数学(2022.11.25)
三角函数
Unity中会运用到角度制(Deg)和弧度制(Rad)的转换,弧度制是用圆的弧长来衡量角度的大小,π对应180度。这种转换在Unity中对应有两个方法:
- 角度制转弧度制:Mathf.Deg2Rad * 要转换的角度
float x = Mathf.Deg2Rad * 180;
Debug.Log(x);
打印结果:3.141593
- 弧度制转角度制:Mathf.Rad2Deg * 要转换的弧度
float y = Mathf.Rad2Deg * 3.14f;
Debug.Log(y);
打印结果:179.9088
- 三角函数函数方法:
- 正弦:Mahf.sin(float f)
- 余弦:Mathf.cos(float f)
- 正切:Mathf.tan(float f)或Mthf.tan2(float x, float y)
- 反三角函数:在以上函数方法方法名前加A,例如Mathf.Asin(float f)
PS:Unity中三角函数方法在计算时使用的角都是弧度制的,在计算使用时应进行角度和弧度制的转换
Debug.Log(Mathf.Sin(30 * Mathf.Deg2Rad));
Debug.Log(Mathf.Asin(0.5f)* Mathf.Rad2Deg);
坐标系中的Vector3与transform向量
- 在Unity中Vector3向量是固定的,例如Vector3.forward固定为(0,0,1)
- transform.forward是不固定的,表示当前选择的物体在世界坐标系中的方向,例如transiform.forward表示选中物体的正前方向在世界坐标系中的方向单位向量
Transform trans = getComponent<Transform>()
trans.Translate(Vector3.forward,space.self) //代码1
trans.Translate(transform.forward, space.world) //代码2
代码1和代码2的效果是相同的
向量
Unity中的向量代表的意义有位置,方向,带有长度的方向。向量的计算有加减,点乘,叉乘
向量a=(x1,y1,z1),向量b=(x2,y2,z2)
- 向量的加法
a+b = (x1+x2,y1+y2,z1+z2) - 向量的减法
a-b = (x1-x2,y1-y2,z1-z2) - 向量的点乘(可以用来判断两个物体的前后关系)
Mathf.Dot(a,b) = a·b = abcosθ = (x1x2,y1y2,z1*z2) - 向量的叉乘(可以用来判断两个物体的左右关系)
Mathf.Cross(a,b) = a×b = (y1z2-z1y2,z1x2-x1z2,x1y2-y1x2)
四元数
- 向量转四元数,根据向量表示的欧拉角生成一个四元数旋转:Quaternion.Euler()
- 四元数转向量形式的欧拉角:Quaternion.eulerAngles
- 根据一个轴和围绕轴旋转的角度生成一个四元数旋转:Quaternion.AngleAxis()
- 根据起始方向和目标方向生成一个四元数旋转:Quaternion.FromToRotation()
- 从一个旋转插值变换到另一个旋转:Quaternion.Lerp()/Quaternion.SLerp
- 四元数乘四元数:第一个四元数表示旋转状态,第二个四元数表示一个旋转,得出的四元数表示第一个状态按照第二个旋转旋转后的状态
- 四元数乘向量:第一个四元数表示一个旋转,第二个向量表示一个方向,得出的向量是第二个向量按照第一个旋转旋转后的方向
在Unity中改变一个物体的旋转状态有两种方式,一种是通过欧拉角来改变,虽然简单便于理解但是会出现万向锁;另一种是通过四元数来改变,虽然不会出现万向锁但是极难理解。
Unity中的3D数学的更多相关文章
- 关于Unity中的3D拾取
3D拾取 3D游戏实际上看到的是2D画面,我们在屏幕上点击,想要找到哪个3D物体,我们实际上是在一个2维平面内做3D拾取. 3D拾取实际上是,当玩家点击屏幕的时候,会从显示屏幕的摄像头发射一条射线,射 ...
- Unity3d修炼之路:游戏开发中,3d数学知识的练习【1】(不断更新.......)
#pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB : Vector3 ...
- 游戏的物理和数学:Unity中的弹道和移动目标提前量计算
下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- NGUI研究院之在Unity中使用贝塞尔曲线(六)[转]
鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是 ...
- 在Unity中使用贝塞尔曲线(转)
鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是 ...
- Unity3D之空间转换学习笔记(三):3D数学
3D数学基础 向量 向量可以看做具有方向和大小的一条线段. 比如:我们如果用点A减去点B,则可以得到一个向量,该向量的方向为点B面向点A的方向,而大小为两点的距离.这个方法在游戏开发中经常用到,比如我 ...
- NGUI研究之在Unity中使用贝塞尔曲线
鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天由于工作的原因须要将贝塞尔曲线加在project中.那么我迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的随意角度的曲线,这两个点一 ...
- unity中camera摄像头控制详解
目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...
- Unity3D学习笔记(五):坐标系、向量、3D数学
Unity复习 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ...
随机推荐
- SAP 常见函数
*大小写转换 TRANSLATE STRING TO UPPER CASE. TRANSLATE STRING TO LOWER CASE. *前缀去零 CALL FUNCTION 'CONVERSI ...
- SAP 登入增强EXIT_SAPLSUSF_001
启用方式 SUSR0001->执行->激活
- 嵌入式Qt中实现串口读取的事件驱动方法
在嵌入式Linux系统的UI设计中,比较常见的是使用Qt库来实现.而在Qt中进行程序设计时,也经常会用到串口(UART)通信.现在基于Qt5.1以上的版本中,集成有串口模块(如QSerialPort) ...
- 易语言json
1.易语言助手 ->网页功能->网页调试 打开post工具 提交协议头里面 右键可以自定义默认的十几个ua头 2.项目爬模发送数据格式为[{},{},{},{}] 相当于没有键 只有值 ...
- ASPNET Core ActionFilterAttribute中断后续请求
转载自:https://www.cnblogs.com/luconsole/p/4346669.html SPNET MVC如何正确的中断请求? 感觉是这样? 在aspnet开发过程中如果想要中断当前 ...
- js 判断表格的值
<!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...
- v4l2编程
一.video 4 linux 2 ,是linux中关于视频设备的内核驱动.在linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video 0下 二一般操作流程( ...
- 怎么解决CMD下执行Go出现中文乱码问题?
目录 1.报错信息如下 2.原因分析 3.解决方法 4.封装处理乱码方法 5.解决乱码完整代码 1.报错信息如下 2.原因分析 因为Go的编码是UTF-8,而CMD的活动页是cp936(GBK),因此 ...
- MySQL 利用时间(秒分时日月年)分组统计
1.统计 七天 前 人数 select count(*) from your_table where last_login_time> date_sub(date(now()), interva ...
- 碧血剑—新修版<随笔+剧情大纲>
明末,袁崇焕含冤而死,其子袁承志为部下相救,称为山宗,其时10岁左右,机缘巧合之下救下杨鹏举和张朝唐一行.随后山宗大会,明军来攻,在朱国治,孙仲寿等人保护下逃走,学得伏虎拳.遇到安大娘,安小惠和哑巴, ...