我制作了一个简单的多循环蛇身。我在每个身体之间有一个6DOFConstraint,角度是通过增加/减少旋转的上限和下限来控制的,从而改变角度。
绕水平轴旋转效果很好,但是当绕垂直轴旋转时,一旦达到大约1.05rads的角度,两个物体就会剧烈振动。
屏幕截图可以在这里找到,其中的描述更详细地介绍了我所做的事情:
http://www.youtube.com/watch?v=OQu-YyxLvbw
以下屏幕截图显示了蛇的“头部”在约束仍然存在的情况下线性分离,以尝试消除发生碰撞问题的可能性:
http://www.youtube.com/watch?v=6wso6HDjqXA
我尝试了以下技术来解决问题,但都没有奏效:
- 将恢复(弹性)设置为非常低——同样的情况
- 将线性阻尼和角度阻尼都设置为 0
到 1 之间的值范围——同样的情况 - 将角度设置为从大于 1.05 开始 - 发生同样的情况。
- 继续增加超过 1.05 的角度,看看是否平静下来——相反的情况会发生,它会变得更加猛烈。
- 试穿单关节——同样的情况
- 检查深度渗透 - 不存在
- 线性分离两个物体以排除碰撞问题,但保持关节相同——同样发生。
- 将蛇(除了头部以外的所有部分的质量 = 0f)漂浮在地面上以消除地面相互作用 - 也会发生同样的情况
- 在锁定位置关闭重力 - 行为延迟到 1.43rads
- 增加蛇的大小(比例),因为众所周知,jBullet 在较小的项目上存在渲染问题——没有变化。
- 尝试将身体更改为胶囊形状 - 没有变化