我使用c#和lidgren制作了一个简单的网络xna游戏。但是在朋友的计算机上物体的速度是不同的 - 窗口的分辨率是相同的,fps是相同的(都是60),应用是相同的,但是他的角色由于某种原因只是慢了。有一段时间他的速度等于我的速度,但随后它再次减速。 其他朋友确实和我一样有同样的速度。可能有什么问题?程序根据fps调整运动,因此fps可能没有问题。
答案 0 :(得分:0)
没有看到你的代码很难说肯定。
程序根据fps调整运动
通常情况下,将动画视为自上次更新以来经过的函数而非每秒帧数通常会更好。这样,无论FPS是修复还是变量更新,动画都将花费相同的实际时间来完成。
移动增量应考虑自上次游戏更新后经过的时间而非上次/当前FPS 。
e.g。
public Vector3 Velocity;
public Vector3 Position;
public void Update(GameTime gameTime)
{
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
// Apply acceleration
Vector3 acceleration = force / Mass;
Velocity += acceleration * elapsed;
// Apply psuedo drag
Velocity *= DragFactor;
// Apply velocity
Position += Velocity * elapsed;
.
.
.
答案 1 :(得分:0)
你说你用lindgren制作多人游戏?也许是因为延迟导致的橡皮筋。尝试在局域网上的2台计算机上查看它是否能解决问题。
可能lindgren有不同的设置来指定如何处理同步或预测。