【发布时间】:2011-08-27 20:40:15
【问题描述】:
我试图让我的游戏中的其他玩家移动流畅,虽然它很流畅,但当一个人行走超过 5-10 秒左右时,它会变得相当落后。
我知道问题所在:这是因为玩家的速度是每步 X 像素,并且它可能会变得不对齐。不过,我真的不知道如何解决它。现在,虚拟玩家的绘图位置以 X 速度从服务器接收到的点移动。我尝试过简单地使用当前点和旧点的平均值来尝试使其平滑,但这只会导致抖动运动几乎与不做任何事情一样糟糕。
似乎我的选择仅限于由于落后或紧张移动而导致的不准确位置。您知道解决此问题的任何可靠方法吗?谢谢。
这里是移动绘图位置的代码:
Vector2 sMove = new Vector2(Position.X - DrawPosition.X, Position.Y - DrawPosition.Y);
sMove.Normalize();
sMove = Vector2.Multiply(sMove, Math.Min(Vector2.Distance(DrawPosition, Position), Speed));
DrawPosition.X += sMove.X;
DrawPosition.Y += sMove.Y;
【问题讨论】: