第六章 Unity3D类解析之Vector3.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unity3D类解析之Vector3 By张鑫Vector3这词最早是谁发明的无从考证了,但是Unity3D里出现了这个名词的时候,我才意识到这个不是D3D和openGL才有的变量名,D3D里叫做?D3DXVECTOR3继承自_D3DVECTOR结构体,其中_D3DVECTOR结构体只有3个单精度数X,Y,Z。用于表示向量。Vector3向量既可以用来表示位置,也可以用来表示方向。在数学与物理中,既有大小又有方向的量叫做向量(亦称矢量),与标量相对。在立体三维坐标系中,分别取与x轴、y轴,z轴方向相同的3个单位向量i,j, k作为一组基底。若a为该坐标系内的任意向量,以坐标原点O为起点作向量OP=a。由空间基本定理知,有且只有一组实数(x,y, z),使得 a=向量OP=xi+yj+zk,因此把实数对(x,y, k)叫做向量a的坐标,记作a=(x,y, z)。这就是向量a的坐标表示。其中(x,y, k),也就是点P的坐标。向量OP称为点P的位置向量。Unity3D中Vector3类定义(只写有用的):属性:x,y,z表示一个空间向量。this用于访问x,y,z三个数据使用数组的方式访问,比如:position = new Vector3(1.5f, 3.0f, 6.7f);position[0]; // 获得1.5position[1]; // 获取3.0position[2]; // 获取6.7normalized返回从坐标轴原点(0,0,0)到点P(x,y,z)的方向,向量的长度为 1。也就是说返回的向量的点P(x,y,z)到原点(0,0,0)的距离为1。这个很多时候被用来指示一个方向,然后再乘以想要的距离就可以得到我们想要的位置坐标。只能读取。公式如下:magnitude返回向量的长度,也就是点P(x,y,z)到原点(0,0,0)的距离。就是向量的模运算,得到向量的长度。公式如下:最常用的是用来返回物体的移动速度speed=rigidbody.velocity.magnitude;只能读取。如果想自行规定距离可以先normalized然后乘以距离speed=speed.normalized*objSpeed;sqrmagnitude返回向量长度的平方(只读)。上面那个不开根号就是了,公式如下:大家知道向量的长度是用勾股定理计算出来的,计算机计算两次方和开跟的运算量比加减法要费时的多。所以如果是想比较两个向量的长度的话,用sqrMagnitude可以快很多。方法:vertor3Scale(vector3scale)所有的轴向都乘以scale,既(x * xscale, y * yscale, z * zscale)如:Vector3 position = new Vector3(2.0f, 3.0f, 4.0f);position.Scale(new Vector3(2.5f, 1.5f, 5.0f));//此时Position为(5.0f, 4.5f, 20.0f)a,b∈Vector3a.Scale(b);a.x=a.x * b.x ?????a.y=a.y*b.y ???a.z=a.z*b.zvertor3Scale(vector3a,vector3b)缩放,返回a的每个坐标乘以b的相对应的每个坐标。注意他是静态函数。公式如下:(xa * xb, ya * yb, za * zb)a,b,c∈Vector3a=Vector3.Scale(b,c);a.x=b.x * c.x ???a.y=b.y*c.y ???a.z=b.z*c.zVector3Cross (Vector3lhs,Vector3 rhs)两个向量的叉积,具体关于叉积的解释大家可以自己去网上搜搜,或点击传送门。/zh/向量积/view/865221.htm?a?=?a1i?+?a2j?+?a3k?= [a1,?a2,?a3]b?=?b1i?+?b2j?+?b3k?= [b1,?b2,?b3]则a?×?b?= [a2b3?? a3b2, a3b1?? a1b3, a1b2?? a2b1]Vector3Reflect (Vector3inDirection,Vector3inNormal)又一个很常用的函数,返回一个向量,让这个向量与另一个向量inDirection以坐标轴inNormal为准镜像。?脚本:var obj1: Transform;var obj2: Transform;var a: Vector3;var d: Vector3;var e: Vector3;var f: Vector3;a=obj1.position;b=obj2.position;e=Vector3.Reflect(a,Vector3.right);//以y轴,z轴组成的

文档评论(0)

xiaofei2001129 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档