У меня есть хоккейная игра с молотками, работающими на iphone / ipad. Сервер контролирует всю физику и отправляет на другое устройство позицию молотка сервера, а клиент отправляет серверу свою позицию молотка.
Эта часть работает правильно, проблема в шайбе. Becuase слишком быстр, и сервер - тот, кто отправляет сообщение. Проблема в том, что шайба является телом b2_dynamic, и сервер отправляет клиенту, где находится шайба. Я обновил, чтобы отправлять позицию клиенту каждый кадр в GameLoop, но проблема в том, что это не работает должным образом. Движения молотков в порядке, но шайба немного странная, я думаю, это связано с линейной скоростью шайбы.
Что я делаю, это:
[gamedelegate movePuckToX:messageData->x andY:messageData->y andAngle:0.0];
- (void) sendMovePuck {
MessageMovePuckTo message;
message.message.messageType = kMessageTypeMovePuck;
float_t pX = puck->GetPosition().x;
float_t pY = puck->GetPosition().y;
message.x = pX;
message.y = pY;
NSData *data = [NSData dataWithBytes:&message length:sizeof(MessageMovePuckTo)];
[self sendData:data];
}
-(void )movePuckToX:(float_t)x andY:(float_t)y andAngle:(float_t)ang
{
lastPuckReceivedPosition = b2Vec2(x, [self getScreenSize].height/32 - y);
puck->SetAwake(false);
puck->SetTransform(b2Vec2(x, [self getScreenSize].height/32 - y), 0);
puck->SetLinearVelocity(b2Vec2(0,0));
}
Как лучше отправлять шайбу клиенту? Есть идеи или идеи? Мне не удалось решить это: (