Unity-Physics
Unity-Physics
2D
Physics 2D Settings
用于设置一些全局属性,如重力大小,层与层之间的碰撞关系
Rigidbody 2D
设置面板如下:
- Body Type:
- Dynamic:受到力的影响
- Kinematic:不会受到力的影响(包括重力),物体运动受代码控制
- Static:永不移动,只会与动态刚体碰撞,除非设置useFullKinematicContacts,它将和Kinematic刚体碰撞
- Material:物体的材质,可以设置弹性和摩擦属性
- Simulated:如果取消勾选,则该物体不受力的影响,且不和其他物体产生接触
- Use Auto Mass:是否根据碰撞器检测质量
- Mass:物体的质量,这会影响物体的惯性、碰撞等
- Linear Drag:运动阻力
- Angular Drag:旋转阻力
- Gravity Scale:重力对物体的影响
- Collision Detection:碰撞检测
- Discrete:离散检测,不适用于高速物体
- Continuous:连续检测,适用于高速物体,但是会消耗性能
- Sleep Mode:睡眠模式
- Never Sleep:很消耗性能,尽量不要用
- Start Awake:初始化时唤醒
- Start Asleep:最初为睡眠状态(不受重力影响),被碰撞后才唤醒
- Interpolate:是否在更新之间插值(一般用于移动不稳定的情况)
- None:不插值
- Interpolate:根据前一帧插值
- Extrapolate:根据后一帧预估插值
- Constraints:锁定方向或者旋转
Collider 2D
Circle Collider 2D
- Material:设置碰撞体的材质(Physics Material 2D),可以设置摩擦力和弹性系数
- Is Trigger:是否为触发体,如果勾选,代表可以被穿过
- Used By Effector:是否能够被Effector 2D使用
- Offset:调整碰撞体的偏移位置
- Radius:调整碰撞体的半径
Box Collider 2D
大部分属性和Circle Collider 2D相同,但也有一些特殊的属性
polygon collider 2D
多边形碰撞体,必须是闭合的图形
编辑:直接在多边形的边上点击以添加新的结点,按住ctrl后移动到边上会显示为红色,点击后合并红色的边
edge collider 2D
可以不是闭合的,用作地形碰撞
编辑方法同上
Hinge Joint 2D
铰链接合组件,可用于制作活动门、铁链等需要旋转的物体,该组件必须配合Rigidbody 2D使用
- Enable Collision:勾选后,该游戏对象和连接的刚体之间会发生碰撞,否则能够穿过刚体
- Connected Rigid Body:连接的刚体组件
- Auto Configure Connected Anchor:自动设置锚点和连接锚点
- Anchor:锚点,物体旋转的轴
- Connected Anchor:连接锚点,如果物体锚点偏离了连接锚点,则物体会被瞬移回去,因此相当于一个固定点
- Use Motor:使用驱动力,勾选后,可以设置驱动速度
- Motor Speed:需要达到的最大驱动速度,正方向为顺时针
- Maximum Motor Force:施加用于达到驱动速度的力,如果该值过小,则无法达到驱动速度
- Use Limits:设置旋转的角度
- Lower Angle:最小允许旋转角度
- Upper Angle:最大允许旋转角度
- Break Force:能够破坏铰链的力的大小
- Break Torque:能够破坏铰链的力矩的大小
通过合理的设置上述属性,能够设计一些有趣的机关:
- 弹簧木板:木板被碰撞打开后能够回到原来的位置,可以通过使用驱动力和限制角度实现
- 锁链:为每个锁环设置Hinge Joint 2D组件,并连接上一个组件,最后利用Distance Joint 2D限制悬挂物体到支点的距离
详细步骤见:Hinge Joint 2D - Official Unity Tutorial - YouTube
Area Effector 2D
- Use Collider Mask:使用碰撞器蒙版
- Force
- Use Global Angle:力的方向相对于全局
- Force Angle:力的方向,默认是相对自身(且不受物体绕y轴的影响),除非勾选Global Angle
- Force Magnitude:力的大小
- Force Variation:给力添加一个随机量,即最终的合力由Magnitude加上0到Variation之间的值
- Force Target:
- Rigidbody:受影响物体为刚体
- Collider:受影响物体为碰撞体,且会旋转
- Damping:
- Drag:运动阻力大小,可以用来限制物体在其他方向的移动
- Angular Drag:旋转阻力大小
Distance Joint 2D
用于限制刚体和其连接刚体之间的距离
- Enable Collision:勾选后,连接刚体和该物体之间可以碰撞
- Connected Rigid Body:连接的刚体
- Auto Configure Connected Anchor:勾选后,自动设置连接锚点的位置
- Anchor:物体需要回归的位置
- Connected Anchor:连接刚体的锚点
- Auto Configure Distance:自动设置两个锚点之间的距离
- Distance:两个锚点之间的距离
- Max Distance Only:勾选后,物体可以移动到两个锚点之间的位置,否则只能做圆周运动
- Break Force:能够破坏该组件的力
Point Effector 2D
可以用于产生类似于爆炸或者磁铁的效果
- Use Collider Mask:使用蒙版
- Force:
- Force Magnitude:力的大小,正方向指向力的源头
- Force Variation:附加一个随机大小的力,最大值为设置的值
- Distance Scale:产生效果的物理距离相对于实际距离的大小,只有Force Mode设置为非Constant只时才会生效,以线性模式举例,如果Scale为5,则计算力的大小时距离取实际距离的5倍
- Force Source:力的来源
- Collider:来源为Collider的中心点
- Rigidbody:来源为质点
- Force Target:力的目标
- Collider:只有碰撞体受影响
- Rigidbody:只有刚体受影响
- Force Mode:力的模式(力关于距离的函数)
- Constant:恒定力,不受距离影响
- Inverse Linear:距离和力的大小呈线性相反关系
- Inverse Squared:距离和力的大小呈平方相反关系
- Drag:线性移动的阻力,可以防止物体移动越过中心点
- Angular Drag:旋转阻力
3D
Unity-Physics
http://example.com/2023/01/10/Unity-Physics/