チームを作成する

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

チームを作成すること は、プレイヤーをグループに整理して、共通の目標を達成するために競争することができます。たとえば、最も多くのポイントを獲得するか、他の敵チームメンバーより先にゴールを越えるなどです。ファーストパーソンシューターの場合、チームを作成することは特に重要です、因みに個々の

参照として使用する サンプルレーザータグエクスペリエンス は、スクリプトガイド付きのプレイヤーをチームにソートする方法を示しています:

  • Class.Teams サービスのデフォルト機能を使用して、プレイヤーを緑またはピンクチームに割り当てる。
  • プレイヤーが同盟国と敵チームメンバーをオンスクリーンとインエクスペリエンスチームインジケーターで異なるようにします。
  • チームメートを爆破することでプレイヤーに懲罰を与えない、許すゲームプレイを有効にする。

このセクションを完了すると、プレイヤーが中立ロビーまたはチームスポーンゾーンにスポーンまたはリスポーンするスクリプト、最初の人称フォースフィールドビューをカスタマイズし、サーバーとクライアントの両方からクライアントステートを処理する方法について学びます。

チームカラーを割り当てる

サンプルレーザータグエクスペリエンスは、サービスが Teams を基本として、2つのチームを作成するために使用するサービスを使用します、因みにサービスは内蔵チームソート行動を提供し、箱庭で広く使用されています。たとえ、追加のスクリプトエクスペリエンスなしで、サービスは次のアクションを処理します:

  • プレイヤーを各チームに均等にソートしてバランスを取ります。
  • リーダーボードのスコアボードにあるプレイヤーをグループ化します。
  • 3D 空間のプレイヤー名をチームのカラーに色付けする。
  • チームのみがアクセスできる異なるスポーン場所にプレイヤーをスポーンする。

このデフォルトの機能により、サンプルは Teams サービスを有効にし、Team オブジェクトを 2つ異なる

エクスペリエンスでは、 Class.Team.Color プロパティの名前の正確な Datatype.BrickColor 名

startSyncingTeamColor は、Team.Color を参照して、プレイヤーのチームインジケータの左下隅に正しい色とアイコンを割り当てることができます。

グリーンチーム
ピンクチーム

local function setPlayerTeamIcon(gui: ScreenGui)
for _, teamColorIcon in gui.PlayerDisplay.TeamIcons:GetChildren() do
local iconTeamColor = teamColorIcon:GetAttribute(GuiAttribute.teamColor)
teamColorIcon.Visible = localPlayer.TeamColor == iconTeamColor
end
end
local function startSyncingTeamColor(gui: ScreenGui)
setPlayerTeamIcon(gui)
localPlayer:GetPropertyChangedSignal("Team"):Connect(function()
setPlayerTeamIcon(gui)
end)
end

チームインジケーターを表示

プレイヤーがチームにソートされると、チームにどのようにすばやく解読されるか、そして同盟国と敵チームメンバーの間で区別することができます。この能力は重要です、ゲームプレイヤーシューターエクスペリエンスの第一人称のプレイヤーは、戦闘ゾーンに入ってタグを取得してラウンドを失うことがあるため、戦

プレイヤーを成完了に設定するには、サンプルレーザータグエクスペリエンスは、3D 空間とオンスクリーンの両方のチームインジケーターを提供します:

  • プレイヤーインジケーター – プレイヤーのチームカラーとアイコンを表示するカスタムオンスクリーン UI。
  • チームインジケーター – プレイヤーのチームカラーを表示するカスタム UI。
  • リーダーボードインジケーター – デフォルトのチームサービスは、チームの色の下にあるプレイヤーをグループ化します。
  • 名前の色を変更する – プレイヤーの頭上の名前をチームの色に変更するデフォルトのチームサービス UI。
オンスクリーンインジケーター
プレイヤーインジケーター
リーダーボードインジケーター
インエクスペリエンスインジケーター
チームインジケーター
名前の色合い

チームカラーを以前のチュートリアルのセクションから割り当てること以外のリーダーボードインジケーターまたは名前の色の追加のワークは必要ありませんが、カスタムUIチームインジケーターは、両方のインジケーターを表示し、敵のイ

友好の炎を無効にする

一部の第一者シューターエクスペリエンスは、プレイヤーがチームメイトを爆破することを懲罰しますが、サンプルレーザータグエクスペリエンスは、友好の炎を無効にすることで、より寛大なゲームプレイを可能にします。このデザインの決定は、ゲームプレイアクシデントによりチームスコアを減算することなく、すべての人がチームのスコアを増加

サンプルがこの機能を実装する方法を理解するには、ServerScriptService > LaserBlastHandler > 処理タグ付きプレイヤー > 2>onPlayerTagged2> タグがダメージ


local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)

体力が減少する前に、スクリプトは最初にタグ付きのプレイヤーが爆発を起動したチームと同じチームにあるかどうかを確認します。タグ付きのプレイヤーが同じチームにある場合、スクリプトは爆発データを完全に無視します。


local character = playerTagged.Character
local isFriendly = playerBlasted.Team == playerTagged.Team
-- 友好的な発射を禁止する
if isFriendly then
return
end

しかし、タグ付きのプレイヤー が敵チームにいる場合、プレイヤーはブラスタータイプに応じて適切な量のダメージを受け取ります。また、プレイヤーがタグアウトすると、スクリプトは、blaster タイプのチームにポイントを報酬を与えます。サンプルの追跡ポイントに関


local humanoid = character and character:FindFirstChild("Humanoid")
if humanoid and humanoid.Health > 0 then
local damage = math.min(damageAmount, humanoid.Health)
humanoid:TakeDamage(damage)
if humanoid.Health <= 0 then
Scoring.incrementScore(playerBlasted, 1)
end
end
end
return onPlayerTagged

今すぐエクスペリエンスをテストすると、すべてのプレイヤーがアリーナの両端にあるスポーンゾーンのいずれかにランダムにスポーンします。これにより、各チームが互いに隣接しているため、各チームがそれぞれ次の方法でスポーンします。

この問題に対処するために、チュートリアルの次のセクションでは、チームスポーンを特定のスポーン場所に制限するためのカスタムロジックについて教えています。プレイヤーがスポーンエリアを選択した後、ブラスターを選択すると、プレイヤーがスポーンエリアに到着すると、ロビーエリアまたはスポーンエリアにプレイヤーをリスポーンすること、プレイヤーの体力