【发布时间】:2012-01-15 01:33:23
【问题描述】:
我正在制作一个玩家用手指拖船的游戏。我将 Box2D 用于游戏的物理方面。特别是,我使用b2MouseJoint 将触摸事件附加到船,让触摸事件拖动船。
但是有一个问题,船在被拖的时候移动的方式是不现实的;它可以简单地向任何方向拖动,而在现实世界中,船只能沿其长度移动,并且会有水阻力,因此很难改变船的运动方向。因此,我需要一种模拟水阻力的方法,以使船的运动逼真。
是否可以在 Box2D 中进行模拟?线性阻尼和角阻尼只是让船很难移动,但我只是希望船容易向一个方向移动,它应该只抵抗方向的改变。
P.S.我认为我不需要为这个问题发布我的代码,但如果您想查看代码摘录,请告诉我。
【问题讨论】:
-
您是否尝试过使用drag equation?横截面积项 A 将根据船相对于其速度的方向而变化,这应该可以满足您的需求。而且你总是可以用一些廉价的启发式方法来估计 A。
-
@Rahul,感谢您的提示。我已经使用一些近似技术将阻力方程添加到代码中(例如使用速度与船的角度来得出参考区域),我可以看到在最新代码中模拟了一些水阻力,但似乎有一些疯狂的运动时船与世界边界相撞。在在这里寻求进一步帮助之前,我试图弄清楚出了什么问题。再次感谢您的提示。
-
一个厚颜无耻的解决方法可能是创建许多质量很小的非常小的圆形物体来填充船周围的空间。我还没有在物理或处理能力方面测试它的可行性(尚未),这就是为什么我没有将其作为正确答案提交。
标签: box2d box2d-iphone