Answers:
我正在用bullet来做这种事情,但是同样的技术可以用在任何物理引擎上。浮力是通过将假想的浮子附着到物体上来建模的,该浮子只需在不连续的点上根据其在水面以下的深度施加力即可。
在时间步中,每个浮标都在其位置测试水位,然后在相对于船的位置向船的刚体施加力。我想像每个浮子都是圆柱体,总是垂直于船的方向。力与它们的浸入深度成正比,最大取决于其体积。
目前,该船只有4个浮标-船首,船尾,左舷和右舷。我手动设置它们的体积以提供足够的力来抵消重力,然后调整位置和圆柱长度以调整船的移动方式。我有一个模糊的想法,就是通过将圆柱体装进刚体体积中来生成浮子,但这是未来的事情。
youtube上有一个简短的演示船在波浪中航行的演示。
Farseer物理学支持所有类型的力和节律应用,因此这不是问题,我不确定100%是否可以肯定Farseer是否已经支持流体(用于水),但是如果可以的话。(还请注意,Farseer是2D物理引擎)