在Unity3D中,Curves(曲线)是指一种可以用来控制属性值随时间变化的动画控制器。Curves可以控制对象的位置、旋转、缩放、颜色等属性的变化。Curves通常用于创建动画,可以通过可视化编辑器来创建和编辑。Curves的编辑器中,横轴代表时间,纵轴代表属性值,用户可以通过添加、删除、修改曲线上的关键帧来控制属性值的变化。
如果你是一个Unity3D萌新,建议先学习Unity3D的基础知识,包括场景搭建、对象控制、脚本编写等等。然后再学习Curves的使用,掌握Curves的使用可以让你更好的制作动画,并且提高你在Unity3D中的制作效率。可以参考官方文档或者一些教程视频来学习Curves的使用。
Unity可以通过GetChild功能快速获取到物体或子物体的。
*** 作步骤:
1、打开Unity,新建一个工程;
2、在场景中,新建一个“GameObject”,在其下再新建一个“Cube”和“Sphere”,适当调整页面的布局;
3、把“GameObject”下的子物体“Sphere”隐藏;
4、在工程中,新建一个脚本“GetChildTest”,双击脚本或者右键“OpenC#Project”打开脚本;
5、在“GetChildTest”脚本上编写代码,首先设置一个变量获取对象,然后在Update函数里按下“A”键,打印第一个子物体的名称,按下“S”键,打印第二个子物体的名称,并显示该物体;
6、脚本编译正确,回到Unity界面,把脚本赋给“GameObject”,并把“GameObject”赋给脚本对应变量;
9、运行场景,按下“A”“S”键,控制台console打印信息,并且“Sphere”显示就可以了。
二维笛卡尔坐标系:
x轴、y轴朝向并非固定,如:OpenGL和DirectX使用了不同的二维笛卡尔坐标系。
三维笛卡尔坐标系:
标准基矢量:互相垂直,且长度为1的基矢量。
正交基:互相垂直,但长度不为1的基矢量。
以手的大拇指作为 +x 轴,食指作为 +y 轴,中指作为 +z 轴,将3根手指互相垂直,可以用左手示意的坐标系,为左手坐标系:
可以用右手示意的坐标系,为右手坐标系:
左手坐标系和右手坐标系无法通过旋转实现坐标轴指向重合。
左手坐标系和右手坐标系分别对应 左手法则 和 右手法则 ,用来在坐标系中定义旋转的正方向,下图4个手指指向的方向即为正方向:
Unity的模型空间和世界空间使用的是左手坐标系,注意观看下图红、绿、蓝轴在右上角分别对应x轴、y轴、z轴:
Unity的观察空间使用的是右手坐标系。观察空间,就是以摄像机作为原点的坐标系,在这个坐标系中,摄像机的前向是z轴的负方向,与模型/世界空间的定义相反。即:z轴坐标的减少意味着场景深度的增加。
点是n维空间(游戏中主要是用二维、三维空间)中的一个位置,没有大小、宽度的概念。
二维空间点的表示: p = (x, y)
三维空间点的表示: p = (x, y, z)
矢量是n为空间中包含模和方向的有向线段,没有位置的概念。
矢量的模:矢量的长度,非负数。
矢量的方向:矢量在空间中的指向。
矢量的表示与点类似, v = (x, y),v = (x, y, z),v = (x, y, z, w) 。
为区分点和矢量,在变量书写上,标量用小写字母表示,如:a, b, x, y, z等;矢量用小写的粗体字母表示,如: a , b , u , v 等。
矢量通常有一个箭头表示:
标量是只有模,没有方向的量,比如:距离、速度等。
矢量无法与标量进行加减运算,但是可以进行乘法或除法运算。
矢量与标量的乘法:
kv = (kv x , kv y , kv z )
矢量可以被非0的标量除,但是矢量无法作为除数:
从几何意义上看,一个矢量 v 和一个标量k相乘,意味着对矢量 v 进行一个大小为|k|的缩放。若k<0,则矢量方向取反,如下图:
两个矢量加减,即:两个矢量的对应分量进行加减,公式如下:
a + b = (a x +b x , a y +b y , a z +b z )
a - b = (a x -b x , a y -b y , a z -b z )
从几何意义上看,矢量加法,即:把矢量 a 的头连接到矢量 b 的尾,然后画一条从 a 的尾到 b 的头的矢量,来得到 a 和 b 相加后的矢量,如下图所示:
也可以理解为:一个点从 a 的尾进行位置偏移 a ,在进行位置偏移 b ,就等同于进行了 a + b 的位置偏移,这被称为矢量加法的 三角形定则 。
矢量的减法类似:
在图形学中,矢量通常用于描述位置偏移(简称位移)。我们可以利用矢量的加法和减法来计算一点相对于另一点的位移。
矢量的模是一个标量,可以理解为矢量在空间中的长度。表示符号通常是在矢量的两边加上竖线,比如:| v |。
三维矢量的模的计算公式:
其他维度的矢量的模计算类似,都是对每个分量平方相加后开根号。几何意义,可用下图解释:
单位矢量指模为1的矢量,也被称为被归一化的矢量(normalized vector)。通常用在只关心方向,不关心模的矢量,比如:模型的发现方向、光源方向等。
把非零矢量转换成单位矢量的过程叫 归一化 。
单位矢量的表示为:
单位矢量的公式:
零矢量:每个分量的值都为0的矢量,如: v = (0, 0, 0)。零矢量不能被归一化,因为除法运算时,分母不能为0。
从几何意义上看,对于二维空间,单位矢量就是从圆心出发、到圆边界的矢量:
对于三维空间,单位矢量就是从圆心出发、到球面的矢量。
在Unity Shader中,会经常遇到法线方向、光源方向,这些矢量不一定是归一化后的矢量,计算的时候需要将这些矢量归一化成单位矢量。
矢量的乘法有两种类型:点积(dot product)、叉积(cross product)。
矢量的点积,也叫内积。点积的运算表示: a · b ,中间的点不能省略。
点积公式一 :
a · b = (ax, ay, az) · (bx, by, by) = axby + ayby + azbz
点积满足交换律:
a · b = b · a
点积的几何意义: 投影 。
投影的值可能是负数,投影结果的正负号与 a 、 b 两个矢量的方向有关:方向相反,结果小于0;方向相同,结果大于0;方向垂直,结果等于0。
性质一:
点积可结合标量乘法
(k a )· b = a ·(k b )=k( a · b )
k的几何意义是:对矢量进行缩放。
性质二:
点积可结合矢量加减法
a ·( b + c ) = a · b + a · c
将 c 换成- c 就是减法的版本。
性质三:
一个矢量与自身点积的结果是该矢量模的平方
v · v = v x v x + v y v y + v z v z = | v | 2
可以用矢量点积的形式来求矢量的模,Shader中常用模的平方来直接做比较或运算,目的是减少开放带来的性能消耗。
点积公式二 :
a · b = | a || b |cosθ
公式二的证明:
假设对两个单位矢量进行点积
如下图所示:
由上图可知,cosθ对应的直角边是: a · b 的点积( b 矢量在 a 矢量的投影),且 cosθ = 直角边 / 斜边 ,则 a · b 的点积 = cosθ 斜边 ,因为单位矢量 b 的模是1(斜边长度为1),所以: a · b 的点积 = cosθ,也就是两个单位矢量的点积为夹角的cos值。
再由之前性质一,可得推导公式二:
由公式二可知,点积可用于求两个矢量的夹角:
叉积,也叫外积。与点积不同,叉积的结果仍然是矢量,而非标量。
叉积的表示: a x b ,叉号不能省略。叉积的计算公式如下:
a x b = (a x , a y , a z ) x (b x , b y , b z ) = (a y b z -a z b y , a z b x -a x b z , a x b y -a y b x )
具体的记法,可以这样:
叉积不满足交换律,即: a x b ≠ b x a ;但是叉积满足反交换律,即: a x b = - ( b x a )。
叉积不满足结合律,即:( a x b ) x c ≠ a x ( b x c )。
叉积的几何意义:
对两个矢量进行叉积的结果,会得到同时垂直于这两个矢量的新矢量。
叉积的模
公式:
| a x b | = | a || b |sinθ
这容易联想到平行四边形求面积:
面积A = | b | h = | b | (| a | sinθ) = | a || b |sinθ
叉积的方向
从几何意义可知,两个矢量的叉积,会得到垂直于两个矢量的新矢量,但是与其垂直的有两个向量。这时前面学到的 左/右手坐标系 就派上用场了,它用来确定叉积得到新矢量的方向朝哪边。
将大拇指与a同向,食指与b同向,中指指向的方向就是叉积结果的方向,所以使用左、右手就会得到不同的朝向,如下图:
同理,左右手法则也通用可以用来判断,如下图:
矩阵(Matrix),就是有m x n个标量组成的长方形数组,通常用方括号在左右两侧围住这些数字,大概像这样:
有些资料也会用圆括号或花括号,其实都一样的。
矩阵有行、列之分,上图的数组就是三行四列。以3x3矩阵为例,它可以写成:
mij表示这个元素在矩阵M的第i行、第j列。
矢量,我们通常写成: a = (x, y, z),可以看出矢量与矩阵一样,也是个数组。将矢量按照矩阵的写法,可以看成是 n x 1 的列矩阵或 1 x n 的行矩阵,n对应矢量的维度。
以矢量 v = (3, 8, 6)举例,写成行矩阵:
[3, 8, 6]
写成列矩阵:
为什么要和矢量联系起来?因为Shader中经常会将法线(矢量)进行坐标变换,而坐标变换是矩阵的几何意义,所以需要运用矩阵的运算来将法线从模型空间转变成世界空间。(后续会学到)
与矢量类似,矩阵和标量相乘后,结果仍然是一个矩阵。公式如下:
矩阵和矩阵相乘后,结果也是矩阵。新的矩阵的维度与两个原矩阵的维度有关。一个 rxn 的矩阵A和一个 nxc 的矩阵B相乘后,得到的结果AB是一个 rxc 大小的矩阵。需要注意, 第一个矩阵的列数必须和第二个矩阵的行数相等,才能相乘 。
比如:矩阵A的维度是 4x3 ,矩阵B的维度是 3x6 ,则AB的维度是 4x6 。
矩阵乘法的表达式:
假设有 rxn 的矩阵A和 nxc 的矩阵B,相乘后得到一个 rxc 的矩阵C = AB,那么C中的每个元素Cij等于A的第i行所对应的矢量和B的第j列所对应的矢量进行点乘的结果,即:
简单解释为:
对于每个元素c ij ,找到A中的第 i 行和B中的第 j 列,把他们对应的元素相乘后再加起来,这个和就是c ij 。
性质一:
矩阵乘法不满足交换律: AB ≠ BA
性质二:
矩阵乘法满足结合律: (AB)C = A(BC) 、 ABCDE = ((A(BC))D)E = (AB)(CD)E
方块矩阵,简称方阵。指行数和列数相等的矩阵,比如: 3x3 、 4x4 的矩阵。
方块矩阵独有的: 对角元素 ——行号和列号相等的元素。只有对角元素非0的矩阵叫 对角矩阵 。
对角元素都为1的对角矩阵,叫做单位矩阵,用I n 表示,比如:
单位矩阵特性:任何矩阵和它相乘的结果还是原来的矩阵。相当于标量中1的地位。
MI = IM = M
转置矩阵实际是对原矩阵的一种运算,即转置运算。一个 rxc 的矩阵M,其转置表示成M T ,是一个 cxr 的矩阵,本质是原来的矩阵行、列对换。
性质一:
矩阵转置的转置等于原矩阵。
(M T ) T = M
性质二:
矩阵串联的转置,等于反向串联各个矩阵的转置。
(AB) T = B T A T
只有方阵才有逆矩阵,逆矩阵表示为M -1 。一个矩阵与它的逆矩阵相乘,结果是一个单位矩阵:
MM -1 = M -1 M = I
有点标量里面倒数的味道。
不是所有方阵都有对应逆矩阵,比如:所有元素都为0的矩阵。
如果一个矩阵有对应的逆矩阵,则它是 可逆的 或 非奇异性的 ;
相反,则它是 不可逆的 或 奇异性的 。
判断矩阵是否可逆:
矩阵的 行列式 不为0,则它是可逆的。
参考视频链接: >
1Audio Source(声音组件)
AudioClip:声音片段,可对其直接赋值声音文件
Output:音源输出
Mute:是否静音
Bypass Effects:音源滤波开关,是否打开音频特效
Bypass Listener Effe:监听滤波开关
Bypass Reverb Zone:回音混淆开关,当勾选时,不执行回音混淆
Play On Awake:开机自动播放
Loop:循环播放
Priority:播放优先级
Volume:音量大小,范围0到1。
Pitch:播放速度,范围-3到3。
Stereo Pan:声道占比
Spatial Blend:空间混合
Reverb Zone Mix:回音混合
3D Soungd Settings:略
2Rigidbody(刚体组件)
Mass:质量。数值越大物体下落越快
Drag:阻力,数值越大物体反向加速度越大
Angular Drag:角阻力,数值越大自身旋转的速度减慢的越快
Use Gravity:是否使用重力
Is Kenematic:是否受物理的影响
Interpolate:设置图像差值
默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。
Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。
Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动
Collision Detection:碰撞检测
对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。
Discrete:非连续型检测模式(默认)
Continuous:连续检测。
更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使用Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。
Continuous Dynamic:连续动态检测。
对没有刚体的Mesh Collider或是对处在Continuous或是Continuous Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。
Continuous和Continuous Dynamic的区别在于对Continuous使用何种检 测 ,Continuous使用Discrete,而Continuous Dynamic使用Continuous。 但它们对物理性能都有很大影响。
刚体和刚体之间的连续碰撞检测,刚体的碰撞器必须是Box,Sphere,Capusle
刚体和非刚体(静态碰撞器)之间的连续碰撞检测,刚体的碰撞器必须是 Box,Sphere,Capusle,非刚体的碰撞器必须是Mesh
Constraints:冻结,停止某个轴向感应物理引擎的效果
Freeze Position:冻结x轴方向,y轴方向,z轴方向
Freeze Rotation:冻结x轴旋转,y轴旋转,z轴旋转
3Mesh Collider(网格碰撞体)
Convex:凸起,勾选后,与其它基本碰撞体发生碰撞
Inflate Mesh:网格膨胀,它有效地扩展了源数据的边缘宽度和斜切锋利的边缘,使所
得网格适合物理更好,将此设置为true可以降低碰撞网格的精度
Skin Width:皮肤厚度,一个合理的设定是使该值等于半径(Radius)的10%
Is Trigger:触发器
Material:材质,引用何种物理材质决定了和其他对象如何作用
Mesh:网格,获取对象的网格并将其作为碰撞体
4Capsule Collider(胶囊碰撞体)
Edit Collider:点击之后可编辑碰撞范围
Is Trigger:触发器
Material:材质
Center:碰撞体在对象局部坐标空间中的位置
Radius:碰撞体局部坐标宽度的半径
Height:碰撞体的总高度
Direction:对象局部坐标空间中胶囊纵向方向的轴
5Camera(摄像机)
Clear Flags:背景显示内容。默认是天空盒子
Solid Color:纯色,选择此选项显示background颜色
Depth Only:仅深度,用于游戏对象不希望被裁减的情况
Don't Clear:不清除,不清除任何颜色或深度缓存,其结果是,每一帧渲染的结果叠加在下一帧之上
Background:背景显示颜色。没有天空盒子将显示这个颜色。
Culling Mask:用于选择是否显示某些层,默认是Everything
Projection:摄像机的类型(投射方式)。
Perspective:透视,摄像机将用透视的方式来渲染游戏对象
Field Of View:视野范围,用于控制摄像机的视角宽度以及纵向的角度尺寸
Orthographic:正交,摄像机将用无透视的方式来渲染游戏对象
Size:大小,用于控制正交模式摄像机的视口大小
Clipping Planes:剪裁平面。摄像机的渲染范围,Near为最近的点,Far为最远的点
Viewport Rect:视图矩形。用四个数值来控制摄像机的视图绘制在屏幕的位置和大小,使用的是 屏幕坐标系,数值在0~1之间。坐标系原点在左下角。
Depth:深度。用于控制摄像机的渲染顺序,较大值的摄像机将被渲染在较小值的摄像机之上
Rendering Path:渲染路径。用于指定摄像机的渲染方法。
Use Graphics Settings:选择图形设置中的方法
Forward:快速渲染,传统的渲染路径,它支持每个像素的光照及平行光(directional light)的实时阴影
Deferred:延迟渲染,会准确如实地渲染光照和阴影。如果有许多实时光照,最适合它,需要一定程度的硬件支持,不支持移动设备
Legacy Vertex Lit:顶点光照,摄像机将对所有的游戏对象座位顶点光照对象来渲染
Legacy Deferred(light prepass):具有最低照明保真度和不支持实时阴影的渲染路径。它是前向渲染路径的子集。
在使用正投影时不支持延迟渲染。如果相机的投影模式被设置为正交,则这些值被重写,并且相机将总是使用快速渲染。
Target Texture:目标纹理,用于将摄像机视图输出并渲染到屏幕。
Occlusion Culling:遮挡剔除
HDR:高动态光照渲染,用于启用摄像机的高动态范围渲染功能,因为人眼对的范围的光照强度更为敏感,所有用高动态范围渲染能让场景变得更为真实,光照的变化不会显得太突兀。
Target Display:目标显示
6Directional light(平行光源)
Type:光源类型,可选择不同光源
Baking:用于烘焙模式的,在Lighting面板下点击Bake进行烘焙光照贴图时,生成对应的反射贴图
Color:光照的颜色
Intensity:光照强度
Bounce Intensity:放射光的光照强度
Shadow Type:光源投射的阴影类型
Cookie:一个遮罩,使光线在不同的地方有不同的亮度。如果灯光是聚光灯或方向光,这必须是一个2D纹理。如果灯光是一个点光源,它必须是一个立方图(Cubemap)
Cookie Size:缩放Cookie投影。只用于方向光。
Draw Halo:是否在点光源中使用白雾效果
Flare:设置光源粒子效果
Render Mode:光源渲染模式
Culling Mask:通过层可设置某些地图层不受光照影响
7Point light(点光源)
8Spotlight(手电筒)
七种坐标系统详解与互相转换的方法模型坐标和观察坐标
9月24日//先将坐标从模型空间转为世界空间 float3 worldPos = UnityObjectToWorldDir(vvertex); //物



