クライアントとサーバー間の通信:RemoteEvent

サーバと通信するために作成せるスクリプト
今回のコードはこちらを参考にしました。(Scriptのコードはこの参考リンクのDeveloperのサイトから取得して下さい。)

また動画#5963でも、RemoteEventを使用して簡単な例を使って説明しています。

今日は、クライアントからサーバーへの通信について学びます。 クライアントが他のクライアントに直接ダメージを与えることはできないので、プレイヤーが銃に撃たれたときにダメージを与える責任はサーバーにあります。クライアントはリモートイベントを作成して、キャラクターが銃に撃たれたことをサーバーに伝えることができます。これらのイベントは、クライアントとサーバーの両方から見えるように、複製されたストレージReplicateStorageに保存する必要があります。

まず、ReplicateStorageにEventsという名前のフォルダを作成します。次に、リモートイベントをEventsフォルダに作成し、DamageCharacterという名前で保存します。

ToolControllerでは、スクリプトの最初に、ReplicatedStorageとイベントフォルダのための変数を作成します。Fire weaponの ”player hit” プリントステートメントをルラ言語のラインに置き換えて、キャラクターモデル変数を引数にしたDamageCharacterリモートイベントを実行します。

eventsFolder.DamageCharacter:FireServer(characterModel)

新しくスクリプトをServerScriptServiceに作成し、ServerLaserManagerという名前を付けます。

他のプレイヤーのレーザービーム

現在、レーザービームを見ることができるのはクライアントだけです。

なので、レーザービームをサーバー上で作成し、誰もがそれを見ることができるようにします。まず、クライアントはサーバーにレーザーを発射したことを伝え、終了位置を提供する必要があります。

  1. RemoteEventをReplicateStorageのEventsフォルダーに挿入したLaserFiredと繋げます。
  2. ToolControllerスクリプトでfireWeapon関数を見つけます。関数の最後で、引数として使用してLaserFiredリモートイベントを発生させます。

eventsFolder.LaserFired:FireServer(hitPosition)

サーバー

サーバーは、クライアントが起動したイベントを受信し、すべてのクライアントにレーザービームの開始位置と終了位置を通知して、レーザービームをレンダリングできるようにする必要があります。

  1. ServerLaserManagerに関数playerFiredLaserと呼ばれる2つのパラメータを持つ関数を作成ます。引数はplayerFiredとendPositionです。
  2. 関数をLaserFiredリモートイベントに接続します。

サーバーにはレーザーの開始位置が必要です。これはクライアントから送信される可能性がありますが、可能な限りクライアントを信頼しないようにするのが最善です。キャラクターの武器ハンドルの位置が開始位置になるので、サーバーはそこからそれを見つけることができます。

クライアントでのレンダリング

  1. StarterPlayerScriptsClientLaserManagerと呼ばれるLocalScriptを作成。
  2. スクリプト内で、LaserRendererモジュールが必要です。
  3. createPlayerLaserの関数を作成しパラメータにplayerWhoShottoolHandleendPositionを設定します
  4. 関数をEventsフォルダーのLaserFiredリモートイベントに接続します。
  5. 関数で、ifステートメントを使用してLocalPlayerとplayerWhoShot等しくないかどうかを確認します。
  6. ステートメント内で、LaserRendererモジュールのtoolHandle と endPositionを引数としてcreateLaserを関数を呼び出します。

ローカルサーバーを起動して、2人のプレーヤーでブラスターをテストします。両方のウィンドウを同時に表示できるように、各クライアントをモニターの異なる側に配置します。一方のクライアントで撮影すると、もう一方のクライアントでレーザーが表示されます。

音響効果

射撃効果音は現在、発射物を射撃しているクライアントでのみ再生されます。他のプレイヤーにも聞こえるように、サウンドを再生するにはコードを移動する必要があります。

  1. ToolControllerスクリプトにナビゲートtoolActivatedの機能とアクティブサウンドを果たしている行を削除します。

射撃効果音は現在、発射物を射撃しているクライアントでのみ再生されます。他のプレイヤーにも聞こえるように、サウンドを再生するにはコードを移動する必要があります。

シリーズの動画

その他参考にしたサイト

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: