RemoteEvents:Client to Server 2

ゲーム内で武器を使って相手を攻撃する方法

Robloxフォーラムから

Robloxのフォーラムサイトでも話題を呼んだ「The weapon does not kill the player」の投稿は、Roblox開発者がゲーム開発を始めると、最初に気がつく問題ではないのでしょうか。今回は、リモートイベントの仕組みを考える良い機会です。難しいようにみえても、意外と簡単だったということもありますので、コードがうまく走らないで悩んでいるのは自分だけではないと、仲間をみつけた気分で読み進めて下さい。また、このフォーラムサイトは、経験豊富なRobloxのプログラマーが親身になって問題を解決に導きます。もしご興味がある方は覗いて見て下さい。何かを得れる可能性が高いと思います。

Roblox 開発者のフォーラムサイトから
何が起きているのでしょうか。

ローカルプレーヤーとサーバー側が繋がっていないので、ゲームを公開しても相手のプレイヤーを武器で倒せないということが生じています。せっかくゲームを作ってもこれでは悲しいですよね。ですが、この解決策として、上のフォーラムサイトでも、FireSeverメソッド を使うようにと促しています。こうなると早速、Remote Eventを学習することにつきます。

下記の動画:「#63ゲーム内で武器を使って相手を攻撃する方法」にて詳しく例を使って述べています。

ですので、ここでは、簡単にFireSever()メソッドのみ焦点を当てて、剣で相手に攻撃を与えるコードの構造に少し触れていきましょう。

“Oof”をするコード VS FireServer()を使うコード

下のイメージでは、ローカルプレーヤーのクライアントレベルから、サーバレベルに接続できるコードを赤線で引いて、上下に並べて比べ易くしました。上の「Oof」をするコード、LocalScriptLocalの11行目に注目して下さい。ここでは、アバターがパーツに触れるとアバターの健康、ヘルスをゼロに設定することで、アバターがダメージを受けたことが分かりますが、一方、下のコード、LocalScripteSeverでは、最初の2行のコードで、RemoteEventインスタンスをポイントし、次の13行目のFireServer()メソッドでイベントを発生させ、サーバに接続しています。そして、その他のコードについては、変数名を除いては、コードの構成は変更してない事がわかります。

ファイアー!!

ServerScriptService内に、Scriptを作成したら、その内のコードで、RemoteEventインスタンスをポイントし、関数をOnServerEventに接続します。アバターのヘルスをゼロに設定するコードの代わりに、ここでリモートイベントを使用して、TakeDamageの関数にてダメージが100に到達するまでイベントを生じることをしています。この関数は、剣が相手のプレーヤーに触れる度に呼ばれ、相手がダメージを受けている処理を行ってくれます。そしてそれは、サーバー上のすべてのユーザーがその変更を知ることができるようになっています。

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEventTest")
 
-- プレーヤーにダメージを与えます。
local function onCreatePart(player, other)
	other:TakeDamage(10)
end
 
--  リモートイベントが発生したとき "onCreatePart()" を呼び出します。
remoteEvent.OnServerEvent:Connect(onCreatePart)

動画では、「Roblox Studio」 にて武器を作って相手に攻撃をしダメージを与える一連のコードの構成をまとめましたので、どうぞご参考にされて下さい。

動画も含め、以上の内容が理解できると、ゲーム開発の第一突破口となればと願います!

#63:ゲーム内で武器を使って相手を攻撃する方法

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。