>
首先要熟悉一些基本的力学名词及相关公式
刚体(Rigidbody) :刚体是指在运动中和受到力的作用后,形状和大小不变,而且内部各点的相对位置不变的物体。绝对刚体实际上是不存在的,刚体是力学中的一个科学抽象概念,即理想模型。
力(F) :力是物体对物体的作用,力不能脱离物体而单独存在。Unity的物理引擎就是以此为基础构建的。
重力(G) :物体由于地球的吸引而受到的力叫重力。重力的施力物体是地心。Unity中的重力与其相似。重力的方向总是竖直向下。
摩擦力 :在Unity中分为滑动摩擦力和静摩擦力。通常通过设置动摩擦系数和静摩擦系数来控制物体的运动。(滚动摩擦一般不用)
d力 :在Unity中物体受外力后产生与其相反方向的力。通常通过设置d性系数来
使物体获得d性属性。
扭矩力 :使物体发生转动的力。
阻尼 :当物体受到外力作用而振动时,会产生一种使外力衰减的反力,称为阻尼力(或减震力) 。
重力加速度 (单位:m/s^2): g = 981 (在Unity中)
重力 (单位:N): G = mg
滑动摩擦力 (单位:N): F = μ×FN (FN:正压力,μ:动摩擦因数)
单摆周期公式 (单位:s): T = 2π√(L/g)(L:摆长)
力矩 (单位:N×m): M = FL (L:摆动轴)
物体要受力的影响就需要添加Rigibody组件。(基本上能动的物体都需要Rigibody组件)物体添加Rigibody组件后,可以接受外力和扭矩力,并一直受到重力影响,
选中一个物体后,为其添加Rigibody组件。
Mass(质量) :用于设置游戏对象的质量。(一般在同一游戏场景中,游戏对象之间的质量差不大于100倍)
Drag(阻力) :即游戏对象受力运动时受到的空气阻力,阻力极大时,游戏对象会立即停止运动。
Angular Drag(角阻力) :即游戏对象受扭矩力旋转时受到的空气阻力。同样的,阻力极大时,游戏对象会立即停止旋转。
Use Gravity(使用重力) :即开启此项时,游戏对象会受到重力的影响。
Is Kinematic(是否开启动力学) :即开启此项时,游戏对象将不再受到物理引擎的影响,从而只能通过Transform属性来对其 *** 作。(该方式适用于模拟平台的移动或带有铰链关节链接刚体的动画)
Interpolate(插值) :用于控制刚体运动的抖动情况。
None:没有插值。
Interpolate:内插值。基于前一帧的Transform平滑此次的Transform。
Extrapolate:外插值。基于下一帧的Transform平滑此次的Transform。
Collision Detection(碰撞检测) :该属性用于控制避免高速运动的游戏对象穿过其它对象而未发生碰撞。
Discrete:离散碰撞检测。该模式与场景中其它的所有碰撞体进行碰撞检测。该值为默认值。
Continuous:连续碰撞检测。该模式用于检测与动态碰撞体(带有Rigidbody)碰撞,使用连续碰撞检测模式来检测与网格碰撞体的(不带Rigidbody)碰撞。其它的刚体会采用离散碰撞模式。此模式适用于那些需要采用连续动态碰撞检测的对象相碰撞的对象。这对物理性能会有很大的影响,如果不需要对快速运动的对象进行碰撞检测,不建议使用此模式,建议使用离散碰撞检测模式。
Continuous Dynamic:连续动态碰撞检测。该模式用于检测与采用连续碰撞模式或连续动态碰撞模式对象的碰撞,也可以用于检测没有Rigidbody的静态网格碰撞体。对于与之碰撞的其它对象可采用离散碰撞检测。该模式也可以用于检测快速运动的游戏对象。
Constraints(约束) :该项用于控制对于刚体运动的约束。
Freeze Position:冻结位置。刚体对象在世界坐标系中的x,y,z轴方向上(选中状态)的移动将无效。
Freeze Rotation:冻结旋转。刚体对象在世界坐标系中的x,y,z轴方向上(选中状态)的旋转将无效。
Constant Force用来为刚体添加恒力。适用于类似火箭发射的对象,因为F=ma,使得这类对象的速度不断提升。
选中一个物体后,为其添加Constant Force组件。
四种属性均用三维向量表示,坐标轴表示方向,数值表示大小。
需要注意的是:添加恒力(Constant Force)组件时,系统会默认添加刚体(Rigidbody)组件。
添加恒力组件后,不能移除刚体组件。
Force(力) :设置世界坐标系中使用的扭矩力。
Relative Force(相对力) :设置在物体局部坐标系中使用的力。
Torque(扭矩) :设置在世界坐标系中使用的扭矩力。游戏对象依据该向量进行转动。(向量越长转动越快)
Relative Torque(相对扭矩) :相对扭矩。设置在物体局部坐标系中使用的扭矩力。。游戏对象依据该向量进行转动。(向量越长转动越快)
Character Controller主要用于第三人称或第一人称游戏主角的控制。不使用刚体物理效果。(Character Controller可通过物理效果影响其他的对象,但无法通过物理效果被其他的对象影响)
选中一个物体后,为其添加Character Controller组件。
Slope Limit(坡度限制) :设置所控制的游戏对象只能爬上角度小于或等于该参数值的斜坡倾角。
Step Offset(台阶高度) :设置所控制的游戏对象可以迈上的最高台阶的高度。
Skin Width(皮肤厚度) :该参数决定了两个碰撞体可以相互参入的深度。
较大的参数值会产生抖动的现象,较小的参数值会导致所控制的游戏对象被卡住,较为合理的设置是该参数值为Radius值的10%。
Min Move Distance(最小移动距离) :如果所控制的游戏对象的移动距离小于该值,则游戏对象将不会移动,这样可避免抖动,大多数情况下将该值设为0。
Center(中心) :该参数决定了胶囊碰撞体与所控制的游戏对象的相对位置,并不影响所控制的角色对象的中心坐标
Radius(半径) :胶囊体碰撞的长度半径,同时该项也决定了碰撞体的半径。
Height(高度) :用于设置所控制的角色对象的胶囊体碰撞体的高度。
Collider要与Rigibody一起添加到游戏对象上才能触发碰撞。
两个刚体撞在一起时,拥有碰撞体的对象才会计算碰撞。
都没有碰撞体的两个刚体会彼此穿过,不会发生碰撞。
添加Collider组件方法
一般创建一个游戏对象时会自动添加相应的碰撞体。
该碰撞体可调整为不同大小的长方体。
可用作门、墙、平台,也可用于布娃娃的角色躯干或汽车等交通工具的外壳上。
该碰撞体的三维大小可以均匀地调节,但不能单独调节某个坐标轴方向的大小。
可用作落石、球类等游戏对象。
该碰撞体的高度和半径可单独调节。
可用作角色控制器或与其他不规则形状的碰撞结合使用。(Uinty中角色控制器中通常内嵌了胶囊碰撞体)
该碰撞体通过获取网格对象并在其基础上构建碰撞。
与在复杂的网络模型上使用基本碰撞体相比,网格碰撞体要更加精细,但会占用更多的系统资源。(开启Convex参数的网格碰撞体才可以与其他的网格碰撞体发生碰撞)
该碰撞体是基于地形构建的碰撞体。
车轮碰撞体是一种针对地面车辆的特殊碰撞体,它有内置的碰撞检测、车轮物理系统及有滑胎摩擦的参考体。
除了车轮,该碰撞体也可用于其他的游戏对象。
关节是模拟物体与物体之间的一种连接关系,关节必须依赖于刚体组件。
关节组件可以添加到多个游戏对象中,关节又分为3D类型的关节和2D类型的关节。(本篇讲述3D关节)
添加Joint组件方法
由两个刚体组成,使它们像被连接在一个铰链上那样运动。
它非常适用于对门的模拟,也可用作模型链及钟摆等物体。
需要注意的是:添加关节(Join)组件时,系统会默认添加刚体(Rigidbody)组件。
添加关节组件后,不能移除刚体组件。
Connected Body(连接刚体) :为关节指定要连接的刚体。(若不指定刚体,则该关节默认与世界相连)
Anchor(锚点) :刚体可围绕锚点进行摆动。该值应用于局部坐标系。
Axis(轴) :定义刚体摆动的方向。该值应用于局部坐标系。
Auto Configure Connected Anchor(自动设置连接锚点) :勾选该项,连接锚点会自动设置。(该项默认为开启状态)
Connected Anchor(连接锚点) :自动连接锚点项开启时,此项会自动设置。自动连接锚点项未开启时,可手动设置连接锚点。
Use Spring(使用d簧) :勾选该项,d簧会使刚体与其连接的主体形成一个特定的角度
Spring(d簧) :当Use Spring参数开启时,此属性有效。
Spring:d簧力。设置推动对象使其移动到相应位置的作用力。
Damper:阻尼。设置对象的阻尼值,数值越大则对象移动得越缓慢。
Target Position:目标角度。设置d簧的目标角度,d簧会拉向此角度。
Use Motor(使用发动机) :勾选该项,发动机会使对象发生旋转。
Motor(发动机) :当Use Motor参数开启时,此属性有效。
Target Velocity:目标速度。设置对象预期将要达到的速度值。
Force:作用力。设置为了达到目的速度而施加的作用力。
Free Spin:自动转动。勾选该项,则发动机永远不会停止,旋转只会越转越快。
Use Limits(使用限制) :勾选该项,铰链的角度将被限定在最大值和最小值之间。
Limits(限制) :当Use Limits参数开启时,此属性有效。
Min:最小值。设置铰链能达到的最小角度。
Max:最大值。设置铰链能达到的最大角度。
Min Bounce:最小反d。设置当对象触到最小限制时的反d值。
Max Bounce:最大反d。设置当对象触到最大限制时的反d值。
Contact Distance:接触距离。控制关节的抖动。
Break Force(断开力) :设置铰链关节断开的作用力。
Break Torque(断开转矩) :设置断开铰链关节所需的转矩。
Enable Collision(激活碰撞) :勾选该项,关节之间也会检测碰撞。
Enable Preprocessing(启用预处理) :勾选该项,实现关节的稳定。(该项默认为开启状态)
固定关节用于约束一个游戏对象对另一个游戏对象的运动。类似于对象的父子关系,但它是通过物理系统来实现而不像父子关系那样是通过Transform属性来进行约束。(使用固定关节的对象自身需要有一个刚体组件)
适用于当希望将对象较容易与另一个对象分开时,或者连接两个没有父子关系的对象使其一起运动时。
Connected Body (连接刚体) :用于指定关节要连接的刚体。(若不指定刚体,则该关节默认与世界相连)
Break Force(断开力) :设置关节断开的作用力。
Break Torque(断开转矩) :设置断开关节所需的转矩。
Enable Collision(激活碰撞) :勾选此项,则关节之间也会检测碰撞。
Enable Preprocessing(启用预处理) :勾选该项,实现关节的稳定。(该项默认为开启状态)
d簧关节组件可将两个刚体连接在一起,使其像连接着d簧那样运动。
Connected Body(连接刚体) :用于为d簧指定要连接的刚体。(若不指定刚体,则该关节默认与世界相连)
Anchor(锚点) :设置Joint在对象局部坐标系中的位置。(注意:不是对象将d向的点)
Auto Configure Connected Anchor(自动设置连接锚点) :勾选该项,连接锚点会自动设置。(该项默认为开启状态)
Connected Anchor(连接锚点) :自动连接锚点项开启时,此项会自动设置。自动连接锚点项未开启时,可手动设置连接锚点。
Spring(d簧) :设置d簧的强度,数值越高d簧的强度就越大。
Damper(阻尼) :设置d簧的阻尼系数,阻尼数值越大,d簧强度减小的幅度越大。
Min Distance(最小距离) :设置d簧启用的最小距离值。如果两个对象之间的当前距离与初始距离的差小于该值,则不会开启d簧。
Max Distance(最大距离) :设置d簧启用的最小距离值。如果两个对象之间的当前距离与初始距离的差大于该值,则不会开启d簧。
Break Force(断开力) :设置d簧关节断开所需的作用力。
Break Torque(断开转矩) :设置d簧关节断开所需的转矩力。
Enable Collision(激活碰撞) :勾选该项,关节之间也会检测碰撞。
Enable Preprocessing(启用预处理) :勾选该项,实现关节的稳定。(该项默认为开启状态)
角色关节主要用于表现布娃娃效果,它是扩展的球关节,可用于限制关节在不同旋转轴下的旋转角度。
Connected Body(连接刚体) :用于为角色关节指定要连接的刚体。(若不指定刚体,则该关节默认与世界相连)
Anchor(锚点) :设置游戏对象局部坐标系中的点,角色关节将按围绕该点进行旋转。
Axis(扭动轴) :设置角色关节的扭动轴。(以橙色的圆锥gizmo表示)
Auto Configure Connected Anchor(自动设置连接锚点) :勾选该项,连接锚点会自动设置。(该项默认为开启状态)
Connected Anchor(连接锚点) :自动连接锚点项开启时,此项会自动设置。自动连接锚点项未开启时,可手动设置连接锚点。
Swing Axis(摆动轴) :设置角色关节的摆动轴。(以绿色的圆锥gizmo表示)
Twist Limit Spring(d簧的扭曲限制)
Spring:设置角色关节扭曲的d簧强度。
Damper:设置角色关节扭曲的阻尼值。
Low Twist Limit(扭曲下限) :设置角色关节扭曲的下限。
Limit:设置角色关节扭曲的下限值。
Bounciness:设置角色关节扭曲下限的反d值。
Contact Distance:设置用于为了避免抖动而限制的接触距离。
High Twist Limit(扭曲上限) :设置角色关节扭曲的上限。
Limit:设置角色关节扭曲的上限值。
Bounciness:设置角色关节扭曲上限的反d值。
Contact Distance:设置用于为了避免抖动而限制的接触距离。
Swing Limit Spring(d簧的摆动限制)
Spring:设置角色关节摆动的d簧强度。
Damper:设置角色关节摆动的阻尼值。
Swing 1,2 Limit(摆动限制1,2) :1与2的限制是对称的,即更改一个里面的三项属性即可。
Limit:设置角色关节摆动的限制值。
Bounciness:设置角色关节摆动限制的反d值。
Contact Distance:设置用于为了避免抖动而限制的接触距离。
Enable Projection(启动投影) :该项用于激活投影。
Projection Distance(投影距离) :设置当对象与其连接刚体的距离超过投影距离时,该对象会回到适当的位置。
Projection Angle(投影角度) :设置当对象与其连接刚体的角度超过投影角度时,该对象会回到适当的位置。
Break Force(断开力) :控制角色关节断开所需的作用力。
Break Torque(断开转矩) :设置角色关节断开所需的转矩。
Enable Collision(激活碰撞) :勾选该项,则关节之间也会检测碰撞。
Enable Preprocessing(启用预处理) :勾选该项,实现关节的稳定。(该项默认为开启状态)
可配置关节组件支持用户自定义关节,它开放了PhysX引擎中所有与关节相关的属性,因此可像其他类型的关节那样来创造各种行为。
可配置关节有两类主要的功能:移动/旋转限制和移动/旋转加速度。
connected boby(连接刚体) :用于为关节指定要连接的刚体。(若不指定则该关节将与世界相连接)
anchor(锚点) :设置关节的中心点,所有基于物理效果的模拟都会以此点为中心点来进行计算。
axis(主轴) :设置局部旋转轴,该轴决定了对象在物理模拟下自然旋转的方向。
Auto Configure Connected Anchor(自动设置连接锚点) :勾选该项,连接锚点会自动设置。(该项默认为开启状态)
Connected Anchor(连接锚点) :自动连接锚点项开启时,此项会自动设置。自动连接锚点项未开启时,可手动设置连接锚点。
Secondary Axis(副轴) :主轴和副轴共同决定了关节的局部坐标。第三个轴与这两个轴所构成的平面相垂直。
Xmotion(X轴移动) :设置游戏对象在X轴的移动形式,有自由移动(Free)、锁定移动(Locked)及限制性移动(Limited)。
Ymotion(Y轴移动) :设置游戏对象在Y轴的移动形式,有自由移动(Free)、锁定移动(Locked)及限制性移动(Limited)。
Zmotion(Z轴移动) :设置游戏对象在Z轴的移动形式,有自由移动(Free)、锁定移动(Locked)及限制性移动(Limited)。
Angular Xmotion(X轴旋转) :设置游戏对象围绕X轴的旋转形式,有自由旋转(Free)、锁定旋转(Locked)及限制性旋转(Limited)。
Angular Ymotion(Y轴旋转) :设置游戏对象围绕Y轴的旋转形式,有自由旋转(Free)、锁定旋转(Locked)及限制性旋转(Limited)。
Angular Zmotion(Z轴旋转) :设置游戏对象围绕Z轴的旋转形式,有自由旋转(Free)、锁定旋转(Locked)及限制性旋转(Limited)。
Linear Limit Spring(d簧线性限制)
Spring:d簧。设置将对象拉回边界的力。
Damper:阻尼。设置d簧的阻尼值。
Linear Limit(线性限制) :设置自关节原点的距离为基准对其运动边界加以限定。
Limit:限制。设置从原点到边界的距离。
Boundciness:反d。设置当对象到边界时施加给它的反d力。
Contact Distance:设置用于为了避免抖动而限制的接触距离。
Angular X Limit Spring(X轴旋转限制)
Spring:d簧。设置将对象拉回边界的力。
Damper:阻尼。设置d簧的阻尼值。
Low Angular X Limit(X轴旋转下限) :以与关节初始旋转的差值为基础设置旋转约束下限的边界。
Limit:旋转的限制角度。设置对象旋转角度的下限值。
Bounciness:反d。设置当对象到边界时施加给它的反d力。
Contact Distance:设置用于为了避免抖动而限制的接触距离。
High Angular X Limit(X轴旋转上限) :以与关节初始旋转的差值为基础设置旋转约束上限的边界。
Limit:旋转的限制角度。设置对象旋转角度的上限值。
Bounciness:反d。设置当对象到边界时施加给它的反d力。
Contact Distance:设置用于为了避免抖动而限制的接触距离。
Angular YZ Limit Spring(Y轴和Z轴旋转限制)
属性参数同Angular X Limit Spring
Angular Y Limit (Y轴旋转限制)
属性参数同Angular X Limit
Angular Z Limit (Y轴旋转限制)
属性参数同Angular X Limit
Target Position(目标位置) :关节在X,Y,Z三个轴向上应达到的目标位置。
Target Velocity(目标速度) :关节在X,Y,Z三个轴向上应达到的目标速度。
XDrive(X轴驱动) :设置了对象沿局部坐标系X轴的运动形式。
Position Spring:位置d簧力。朝预定义方向上的皮筋的拉力。
Position Damper:位置阻尼。抵抗位置d簧力的力。
Maximum Force:最大作用力。推动对象朝预定方向运动的作用力的总和。
YDrive(Y轴驱动) :设置了对象沿局部坐标系Y轴的运动形式。
属性参数同XDrive
ZDrive(Z轴驱动) :设置了对象沿局部坐标系Z轴的运动形式。
属性参数同XDrive
Target Rotation(目标旋转) :目标旋转是一个四元数,它定义了关节应当旋转到的角度。
Target Angular Velocity(目标旋转角速度) :目标旋转角速度是一个三维向量,它定义了关节应当旋转到的角速度。
Rotation Drive Mode (旋转驱动模式) :通过X&YZ轴驱动或插值驱动来控制对象自身的旋转。
Angular X Drive (X轴角驱动) :设置了关节如何围绕X轴进行旋转。
Position Spring:位置d簧力。朝预定义方向上的皮筋的拉力。
Position Damper:位置阻尼。抵抗位置d簧力的力。
Maximum Force:最大作用力。推动对象朝预定方向运动的作用力的总和。
Angular YZ Drive (YZ轴角驱动) :设置了关节如何围绕自身的Y轴和Z轴进行旋转。
属性参数同Angular X Drive
Slerp Drive(差值驱动) :设置了关节如何围绕局部所有的坐标轴进行旋转。
属性参数同Angular X Drive
Projection Mode(投影模式) :设置当对象离开其限定的位置过远时,会让该对象回到其受限制的位置。可设置为位置和旋转(Position and Rotation)以及不选择(None)。
Projection Distance(投射距离) :设置当对象与其连接刚体的距离超过投影距离时,该对象会回到适当的位置。
Projection Angle(投影角度) :设置当对象与其连接刚体的角度差超过投影角度时,该对象会回到适当的位置。
Configured In World Space(在世界坐标系中配置) :勾选该项,所有与目标相关的数值都会在世界坐标系中来计算,而不在对象的局部坐标系中计算。
Swap Bodies(交换体) :勾选该项,则应用交换刚体功能,连接着的两个刚体会发生交换。
Break Force(断开力) :设置控制关节断开所需的作用力。
Break Torque(断开转矩) :设置关节断开所需的转矩。
Enable Collision(激活碰撞) :勾选该项,关节之间也会检测碰撞。
Enable Preprocessing(启用预处理) :勾选该项,实现关节的稳定。(该项默认为开启状态)
1、按下鼠标转轴可拖动场景,滚动转轴缩放场景,鼠标右键旋转场景,按Q键,左键可移动场景。
2、鼠标右键,按下W/S/A/D/Q/E,可场景漫游,在Scene面板选中物体按F键,可以将物体设置为场景中心。
3、按住Alt键通过鼠标左键旋转场景,鼠标右键缩放场景顶点吸附:选择物体后按V键,定位顶点,拖拽至目标顶点即可吸附坐标轴。
以上就是关于unity3d萌新,关于curves全部的内容,包括:unity3d萌新,关于curves、unity怎么获取物体、《Unity Shader入门精要》笔记(三)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)