在没有重力的情况下放慢box2d中的物体
我正在打一场台球比赛,所以我的重力被设置为零,我应用冲动来提示球移动。 因为没有重力,我同时使用线性和角度阻尼来减缓球落下。
虽然球有一些体面的速度,但他们实际上减速。 问题开始的时候,他们放缓了很多,即将停止,但实际上并没有停止像4-5秒,这看起来是不切实际的。
我认为的一个解决方案是检查每一帧的速度,如果它的波纹数目很低(即当球即将停止时),将其设为零以停止物体。 这种方法的问题是我正在制作一个多人游戏,其中两个玩家可以有一个稍微不同的帧速率,从而使同一个镜头的两个模拟不一致。
任何人都可以想到其他解决方案吗?
我的猜测是你需要非线性阻尼,所以尝试在每帧上编辑线性阻尼值,并使用基于当前速度的公式。
尝试使用b2Body
线性阻尼参数:
body->SetLinearDamping(0.1f);
如果你正在制作一款多人游戏,你需要一名裁判来确保没有不一致。 无论是客户端连接到的服务器还是一个(或两个)客户端都可以成为主机。
重要的是每个镜头在计算之前都会被计算并发送给双方。 由于台球是基于回合的。 每个客户可以主持他们自己的镜头,并将结果发送到对手游戏实例中“重播”。 这也意味着等待时间不应该太大,所以你可以逐帧发送帧(虽然这不是最优的,但它是最容易实现的)。
如果你想要一些你可以用来连接的东西,而不需要建立一个服务器,可以看看pubnub(http://www.pubnub.com/)。 账户设置和开发是免费的,并且设置起来相对容易。
希望这可以帮助! ^^
链接地址: http://www.djcxy.com/p/66159.html