プレイヤーがサーバーに参加して戦車を走らせたり、撃ったりできるデスマッチのマルチプレイヤー「戦車」ゲームを書いています。いくつかの方法を試しましたが、満足のいくものではありません。
現在、私はQTimer
マップ上の 1 人のプレーヤーで完全に機能するものを使用していますが、2 番目に参加すると、両方のプレーヤーが遅れ始めます。
keyPressEventメソッド
void MainWindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Up:
keyUp = true;
break;
case Qt::Key_Down:
keyDown = true;
break;
}
}
keyPressEvent
keyReleaseEvent
リリースイベントの代わりにfekeyUp = false
ステートメントがあります。
movePlayerメソッド
void MainWindow::movePlayer()
{
if(keyUp)
ui->widget->playerList[playerID]->move(0.2);
else if(keyDown)
ui->widget->playerList[playerID]->move(-0.1);
if(keyLeft)
ui->widget->playerList[playerID]->rotate(-5);
else if(keyRight)
ui->widget->playerList[playerID]->rotate(5);
if(keyE)
ui->widget->playerList[playerID]->rotateCannon(-3);
else if(keyQ)
ui->widget->playerList[playerID]->rotateCannon(3);
}
onTimerメソッド (tank の場所を含むメッセージをサーバーに送信します)
void MainWindow::onTimer()
{
movePlayer();
QTextStream out(socket);
out << QString::number(ui->widget->playerList[playerID]->id)
+ " " + QString::number(ui->widget->playerList[playerID]->getXPos())
+ " " + QString::number(ui->widget->playerList[playerID]->getYPos())
+ " " + QString::number(ui->widget->playerList[playerID]->getRotation()) << endl;
ui->widget->updateGL();
}
2 つ以上のタンクをスムーズに実行するという目標を達成するために、コードを作成/書き換えするにはどうすればよいですか?