U2L6——延迟函数
U2L6——延迟函数 本章代码关键字 1234Invoke() //延迟执行函数,第一个参数填入无参函数字符串,第二个参数填入延迟时间,将按照设定延迟执行无参函数,无法延迟执行有参函数InvokeRepeating() //延迟重复执行函数,与上个函数多了一个第一次执行后每隔多久执行一次的参数CancelInvoke() //取消延迟函数,若不填参数则将全部延迟函数取消,填入参数则取消该参数对应的延迟函数IsInvoking() //判断是否有延迟函数,若填入参数则检测对应的延迟函数 延迟函数 延时函数顾名思义,就是会延时执行的函数 我们可以自己设定延时要执行的函数和具体延时的时间 这是MonoBehaviour基类中实现好的方法 这个属于MonoBehaviour基类的重要方法,之前的重要方法看这里 ->...
U2L5-4——四元数计算
U2L5-4——四元数计算 四元数相乘 角度的叠加 两个四元数相乘得到一个新的四元数,代表两个旋转量的叠加,相当于旋转 注意:旋转相对的坐标系 是物体自身坐标系 12Quaternion q = Quaternion.AngleAxis(20, Vector3.up);this.transform.rotation *= q; //相当于以自身坐标系绕y轴旋转20度 以后的旋转都由四元数相乘来完成!!!不再使用欧拉角!!! 四元数乘向量 向量的旋转 v2=q1∗v1v2 = q1 * v1v2=q1∗v1 四元数乘向量返回一个新向量,可以将指定向量旋转对应四元数的旋转量,相当于旋转向量 注意!“ * ”的左边一定是四元数,右边一定是向量,顺序不能颠倒也不能用“*=” 123456789Vector3 v = Vector3.forward;print(v);//v *= Quaternion.AngleAxis(45, Vector3.up);//v = v * Quaternion.AngleAxis(45,...
U2L5-3——四元数常用方法
U2L5-3——四元数常用方法 本章代码关键字 12345Quaternion.identity //单位四元数,可以用于初始化方向Quaternion.LookRotation() //将一个Vector向量,转换为四元数,可以用于改变面朝向Quaternion.Lerp() //线性插值Quaternion.Slerp() //球形插值,在角度旋转方面建议用球形插值Quaternion.LookRotation() //用于让对象朝向传入的向量的方向的方法 单位四元数 用于对象角度初始化 单位四元数表示没有旋转量时(角位移) 当角度为0或者360度时 对于给定轴都会得到单位四元数 [1,(0,0,0)][1,(0,0,0)][1,(0,0,0)] 和 [−1,(0,0,0)][-1,(0,0,0)][−1,(0,0,0)] 都是四元数,表示没有旋转量 1234print(Quaternion.identity);testObj.rotation =...
U2L5-2——四元数的概念
U2L5-2——四元数的概念 四元数是简单的超复数,由实数加上三个虚数单位组成,主要用于在三维空间中表示旋转 四元数原理包含大量数学相关知识,较为复杂 比如:复数、四维空间等等 因此此处我们只对其基本构成和基本公式进行讲解 必备知识点:四元数相乘代表旋转四元数 本章代码关键字 1234new Quaternion(,,,) //按照四元数Q = [cos(β/2), sin(β/2)x, sin(β/2)y, sin(β/2)z]格式填入,构造绕n轴(三维向量)旋转β度的四元数Quaternion.AngleAxis(,) //以轴角对初始化四元数的方法,更简单更好Quaternion.Euler(,,) //欧拉角转四元数quaternion.eulerAngles //四元数转欧拉角 四元数的构成 一个四元数包含一个标量和一个3D向量 [w,v][w,v][w,v], www为标量,vvv为3D向量:[w,(x,y,z)][w, (x,y,z)][w,(x,y,z)] 对于给定的任意一个四元数:...
U2L5-1——为什么使用四元数
U2L5-1——为什么使用四元数 原先的学习中,用来描述角度的是欧拉角(Transform的角度与旋转),但是接下来将使用四元数,这里通过介绍欧拉角的缺陷来解释为什么用四元数 欧拉角 由三个角度(x,y,z)组成,在特定坐标系下用于描述物体的旋转量 空间中的任意旋转都可以分解成:绕三个互相垂直轴的三个旋转角组成的序列 heading-pitch-bank是一种最常用的旋转序列约定,Y-X-Z约定,也就是先绕Y轴旋转,再绕X轴旋转,最后绕Z轴旋转 heading:物体绕自身的对象坐标系的Y轴,旋转的角度 pitch:物体绕自身的对象坐标系的X轴,旋转的角度 bank:物体绕自身的对象坐标系的Z轴,旋转的角度 Inspector窗口中调节的Rotation就是欧拉角,transform.eulerAngles...
U2L5——四元数
U2L5——四元数 四元数 四元数,是简单的超复数。 复数是由实数加上虚数单位 i 组成,其中i²= -1。 相似地,四元数都是由实数加上三个虚数单位 i、j和k 组成,而且它们有如下的关系: i² = j² = k² = -1, iº = jº = kº = 1 , 每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bi+ cj + dk,其中a、b、c 、d是实数。 对于i、j和k本身的几何意义可以理解为一种旋转,其中i旋转代表Z轴与Y轴相交平面中Z轴正向向Y轴正向的旋转,j旋转代表X轴与Z轴相交平面中X轴正向向Z轴正向的旋转,k旋转代表Y轴与X轴相交平面中Y轴正向向X轴正向的旋转,-i、-j、-k分别代表i、j、k旋转的反向旋转。 四元数_百度百科...
U2L4-5——向量插值计算
U2L4-5——向量插值计算 向量插值计算 Vector3也有为向量插值计算的方法,(插值计算相关概念) 本章代码关键字 12Vector3.Lerp() //向量线性插值Vector3.Slerp() //向量球形插值 线性插值 一般用于跟随移动,摄像机跟随等 对两个点进行插值计算,t的取值范围是0~1 公式:result = start + (end - start) * t 1A.position = Vector3.Lerp(A.position, target.position, Time.deltaTime); 线性插值计算也有两种应用 先快后慢趋近 先快后慢 每帧改变start位置 位置无限接近但不会得到end位置 123//result = start + (end - start) * t//先快后慢 每帧改变start位置 位置无限接近但不会得到end位置A.position = Vector3.Lerp(A.position, target.position, Time.deltaTime); 匀速接近 匀速 每帧改变时间 当>=1时...
U2L4-4——向量叉乘
U2L4-4——向量叉乘 向量叉乘 向量×向量 向量A (Xa,Ya,Za) 向量B (Xb,Yb,Zb) A x B = (X,Y,Z) X = YaZb - ZaYb Y = ZaXb - XaZb Z = XaYb - YaXb A x B 得到的向量同时垂直A和B A x B 向量垂直于A和B 组成的平面 A x B = -(B x A) 向量叉乘的几何意义是: 假设向量 A和B 都在XZ平面上 向量A 叉乘 向量B 结果大于0 说明 B在A右侧 结果小于0 说明 B在A左侧这个左侧右侧的判定标准是以OA向量方向为准 向量叉乘对于我们的意义 得到一个平面的法向量 得到两个向量之间的左右位置关系 注意!叉乘左右两边向量如果互换位置结果会变为原来的负向量,因此切记要确定叉乘的左向量和右向量 本章代码关键字 1Vector3.Cross(, ) //计算两个向量叉乘的方法 叉乘计算 Vector3提供了叉乘的方法(向量叉乘) 1print(Vector3.Cross(A.position,...
U2L4-3——向量点乘
U2L4-3——向量点乘 向量点乘 向量点乘可以用来判断对象的方位,计算两个向量之间的夹角 点乘计算公式: 向量A:(Xa,Ya,Za)A:(X_a,Y_a,Z_a)A:(Xa,Ya,Za) 向量B:(Xb,Yb,Zb)B:(X_b,Y_b,Z_b)B:(Xb,Yb,Zb) A⃗⋅B⃗=Xa×Xb+Ya×Yb+Za×Zb=∣A⃗∣∣B⃗∣cosθ\vec{A} \cdot \vec{B} = X_a \times X_b + Y_a \times Y_b + Z_a \times Z_b = |\vec{A}||\vec{B}|\cos\theta A⋅B=Xa×Xb+Ya×Yb+Za×Zb=∣A∣∣B∣cosθ 向量 · 向量 = 标量 向量点乘的几何意义是: 一个向量到另一个向量的投影的长度 点乘结果 > 0 两个向量夹角为锐角 点乘结果 = 0 两个向量夹角为直角 点乘结果 < 0...
U2L4-2——向量加减乘除
U2L4-2——向量加减乘除 Vector3的相互计算 Vector3基础里已经包含了Vector3基本计算 这里将详细讲解它们的几何意义 向量加法 —— 主要用于位置平移和向量计算 向量减法 —— 主要用于位置平移和向量计算 向量乘除法 —— 主要用于模长放大缩小 向量加法 向量A:(Xa,Ya,Za) 向量B:(Xb,Yb,Zb) A + B = (Xa + Xb, Ya + Yb, Za + Zb) 1this.transform.position += new Vector3(1, 2, 3); Vector3+Vector3的意义 位置+位置 几何意义: 两个位置相加没有任何意义 向量+向量 几何意义: 两个向量相加得到一个新向量 向量 + 向量 = 向量 口诀: 向量相加,首尾相连 位置+向量 几何意义: 位置加向量得到一个新位置 位置 + 向量 = 位置 向量 + 位置 = 位置 口诀: 位置和向量相加=平移位置 向量减法 向量A(Xa,Ya,Za) 向量B(Xb,Yb,Zb) A - B = (Xa - Xb, Ya - Yb,...