Unity 组件学习笔记
Rigidbody组件解析
一.属性
1.Mass 「质量」
设置物体的质量,也就是重量。质量单位是KG。
2.Drag 「阻力」
物体所受的空气阻力,0表示无阻力,值很大时物体会停止运动。
3.Angular Drag 「角阻力」
受到扭曲力时的空气阻力,0表示无阻力,值很大时物体会停止运动。
4.Use Gravity 「是否使用重力」
二.方法
1.使用刚体移动物体
Rigidbody.MovePosition(Vector3)
:使用刚体移动物体的位置。
Vector3
还需加上自身位置。
使用刚体移动物体,物体是根据世界坐标系的方向移动的。
使用刚体移动物体,物体会触发物理相关的事件
。
2.AddForce()
①作用
给刚体添加一个力,让刚体按「世界坐标系」
进行运动。
②代码
1 | Rigidbody.AddForce(Vector3,ForceMode); |
Vector3:力的方向和大小;
ForceMode:力的模式「enum类型」
。
3.AddRelativeForce()
①作用
给刚体添加一个力,让刚体按「自身坐标系」
进行运动。
②代码
1 | Rigidbody.AddRelativeForce(Vector3,ForceMode); |
Vector3:力的方向和大小;
ForceMode:力的模式「enum类型」。
PS.如果运用在球体上,球体滚动旋转会导致自身坐标系方向发生改变,于是会像这样来回滚动。
4.FixedUpdate()
固定更新方法。
所有和物理相关
的操作,代码都要写在FixedUpdate()
方法体内。
固定更新的时间间隔是0.02秒,1秒执行50次。
Edit->Project Settings->Time面板中的Fixed Timestep参数设置。
Update()方法是每一帧执行一次。
画面每渲染完一次,就是一帧,每帧的时间是不固定的。
在Update()方法中执行物理操作,会出现卡顿的情况。
碰撞体组件
使用刚体移动的物体,与场景中其他的物体相碰撞:
其实是碰撞的目标物体的「碰撞体」
组件,也就是Collider
。
另外和目标物体碰撞的,是我们移动的物体的自身的「碰撞体」组件。
碰撞体可以理解为我们的“外骨骼”。
模型只要加了刚体就必须要加碰撞体,否则没有意义。
Box Collider「盒型碰撞体」
①简介
盒子碰撞体,形状是立方体形,用于包裹类似“立方体”的模型,比如:盒子,箱子,门,房子等。
②组件属性
Center 「中心点」
设置Box Collider的中心点
Size 「大小」
设置Box Collider的大小
Sphere Collider「球形碰撞体」
①简介
球形碰撞体,形状是球形,用于包裹类似“球形”的模型
②组件属性
Radius「半径」
设置Sphere Collider的大小
Capsule Collider「胶囊碰撞体」
①简介
胶囊碰撞体,形状是胶囊状,用于包裹“胶囊形”的模型。
②组件属性
Height「高度」
设置Capsule Collider的高度
Direction「方向」
设置Capsule Collider的高度方向「轴向」
Mesh Collider「网格碰撞体」
①简介
网格碰撞体,用于包裹复杂结构的模型。
②组件属性
Mesh「网格」
根据指定的网格,生成碰撞体。
碰撞监测与处理
物理碰撞方法:
1.OnCollisionEnter
碰撞开始执行一次。
2.OnCollisionExit
碰撞结束执行一次。
3.OnCollisionStay
碰撞中一直执行。
触发器碰撞监测「Trigger」
1.OnTriggerEnter
2.OnTriggerExit
3.OnTriggerStay
触发器不触发相关物理效果,由刚体操作的物体会直接穿过触发器而不进行碰撞。
模型中心点
模型身上的坐标轴的中心点,也就是我们模型的中心点。
模型位置、旋转、缩放都是基于模型的中心点来进行变化的。
改变模型中心点
创建一个空物体,创建父子关系,通过父物体来控制子物体。
也就间接的改变了模型的中心点。
中心点工具
Center:当选中两个模型的时候,设置为「Center」,模型组的中心点就在两个模型的中间中心位置。
Pivot:当选中两个模型的时候,设置为「Pivot」,模型组的中心点就在后选中的模型的中心点位置。