关于BOX2D&FarseerPhysics距离关节模拟弹簧的问题

清晨曦月
博客专家认证
2016-10-02 08:13:02
在用FarseerPhysics引擎写一个小程序的时候遇见了一个问题:
关节和物体的情况是:一个竖直弹簧顶端连接静态物体,底端连接动态物体。
我想要的效果是:当释放物体时,由于重力作用物体向下运动,之后在平衡位置附近做往复运动,没有外力干扰永远也不会停止。
但实际上即使弹簧的阻尼比设置为0,物体因为重力向下运动之后,振幅也会很快递减,很快在平衡位置停留下来。

弹簧使用的是距离关节,这个关节能实现我要的效果吗?是从哪里来的力阻碍了运动?其他关节能实现吗?

如果确实不行,只能自己实现一个弹簧关节了…………
...全文
397 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 2016-10-06
  • 打赏
  • 举报
回复
这个关节只有这么几种属性 是否参与碰撞计算 _DistanceJoint.CollideConnected = True 阻尼比 _DistanceJoint.DampingRatio = _DampingRatio 频率 _DistanceJoint.Frequency = _Frequency 长度 _DistanceJoint.Length = ConvertUnits.ToSimUnits(_Length) 连接的物体A,物体B,连接点A,连接点B 引擎源码中各种量是通过这些计算得来的。
清晨曦月 2016-10-05
  • 打赏
  • 举报
回复
我的理解应该是阻尼比为0时就能打到目的。但实际上为0也会很快衰减。
清晨曦月 2016-10-05
  • 打赏
  • 举报
回复
木有的,频率为0会被忽略直接运动到长度位置。接近0的值会导致震动周期更长,表现就是下落很久也不会上来了。。。
xinbada1985 2016-10-05
  • 打赏
  • 举报
回复
1.你看一下是不是有恢复指数,能不能设定恢复指数,压下后在恢复到原来位子, 2.是不是能够固定振幅,这样争取保证幅度固定化!
Poopaye 2016-10-04
  • 打赏
  • 举报
回复
我是想说频率设置为0是不是有效果
清晨曦月 2016-10-04
  • 打赏
  • 举报
回复
不过频率看似没关系,设置了一些值都没什么效果,
清晨曦月 2016-10-04
  • 打赏
  • 举报
回复
是的一个封装自BOX2D的引擎,提供了一些其他的功能。但是核心基本相同
Poopaye 2016-10-03
  • 打赏
  • 举报
回复
Frequency?

110,501

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