Unity:死と再生成~マルチプレイヤーネットワーキングのチュートリアルに挑戦

Unityの公式チュートリアル「マルチプレイヤーネットワーキング」の実習の模様をお送りしております。前回の記事はこちらからどうぞ

死と再生成

公式サイトのチュートリアルページ 死と再生成

今回は、プレイヤーの体力値が無くなったら、プレイヤーの位置と体力値をリセットする処理を追加します。

スクリプト Health の修正

  1. Health スクリプトを開く
  2. 新しい関数 Respawn 作成し、[ClientRpc] 属性および Rpc プレフィックスを付ける
  3. 関数 TakeDamage 内のコードを、プレイヤーの currentHealth が maximum にリセットされるように変更
  4. Debug.Log ラインを RpcRespawn の呼び出しに置き換える
  5. スクリプトを保存

修正したスクリプトのコードにコメントを加えたものがこちら。

動作確認

  1. シーンをスタンドアロンのアプリケーションとして Build and Run を実行
  2. ゲーム内 UI から[Host]ボタンをクリックしてゲームをホストとして開始
  3. プレイヤーゲームオブジェクトを動かす
  4. Unity に戻ってPlay モードを開始
  5. ゲーム内 UI から[LAN Client]ボタンをクリックしてクライアントとしてホストに接続
  6. プレイヤーゲームオブジェクトを動かし、どちらのプレイヤーゲームオブジェクトも元の位置にない状態にする
  7. スタンドアロン・プレイヤーを終了
  8. Unity に戻ってPlay モードを終了

このステップを終えてゲームを実行。ビルドしたゲームを2つ実行してウィンドウを並べました。画面右側のクライアントが画面左のホスト(サーバー&クライアント)のプレイヤーを攻撃して体力がなくなると…

ホストのプレイヤーはそれぞれの画面中央にリセットされました。

今回のポイントは [ClientRpc] 属性と関数名の前に付ける “Rpc” ですね。チュートリアルでは下記のように解説されています。

  • [Command] 属性を使用する関数はクライアント上で呼び出され、サーバー上で実行される
  • [ClientRpc] 属性を使用する関数はサーバー上で呼び出され、クライアント上で実行される