我正在做一个台球游戏,所以我的重力被设置为零,我应用脉冲来使主球移动。因为没有重力,我同时使用线性阻尼和角阻尼来减慢球的速度。
虽然球有一些不错的速度,但它们会实际地减速。问题是,当他们减速很多,即将停止,但实际上没有停止大约4-5秒,这是非常不现实的。
我认为其中一个解决方案是检查每一帧球的速度,如果它低于某个数字(即当球即将停止时),将其设为零以停止对象。这种方法的问题是,我正在制作一个多人游戏,其中两个玩家的帧速率可能略有不同,从而使同一镜头的两个模拟不一致。
有没有人能想到其他的解决方案?
发布于 2012-01-20 22:58:42
我的猜测是,你需要非线性阻尼,所以尝试编辑每一帧上的线性阻尼值,并使用基于当前速度的公式。
发布于 2012-01-20 14:59:47
尝试使用b2Body的线性阻尼参数
body->SetLinearDamping(0.1f);发布于 2012-06-09 11:45:17
如果你正在制作一个多人游戏,你需要一个裁判来确保没有不一致的地方。两个客户端都连接到的服务器或一个(或两个)客户端可以是主机。
重要的是,每个镜头都经过计算,并在显示之前发送给双方。因为台球是以回合为基础的。每个客户端都可以托管自己的镜头,并将结果发送到对手的游戏实例中进行“重播”。这也意味着延迟应该不是太大的问题,所以你可以逐帧发送球的位置(虽然这不是最优的,但它是最容易实现的)。
如果你想要一些你可以用来连接而不需要设置服务器的东西,看看pubnub (http://www.pubnub.com/)。帐户设置和开发是免费的,并且相对容易设置。
希望这能有所帮助!^^
https://stackoverflow.com/questions/8934889
复制相似问题