- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unity3D数学基础知识
1、3D坐标系(3D Coordinate System)
3D坐标系是3D游戏开发中的基础概念。一般而言3D软件都是采用笛卡尔坐标系来描述物体的坐标信息。笛卡尔坐标系分为左手坐标系和右手坐标系,左手坐标系是Y轴指向上方,X轴指向右方,而Z轴指向前方;左、右手坐标系X、Y轴向相同,而Z轴是相反的。
在Unity中使用的是左手坐标系,其中X轴代表水平方向,Y轴代表垂直方向,而Z轴代表深度,Unity中游戏对象的坐标信息是放在一堆括号中,依次按X、Y、Z轴顺序的格式来写的,例如(1,2,1)。
在游戏开发中,经常会用到不同的坐标系来描述控件中的位置,常用的坐标系有如下几种。
1) 全局坐标系
全局坐标系是用于描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系。在Unity场景中创建的物体都是以全局坐标系中的坐标原点(0,0,0)来确定各自的位置的。新建一个Cube立方体,在Hierarchy视图中设置Position属性为(1,2,1),表示它距离全局坐标系原点在X轴方向上有1个单位的长度,在Y轴方向上有2个单位的长度,Z轴方向上有1个单位的长度。
2) 局部坐标系
每个物体都有其独立的物体坐标系,并且随物体进行相同的移动或者旋转,也称模型坐标系或物体坐标系。模型mesh保存的顶点坐标均为局部坐标系下的坐标。
在Unity中,可以在Hierarachy视图中将一个游戏对象拖动到另一个对象上来建立父子关系(Parenting),这样就使得被拖动的游戏对象称为目标对象的子物体,父子物体的坐标系是关联的,此时子物体会以父物体的坐标点为自身的坐标原点。
3) 相机坐标系
根据观察位置和方向建立的坐标系。使用此坐标系可以方便地判断物体是否在相机前方以及物体之间的先后遮挡顺序等。
?4) 屏幕坐标系
建立在屏幕上的二维坐标系,用来描述像素在屏幕上的位置。在Unity中,
Transform 组件的 Transform.TransformPoint 方法可以将坐标点从局部坐标系转换到全局坐标系。
Tranform.InverseTransformPoint 可以将坐标点从全局坐标系转换到局部坐标系。
Transform.TransformDirection 和 Transform.InverseTransformDirection 则用于对向量在局部坐标系和全局坐标系之间进行转换。
2、向量(Vector)
向量(又称矢量)是游戏开发过程中非常重要的概念,它是用于描述具有大小和方向两个属性的物理量,例如物体运动的速度、加速度、摄像机观察方向、刚体受到的力等都是向量,向量在游戏开发中十分有用。
在数学里,既有大小又有方向的量就是向量。在几何中,向量可以用一段有方向的线段来表示。
1) 向量的运算
(1) 加减:向量的加法(减法)为各分量分别相加(相减)。在物理上可以用来计算两个力的合力或者几个速度分量的叠加。
(2) 数乘:向量与一个标量相乘称为数乘。数乘可以对向量的长度进行缩放,如果标量大于0,那么向量的方向不变,若标量小于0,则向量的方向会变为反方向。
(3) 点乘:两个向量点乘得到一个标量,数值等于两个向量长度相乘后再乘以二者夹角的余弦。
通过两个向量点乘结果的符号可以快速地判断两个向量的夹角情况:
若u·v=0,则向量u、v相互垂直;
若u·v>0,则向量u、v夹角小于90度;
若u·v<0,则向量u、v夹角大于90度。
(4) 叉乘:两个向量的叉乘得到一个新的向量,新向量垂直于原来的两个向量,并且长度等于原向量长度相乘后再乘夹角的正弦值。
需要注意的是,叉乘不满足交换律,即a×b≠b×a。
2) Vector3类
在Unity中,和向量有关的类有Vector2、Vector3、Vector4,分别对应不同维度的向量,其中Vector3三维向量的使用最为广泛。
文档评论(0)