我有以下代码来计算四个控制点之间的点,以生成catmull-rom曲线:
CGPoint interpolatedPosition(CGPoint p0, CGPoint p1, CGPoint p2, CGPoint p3, float t)
{
float t3 = t * t * t;
float t2 = t * t;
float f1 = -0.5 * t3 + t2 - 0.5 * t;
float f2 = 1.5 * t3 - 2.5 * t2 + 1.0;
float f3 = -1.5 * t3 + 2.0 * t2 + 0.5 * t;
float f4 = 0.5 * t3 - 0.5 * t2;
float x = p0.x * …Run Code Online (Sandbox Code Playgroud) 我在服务器 - 客户端Winsock游戏中理解我如何实现Dead Reckoning有点困难.
我一直在互联网上寻找一个可靠解释的解释:
当消息应该从服务器发送到客户端时
如果客户端没有收到更新消息,它应该如何操作,它是否继续使用预测位置作为当前位置来计算新的预测位置?
我使用的航位推算方法是:
path vector = oldPosition - oldestPosition
delta time = oldTime - oldestTime
delta velocity = path vector / delta time
new delta time = current time / oldest time
new prediction = oldPosition + new delta time * delta velocity
Run Code Online (Sandbox Code Playgroud)
希望这是正确的配方!:)
还应注意连接类型是UDP,并且游戏仅在服务器上播放.服务器将更新消息发送到客户端.
有人可以帮我回答我的问题吗?
谢谢