การสร้างทีม ช่วยให้คุณสามารถจัดกลุ่มผู้เล่นให้แข่งขันกันเพื่อทำเป้าหมายร่วมกัน เช่น การทำคะแนนให้ได้มากที่สุด หรือการข้ามเส้นชัยก่อนสมาชิกทีมศัตรูคนอื่น สำหรับเกมยิงมุมมองบุคคลที่หนึ่ง การสร้างทีมถือเป็นสิ่งสำคัญเป็นพิเศษ เพราะมันช่วยสร้างกลยุทธ์การเล่นที่ซับซ้อนและประสานงานกันซึ่งเกินขีดความสามารถของผู้เล่นแต่ละคน
โดยใช้ ประสบการณ์เลเซอร์แท็กตัวอย่าง เป็นตัวอย่าง ส่วนนี้ของบทแนะนำจะสอนคุณเกี่ยวกับการจัดกลุ่มผู้เล่นให้เข้าทีม รวมถึงคำแนะนำการเขียนสคริปต์เกี่ยวกับ:
- การใช้ฟังก์ชันเริ่มต้นของบริการ Teams เพื่อมอบหมายผู้เล่นให้เข้าทีมสีเขียวหรือสีชมพู
- ช่วยให้ผู้เล่นสามารถแยกแยะระหว่างเพื่อนร่วมทีมและสมาชิกทีมศัตรูได้โดยใช้สัญลักษณ์ทีมที่ปรากฏบนหน้าจอและในประสบการณ์
- เปิดใช้งานการเล่นที่ให้อภัยซึ่งไม่ลงโทษผู้เล่นสำหรับการยิงเพื่อนร่วมทีม
เมื่อคุณทำส่วนนี้เสร็จแล้ว คุณจะได้เรียนรู้เกี่ยวกับสคริปต์ที่อนุญาตให้ผู้เล่นเกิดหรือกลับมาเกิดที่ล็อบบี้กลางหรือตำแหน่งการเกิดของทีม ปรับแต่งภาพกราฟฟิกของฟอร์ซฟิลด์มุมมองบุคคลที่หนึ่ง และจัดการสถานะของคลายนต์ทั้งจากเซิร์ฟเวอร์และคลายนต์

มอบสีให้กับทีม
ประสบการณ์เลเซอร์แท็กตัวอย่างใช้บริการ Teams เป็นพื้นฐานในการสร้างทีมสองทีมเพราะบริการนี้มีพฤติกรรมการจัดกลุ่มทีมในตัวที่สามารถทำงานได้ทันที ตัวอย่างเช่น โดยไม่ต้องใช้สคริปต์เพิ่มเติม บริการนี้จัดการการกระทำเช่น:
- จัดกลุ่มและทำให้ผู้เล่นมีจำนวนเท่าๆ กันในแต่ละทีม
- ทำให้ผู้เล่นอยู่ภายใต้ทีมของพวกเขาบนกระดานผู้นำ
- เปลี่ยนสีชื่อผู้เล่นในพื้นที่ 3D ให้ตรงกับสีทีมของพวกเขา
- ให้ผู้เล่นเกิดที่ตำแหน่งเกิดที่แตกต่างกันซึ่งเข้าถึงได้เฉพาะทีมของพวกเขา
ด้วยฟังก์ชันการทำงานเริ่มต้นนี้ ตัวอย่างจึงเปิดใช้งานบริการ Teams แล้วใช้สองวัตถุ Team ที่แตกต่างกันซึ่งมีค่าคุณสมบัติ Team.Color ที่แตกต่างกันเพื่อแสดงถึงแต่ละทีม: มิ้นต์ สำหรับทีมที่รวมตัวกันที่ด้านหนึ่งของแผนที่ และ สีชมพู สำหรับทีมที่รวมตัวกันที่ด้านตรงข้ามของแผนที่ สีเฉพาะเหล่านี้มีประโยชน์เพราะทำให้มีความเห็นที่แตกต่างกันได้ดี และช่วยให้ผู้เล่นสามารถสแกนรอบข้างได้ง่ายและปรับตัวได้ภายในอาคารกับผู้เล่นคนอื่นๆ




มันสำคัญที่จะต้องสังเกตชื่อ BrickColor ที่แน่นอนสำหรับคุณสมบัติ Team.Color เนื่องจากประสบการณ์นี้ใช้ชื่อดังกล่าวในสคริปต์หลายๆ ชุดในการรักษาติดตามผู้เล่นเมื่อพวกเขาถูกจัดกลุ่มในทีม เพิ่มคะแนนเมื่อผู้เล่นยิงผู้เล่นศัตรูในรอบ และปรับปรุงส่วนติดต่อผู้ใช้แบบกำหนดเอง ตัวอย่างเช่น เมื่อต้นรอบเริ่ม ReplicatedStorage ⟩ HUDGuiSetup จะต้องมี startSyncingTeamColor และ startSyncingTeamPoints ซึ่งอ้างอิงถึง Team.Color เพื่อทำการกระทำเฉพาะสำหรับแต่ละทีม
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 เริ่มต้นของบริการ Teams ที่แสดงผู้เล่นภายใต้สีทีมของพวกเขา
- สีชื่อ – UI ในประสบการณ์เริ่มต้นของ Teams ที่ทำให้สีชื่อของผู้เล่นเหนือหัวตรงกับสีทีมของพวกเขา




คุณไม่จำเป็นต้องทำงานเพิ่มเติมสำหรับสัญลักษณ์กระดานผู้นำหรือสีชื่อ นอกเหนือจากการมอบหมายสีทีมจากส่วนก่อนของบทแนะนำ แต่สัญลักษณ์ทีม UI แบบกำหนดเองต้องการความพยายามในการเขียนโปรแกรมมากขึ้นเพื่อแสดงสัญลักษณ์และปิดกั้นสัญลักษณ์ศัตรูเมื่อพวกเขาอยู่หลังผนัง สำหรับคำอธิบายโดยละเอียดเกี่ยวกับสคริปต์ที่ควบคุมพฤติกรรม UI แบบกำหนดเอง รวมถึงวิธีการนำแต่ละองค์ประกอบ UI มาใช้เอง โปรดดูที่ สัญลักษณ์ผู้เล่น และ สัญลักษณ์ทีม จากหลักสูตร UI
ปิดการยิงเพื่อน
ในขณะที่ประสบการณ์เกมยิงมุมมองบุคคลที่หนึ่งบางอย่างลงโทษผู้เล่นที่ยิงเพื่อนร่วมทีมของตน แต่ประสบการณ์เลเซอร์แท็กตัวอย่างนี้อนุญาตให้มีการเล่นที่ให้อภัยมากขึ้นโดยการปิดการยิงเพื่อน การตัดสินใจออกแบบนี้อนุญาตให้ทุกคนสามารถเพิ่มคะแนนทีมของตนได้เท่านั้น ไม่ลดคะแนนจากอุบัติเหตุในการเล่น
เพื่อทำความเข้าใจว่าตัวอย่างนี้นำฟังก์ชันการทำงานนี้ไปใช้อย่างไร ให้พิจารณาวิธีที่ ServerScriptService ⟩ LaserBlastHandler ⟩ processTaggedPlayers ⟩ onPlayerTagged จัดการความเสียหายที่เกิดกับผู้เล่นที่ถูกระบุ เมื่อเซิร์ฟเวอร์ตรวจจับการชนกันระหว่างการยิงของผู้เล่นและผู้เล่นคนอื่น มันจะเรียกฟังก์ชัน onPlayerTagged เพื่อเข้าใจว่าผู้เล่นคนไหนที่ยิงและผู้เล่นคนไหนที่ถูกยิง และว่าจะต้องลดความเสียหายจากสุขภาพของผู้เล่นมากน้อยเพียงใดตามประเภทอาวุธ
local function onPlayerTagged(playerBlasted: Player, playerTagged: Player, damageAmount: number)
ก่อนที่มันจะลดสุขภาพ สคริปต์จะตรวจสอบก่อนว่าผู้เล่นที่ถูกระบุอยู่ในทีมเดียวกับผู้เล่นที่เริ่มการยิงหรือไม่ หากพวกเขาอยู่ในทีมเดียวกัน สคริปต์จะไม่สนใจข้อมูลการยิงเลย
local character = playerTagged.Characterlocal isFriendly = playerBlasted.Team == playerTagged.Team-- ปิดการยิงเพื่อนif isFriendly thenreturnend
อย่างไรก็ตาม หากผู้เล่นที่ถูกระบุ อยู่ ในทีมศัตรู ผู้เล่นจะได้รับความเสียหายตามจำนวนที่เหมาะสมตามประเภทของอาวุธ นอกจากนี้ หากผู้เล่นได้รับความเสียหายพอสมควรจนถูกตัดขาด สคริปต์จะมอบคะแนนให้กับทีมของผู้ที่เริ่มยิง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ตัวอย่างติดตามคะแนน โปรดดูที่ เพิ่มรอบ ในบทแนะนำถัดไป
local humanoid = character and character:FindFirstChild("Humanoid")if humanoid and humanoid.Health > 0 thenlocal damage = math.min(damageAmount, humanoid.Health)humanoid:TakeDamage(damage)if humanoid.Health <= 0 thenScoring.incrementScore(playerBlasted, 1)endendendreturn onPlayerTagged
หากคุณทดสอบประสบการณ์ตอนนี้ ผู้เล่นทุกคนจะเกิดแบบสุ่มที่ตำแหน่งการเกิดใดตำแหน่งหนึ่งที่ปลายทั้งสองด้านของสนามแข่งโดยไม่คำนึงถึงทีมของพวกเขา นั่นหมายความว่าทุกทีมจะเกิดติดกัน
เพื่อแก้ไขปัญหานี้ งวดถัดไปของบทแนะนำจะสอนคุณเกี่ยวกับตรรกะที่กำหนดเองในการจำกัดการเกิดทีมไปยังตำแหน่งการเกิดเฉพาะ จัดการสถานะของคลายนต์เมื่อผู้เล่นออกจากพื้นที่เกิดหลังจากเลือกระบบอาวุธ และการเกิดผู้เล่นกลับไปยังพื้นที่เกิดหรือล็อบบี้เมื่อสุขภาพของพวกเขาถึงศูนย์