Unity3D笔记第十天——刚体及物理材质

来源:互联网 发布:阿里云服务器登陆 编辑:程序博客网 时间:2024/04/25 21:37
刚体(Rigidbody)
刚体 (Rigidbody) 使游戏对象 (GameObject) 在物理控制之下行动。刚体 (Rigidbody) 可以接收力和扭矩以使对象采用逼真方式移动。任


何游戏对象 (GameObject) 必须包含刚体 (Rigidbody) 才能受重力影响、在添加的力作用下行动(通过脚本)或是与其他对象交互(通过 


NVIDIA PhysX 物理引擎)。 


刚体组件属性解析
质量 (Mass):对象的质量(任意单位)。不应使质量比其他刚体 (Rigidbody) 质量大或小 100 倍。
阻力 (Drag):在由于施加力而移动时空气阻力对对象的影响程度。0 表示无空气阻力,无穷大使对象立即停止移动。
角阻力 :(Angular Drag):在由于施加扭矩而旋转时,空气阻力对对象的影响程度。0 表示无空气阻力。
注意:不能仅仅通过将其“角阻力”(Angular Drag) 设置为无穷大使对象停止旋转。
使用重力(Use Gravity):如果启用,则对象受重力影响。
为运动学(Is Kinematic):如果启用,则对象不会由物理引擎驱动,只能通过其变换 (Transform)进行处理。对于移动平台,或是如果要对


附加了铰链关节 (HingeJoint) 的刚体 (Rigidbody) 进行动画处理,这十分有用。
插值 (Interpolate):仅当在刚体 (Rigidbody) 移动中发现不平稳时,才尝试这些选项之一。
无 (None):不应用插值。
内插 (Interpolate)
变换 (Transform) 基于上一帧的变换 (Transform) 进行平滑处理。
外插 (Extrapolate):变换 (Transform) 基于下一帧的估计变换 (Transform) 进行平滑处理。
约束 (Constraints):对刚体 (Rigidbody) 运动的限制:
冻结位置 (Freeze Position):选择性地在世界坐标 X、Y 和 Z 轴上停止刚体 (Rigidbody) 移动。
冻结旋转 (Freeze Rotation):选择性地停止刚体 (Rigidbody) 围绕世界坐标 X、Y 和 Z 轴的旋转。

刚体组件属性解析
碰撞检测 (Collision Detection):用于防止快速移动的对象在不检测碰撞的情况下穿过其他对象。
离散 (Discrete):对场景中的所有其他碰撞体使用离散碰撞检测。其他碰撞体将在对其测试碰撞时使用离散 (Discreet) 碰撞检测


。用于普通碰撞(这是默认值)。
连续 (Continuous):对动态碰撞体使用离散碰撞检测,对静态网格碰撞体 (MeshCollider)使用连续 (Continuous) 碰撞检测。
在对刚体进行测试碰撞时,设置为“连续动态”(Continuous Dynamic) 的刚体 将使用连续 (Continuous) 碰撞检测。其


他刚体会使用离散 (Discreet) 碰撞检测。用于连续动态(Continuous Dynamic) 检测需要与之碰撞的对象。(这对物理性


能具有较大影响,如果对快速对象的碰撞没有问题,请将其设置为“离散”(Discreet))
连续动态 (Continuous Dynamic):对设置为“连续”(Continuous) 和“连续动态”(Continuous Dynamic) 碰撞的对象使用连续


(Continuous) 碰撞检测。它也会对静态网格碰撞体 (MeshCollider)也将使用连续 (Continuous) 碰撞检测。对于所有其


他碰撞体,它使用离散 (Discreet) 碰撞检测。用于快速移动的对象。


刚体属性解析
velocity:刚体的速度向量 例:rigidbody.velocity = new Vector3(0, 10, 0); 
isKinematic:控制物理学是否够影响这个刚体。 例:rigidbody.isKinematic = true; 
mass:刚体的质量 例:rigidbody.mass = 0.5f; 
maxAngularVelocity:刚体的最大角速度,(默认7)范围{0, infinity} 例:rigidbody.maxAngularVelocity = 10; 
position:该刚体的位置 例:rigidbody.position = Vector3.zero; 
rotation:该刚体的旋转 例:rigidbody.rotation = Quaternion.identity; 
AddForce:添加一个力到刚体,全局坐标 例: rigidbody.sleepVelocity = 0.1f; 
AddTorque:添加一个力矩到刚体,全局坐标 例:rigidbody.sleepAngularVelocity = 0.1f;
AddRelativeForce:添加一个力到刚体,自身坐标 例:rigidbody.useConeFriction = true; 
AddRelativeTorque:添加一个力矩到刚体,自身坐标 例:other.attachedRigidbody.useGravity = false; 
AddForceAtPosition:在position位置应用force力,作为结果这个将在这个物体上应用一个力矩和力
例:rigidbody.velocity = new Vector3(0, 10, 0); 
AddExplosionForce:应用一个力到刚体来模拟爆炸效果;爆炸力将随着到刚体的距离线形衰减
例:Debug.Log(rigidbody.worldCenterOfMass); 


Physics Material
物理材质 (Physics Material) 用于调整碰撞对象的摩擦力和反弹效果。摩擦力、弹力和柔软度是由物理材质决定的。
Unity提供的物理材质资源包中包含了大部分常见的物理材质。


创建Physics Material
创建方法:1.在Project视图中,点击鼠标右键,依次点击Create->Physic Material即可。
 2.点击菜单栏Assets,然后依次点击Create->Physic Material即可。
Physics Material应用
将物理材质 (Physics Material) 从“工程视图”(Project View) 拖动到场景中的碰撞体 (Collider) 上。
或拖动到Collider组件的Material栏


Physics Material属性
动态摩擦力 (Dynamic Friction):已在移动时使用的摩擦力。通
常值为 0 至 1。值 0 的状态类似于冰,值 1 会使其非常快速的静止下来,除非有很大的力或重力推动对象。
静态摩擦力 (Static Friction):对象在某个表面上保持静止时使用的摩擦力。
通常值为 0 至 1。值 0 的状态类似于冰,值 1 会使对象非常难以移动。
弹力 (Bounciness):表面的反弹程度。值 0 不会反弹。值 1 会反弹而不损失任何能量。
摩擦力合并模式 (Friction Combine Mode):两个碰撞对象摩擦力的合并方式。
平均值 (Average):计算两个摩擦力值的平均值。
最小 (Min):使用两个值的较小值。
最大 (Max):使用两个值的较大值。
相乘 (Multiply):摩擦力值相互相乘。
合并反弹 (Bounce Combine):两个碰撞对象弹力的合并方式。其模式与“摩擦力合并模式”(Friction Combine Mode) 相同
相乘 (Multiply):摩擦力值相互相乘。
合并反弹 (Bounce Combine):两个碰撞对象弹力的合并方式。其模式与“摩擦力合并模式”(Friction Combine Mode) 相同
摩擦力方向 2 (Friction Direction 2):各向异性方向。如果此方向不为零,则启用各向异性摩擦力。“动态摩擦力 2”(Dynamic


Friction 2) 和“静态摩擦力 2”(Static Friction 2) 会随“摩擦力方向 2”(Friction Direction 2) 一起应用。
动态摩擦力 2 (Dynamic Friction 2):如果启用各向异性摩擦力,则“动态摩擦力 2”(DynamicFriction2) 会随“摩擦力方向 2”


(Friction Direction 2) 一起应用。
静态摩擦力 2 (Static Friction 2):如果启用各向异性摩擦力,则“静态摩擦力 2”(StaticFriction2) 会随“摩擦力方向


2”(Friction Direction 2) 一起应用。
0 0