分享

物理关节,SpringJoint

 雪柳花明 2016-04-29
铰链关节可以使得被连接的刚体绕着锚点和轴向进行旋转,在制作像链条那样的对象,就像一段长度固定的绳子绑在刚体的两端,如果需要实现像橡皮筋那样的效果,那么需要使用弹簧关节。Spring Joint .

使用弹簧关节与铰链关节相似,而且他的属性要比铰链关节要少的多。

弹簧关节 (Spring Joint)        

弹簧关节 (Spring Joint) 将两个刚体 (Rigidbody) 组合在一起,从而将其约束为如同通过弹簧连接一样进行移动。


弹簧关节 (Spring Joint) 检视器 (Inspector)

属性

属性:功能:
连接体 (Connected Body)对关节 (Joint) 所依赖的刚体 (Rigidbody) 的可选引用。
锚点 (Anchor)对象局部坐标空间中定义关节 (Joint) 中心的位置(静止时)。这不是将对象拉向的位置。
X关节 (Joint) 局部坐标中心沿 X 轴的位置。
Y关节 (Joint) 局部坐标中心沿 Y 轴的位置。
Z关节 (Joint) 局部坐标中心沿 Z 轴的位置。
弹簧 (Spring)弹簧的强度。
阻尼 (Damper)弹簧在处于活动状态时缩减的量
最小距离 (Min Distance)大于此值的距离不会使弹簧激活。
最大距离 (Max Distance)小于此值的距离不会使弹簧激活。
折断力 (Break Force)为使此关节 (Joint) 折断而需要应用的力。
折断扭矩 (Break Torque)为使此关节 (Joint) 折断而需要应用的扭矩。

详细信息

弹簧关节 (Spring Joint) 使刚体化 (Rigidbodied) 游戏对象 (GameObject) 可以被拉向特定“目标”位置。此位置为另一个刚体化 (Rigidbodied) 游戏对象 (GameObject) 或世界坐标。随着游戏对象 (GameObject) 背向此“目标”位置前进得更远,弹簧关节 (Spring Joint) 会应用力,该力将对象拉回到其原始“目标”位置。这会形成非常类似于橡皮筋或弹弓的效果。

创建弹簧关节 (Spring Joint) 时或进入“播放”(Play) 模式时,弹簧的“目标”位置由锚点 (Anchor) 到连接体 (Connected Body) (或世界坐标)的相对位置确定。这使弹簧关节 (Spring Joint) 对于在编辑器中设置带关节角色或对象非常有效,但是更难以通过脚本在运行时创建推/拉弹簧行为。如果要主要使用弹簧关节 (Spring Joint) 控制游戏对象 (GameObject),则最好创建带刚体 (Rigidbody) 的空游戏对象 (GameObject),并将其设置为带关节对象的连接刚体 (Connected Rigidbody) 。随后在脚本中可以更改连接刚体 (Connected Rigidbody) 的位置并看到弹簧按预期方式移动。

连接刚体 (Connected Rigidbody)

无需将连接刚体 (Connected Rigidbody) 用于关节 (Joint) 即可使其工作。一般而言,仅当对象位置和/或旋转依赖于连接刚体 (Connected Rigidbody) 才应使用它。如果不存在连接刚体 (Connected Rigidbody),则弹簧会连接到世界坐标。

弹簧 (Spring) 和阻尼 (Damper)

弹簧 (Spring) 是将对象朝其“目标”位置拉回的力的强度。如果此值为 0,则不会有拉动对象的力,行为方式如同根本未附加弹簧关节 (Spring Joint) 时一样。阻尼 (Damper) 是弹簧 (Spring) 力遇到的阻力。此值越低,对象弹性越大。随着阻尼 (Damper) 增大,关节 (Joint) 形成的弹力量会减小。

最小距离 (Min Distance) 和最大距离 (Max Distance)

如果对象位置处于最小距离 (Min Distances) 与最大距离 (Max Distances),之间,则不会将关节 (Joint) 应用于对象。位置必须移动超出这些值范围才能使关节 (Joint) 激活。

提示

  • 无需将连接体 (Connected Body) 分配给关节 (Joint) 即可使其工作。

  • 在进入“播放”(Play) 模式之前在编辑器中设置带关节对象的理想位置。

  • 弹簧关节 (Spring Joint) 需要向对象附加刚体 (Rigidbody)。


Fixed Joint
固定关节更加简单,它可以模拟一个刚体钉在另一个物体上的效果,它的效果与父子关系的游戏对象一样,父物体移动,子物体也会继承父物体的运动方式,只是使用固定关节是通过物理引擎来模拟。

固定关节 (Fixed Joint)        

固定关节 (Fixed Joint) 将对象移动限制为依赖于其他对象。这在某种程度上类似于父子化 (Parenting),不过是通过物理而不是变换层级结构来实现。使用它们的最佳情况是在具有要方便地相互分离的对象,或是连接两个对象的移动而不进行父子化时。


固定关节 (Fixed Joint) 检视器 (Inspector)

属性

属性:功能:
连接体 (Connected Body)对关节 (Joint) 所依赖的刚体 (Rigidbody) 的可选引用。如果未设置,则关节 (Joint) 连接到世界坐标。
折断力 (Break Force)为使此关节 (Joint) 折断而需要应用的力。
折断扭矩 (Break Torque)为使此关节 (Joint) 折断而需要应用的扭矩。

详细信息

游戏中可能存在希望对象永久或临时附着在一起的情况。固定关节 (Fixed Joint) 可以是用于这些情况的良好组件 (Component),因为您不必为对象层级结构中的变化编写脚本即可实现所需效果。折衷之处是必须对使用固定关节 (Fixed Joint) 的任何对象使用刚体 (Rigidbody)

例如,如果要使用“黏性炸弹”,则可以编写检测与其他刚体 (Rigidbody)(如敌人)的碰撞的脚本,然后创建将自己附加到该刚体 (Rigidbody) 的固定关节 (Fixed Joint)。随后随着敌人四处移动,关节 (Joint) 会使炸弹黏住它们。

折断关节 (Joint)

可以使用折断力 (Break Force) 和折断扭矩 (Break Torque) 属性为关节 (Joint) 强度设置限制。如果这些限制小于无穷大,并且将大于这些限制的力/扭矩应用于对象,则其固定关节 (Fixed Joint) 会毁坏,不再受其限制约束。

提示

  • 无需将连接体 (Connected Body) 分配给关节 (Joint) 即可使其工作。

  • 固定关节 (Fixed Joint) 需要刚体 (Rigidbody)。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多