我正在制作一个台球游戏,所以我的引力设置为零,我施加冲动使母球移动。因为没有重力,我使用线性和角度阻尼来减慢球的速度。
虽然球有一些不错的速度,但它们实际上会减速。问题开始的时候,他们经常放慢速度并且即将停止,但实际上并没有停留4-5秒,这看起来非常不切实际。
我认为其中一个解决方案是检查每一帧球的速度,如果它低于某个数字(即当球即将停止时),则将其设为零以停止物体。这种方法的问题在于我正在制作一个多人游戏,其中两个玩家的帧速率可能略有不同,从而使同一个镜头的两个模拟不一致。
有人能想到任何其他解决方案吗?
答案 0 :(得分:3)
尝试使用b2Body
的线性阻尼参数:
body->SetLinearDamping(0.1f);
答案 1 :(得分:3)
我的猜测是你需要非线性阻尼,所以尝试在每一帧上编辑线性阻尼值,并使用基于当前速度的公式。
答案 2 :(得分:1)
如果你正在制作一个多人游戏,你需要一个裁判来确保没有不一致。客户端连接到的服务器或客户端中的一个(或两个)都可以是主机。
重要的是,每个镜头都会被计算出来并在显示之前发送给双方。由于台球是回合制的。每个客户端都可以托管自己的镜头并将结果发送到对手游戏实例中“重放”。这也意味着延迟不应该是一个问题,所以你可以逐帧发送(虽然这不是最佳的,但最容易实现)。
如果你想要一些你可以用来连接的东西,而不需要设置服务器,那就看看pubnub(http://www.pubnub.com/)。帐户设置和开发是免费的,并且设置起来相对容易。
希望这有帮助! ^^