у меня есть игра в хоккей с молотками, работающая на iphone/ipad. Сервер контролирует всю физику и отправляет на другое устройство позицию молотка сервера, а клиент отправляет на сервер свою позицию молотка.
Эта часть работает исправно, проблема в шайбе. Потому что это слишком быстро, а сервер - это тот, кто отправляет сообщение. Проблема в том, что шайба является телом 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));
}
Что лучше всего отправить клиенту о положении шайбы? Любые идеи или идеи? Я не могу решить это :(