SpawnLocation
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
ตำแหน่งจุดเกิดหรือ "จุดเกิด" กำหนดว่าเมื่อตายแล้ว Player จะเกิดใหม่ที่ไหนพวกเขาสามารถกำหนดค่าให้อนุญาตให้ผู้เล่นบางคนเท่านั้นสามารถใช้แต่ละจุดเกิดได้โดยใช้ Teamsพวกเขายังควบคุมวิธีการ ForceFields จะถูกตั้งค่าสำหรับผู้เล่นที่เพิ่งเกิดใหม่
สามารถใช้ตำแหน่งจุดเกิดเป็นจุดตรวจได้ เช่น ในสนามอุปสรรค โดยใช้คุณสมบัติ SpawnLocation.AllowTeamChangeOnTouch เพื่อให้เมื่อผู้เล่นสัมผัสมัน พวกเขาจะเปลี่ยนทีมเป็นทีมของ SpawnLocationในกรณีนี้เฉพาะครั้งแรก Team ควรตั้งค่า Team.AutoAssignable เป็นจริง มิฉะนั้นผู้เล่นจะไม่เริ่มต้นที่จุดตรวจแรก
สังเกตว่าถ้า SpawnLocation ถูกเพิ่มลงใน Workspace ใน Studio ด้วย SpawnLocation.Neutral ตั้งค่าเป็น false ทีมจะถูกสร้างตาม SpawnLocation.TeamColor ถ้ายังไม่มีอยู่พฤติกรรมนี้ไม่เกิดขึ้นเมื่อสร้างสปอว์นในเกมโดยใช้ Script หรือหากคุณสมบัติของ SpawnLocation เปลี่ยนแปลงหลังจากที่เพิ่มไปแล้วขอแนะนำให้นักพัฒนาตั้งทีมของตนขึ้นมาด้วยตนเองเสมอและไม่พึ่งพาพฤติกรรมนี้
กฎจะเกิดขึ้น
มีกฎหลายข้อที่เข้ามามีบทบาทสำหรับ SpawnLocation ที่กำหนดเมื่อผู้เล่นเกิดใหม่:
- เมื่อ SpawnLocation.Neutral ถูกตั้งค่าเป็นเท็จเท่านั้น Players ด้วย Player.TeamColor ที่ตรงกับ SpawnLocation.TeamColor จะเกิดใหม่บนมัน
- เมื่อ SpawnLocation.Neutral ถูกตั้งค่าเป็นจริง ผู้เล่นใดก็ได้สามารถสร้างขึ้นเหนือมันได้ไม่ว่าจะเป็น SpawnLocation.TeamColor
- หากมีการเกิดที่มีคุณสมบัติหลายรายการพร้อมใช้งานสำหรับ Player หนึ่งรายการสุ่มจะถูกเลือก
- ผู้เล่นจะเกิดที่จุดต่างๆ บน SpawnLocation แต่ตอนนี้พวกเขาอาจยังคงเกิดบนกันหากพวกเขาเกิดทันทีหลังจากหนึ่งและอีก
ดูเพิ่ม:
- หากคุณต้องการกำหนดเวลาที่ผู้เล่นจะเกิดใหม่นานแค่ไหน ลองดูที่คุณสมบัติ RespawnTime
ตัวอย่างโค้ด
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)
สรุป
คุณสมบัติ
อนุญาตให้ Player เข้าร่วมทีมโดยแตะที่ SpawnLocationเมื่อตั้งค่าเป็นจริง หากตัวละคร Player มาสัมผัสกับ SpawnLocation ผู้เล่นจะตั้งค่า Player.TeamColor เป็น SpawnLocation.TeamColor
ระยะเวลาในวินาทีที่ ForceField จะถูกนำไปใช้กับตัวละคร Player ที่จะเกิดในที่นี่ SpawnLocationหากระยะเวลาเป็นศูนย์ ForceField จะไม่ถูกสร้างขึ้น และจะไม่กระตุ้นให้เกิดเหตุการณ์ Instance.DescendantAdded หรือ Instance.ChildAdded
ตั้งค่าว่า SpawnLocation จะเปิดใช้งานหรือไม่เมื่อปิดใช้งานผู้เล่นไม่สามารถสร้างได้ที่ SpawnLocation และฟังก์ชัน AllowTeamChangeOnTouch ถูกปิดใช้งาน
ว่ามีหรือไม่มี SpawnLocation เป็นสมาชิกของทีมเฉพาะซึ่งหมายความว่าทุก Player ของทุก Team สามารถสร้างบนมันได้หากคุณสมบัตินี้ถูกตั้งค่าเป็นจริง
ตั้งทีมที่ SpawnLocation เป็นสมาชิกอยู่หากคุณสมบัติ SpawnLocation.Neutral เป็นเท็จเฉพาะ Players ที่มีค่าเดียวกับ Player.TeamColor ของสีทีมที่เกิดใหม่จะสามารถสร้างได้ที่นั่น
กำหนดรูปร่างโดยรวมของวัตถุ
กำหนดว่าชิ้นส่วนเป็นอนันต์ตามฟิสิกส์หรือไม่
ความเร็วในแนวมุมของการประกอบชิ้นส่วน
ศูนย์กลางของมวลของการประกอบชิ้นส่วนในพื้นที่โลก
ความเร็วเชิงเส้นของการประกอบชิ้นส่วน
มวลรวมของการประกอบชิ้นส่วน
การอ้างอิงถึงส่วนรากของการประกอบ
กำหนดว่าชิ้นจะโต้ตอบกับการจำลองเสียงทางกายภาพหรือไม่ คล้ายกับ CastShadow สำหรับแสง
กำหนดประเภทพื้นผิวสำหรับด้านหลังของชิ้นส่วน
กำหนดประเภทพื้นผิวสำหรับด้านล่างของชิ้นส่วน
กำหนดสีของชิ้นส่วน
กำหนดตำแหน่งและทิศทางของ BasePart ในโลก
กำหนดว่าชิ้นส่วนจะชนกับชิ้นส่วนอื่นหรือไม่
กำหนดว่าชิ้นส่วนจะถูกพิจารณาในระหว่างการดำเนินการค้นหาในพื้นที่หรือไม่
กำหนดว่าจะมีการเรียกไฟ Touched และ TouchEnded กิจกรรมบนส่วนหรือไม่
กำหนดว่าส่วนใดมีเงาหรือไม่
อธิบายตำแหน่งของโลกที่ศูนย์กลางของมวลของชิ้นส่วนอยู่
อธิบายชื่อกลุ่มการชนกันของชิ้นส่วน
กำหนดสีของชิ้นส่วน
บ่งชี้คุณสมบัติทางกายภาพปัจจุบันของชิ้นส่วน
กำหนดคุณสมบัติทางกายภาพหลายอย่างของชิ้นส่วน
ใช้เพื่อเปิดใช้งานหรือปิดใช้งานแรงอากาศในชิ้นส่วนและชิ้นส่วนประกอบ
ขนาดทางกายภาพที่แท้จริงของ BasePart ตามที่เครื่องกลศาสตร์กำหนด
กำหนดประเภทพื้นผิวสำหรับด้านหน้าของชิ้นส่วน
กำหนดประเภทพื้นผิวสำหรับด้านซ้ายของชิ้นส่วน
กำหนดตัวคูณสำหรับ BasePart.Transparency ที่มองเห็นได้เฉพาะกับไคลเอนต์ท้องถิ่นเท่านั้น
กำหนดว่าส่วนใดสามารถเลือกได้ใน Studio
อธิบายมวลของชิ้นส่วน ผลิตภัณฑ์ของความหนาแน่นและปริมาณ
กำหนดว่าชิ้นส่วนมีส่วนร่วมในมวลหรือแรงเฉื่อยของร่างกายแข็งหรือไม่
กำหนดเทกเจอร์และคุณสมบัติทางกายภาพเริ่มต้นของชิ้นส่วน
ชื่อของ MaterialVariant .
อธิบายการหมุนของชิ้นส่วนในโลก
ระบุออฟเซ็ตของจุดศูนย์กลางของชิ้นส่วนจาก CFrame ของมัน
อธิบายตำแหน่งของชิ้นส่วนในโลก
เวลาตั้งแต่อัปเดตฟิสิกส์ครั้งล่าสุด
กำหนดจํานวนส่วนที่สะท้อนกล่องท้องฟ้าได้
อธิบายการเปลี่ยนแปลงขนาดเล็กที่สุดที่อนุญาตโดยวิธี Resize()
อธิบายใบหน้าที่ส่วนสามารถปรับขนาดได้
กำหนดประเภทพื้นผิวสำหรับด้านขวาของชิ้นส่วน
กฎหลักในการกำหนดส่วนรากของการประกอบ
การหมุนของชิ้นส่วนในองศาสำหรับสามแกน
กำหนดขนาดของชิ้นส่วน (ความยาว ความกว้าง ความสูง)
กำหนดประเภทพื้นผิวสำหรับด้านบนของชิ้นส่วน
กำหนดจำนวนส่วนที่สามารถมองเห็นได้ผ่าน (ตรงกันข้ามของความทึบของส่วน)
วิธีการ
วิธีการรับทอดมาจากBasePartใช้แรงกระตุกแบบมุมกับการประกอบ
ใช้แรงกระตุ้นกับการประกอบที่การประกอบ center of mass .
ใช้แรงกระตุ้นกับการประกอบในตำแหน่งที่กำหนด
ส่งคืนว่าชิ้นส่วนสามารถชนกันได้หรือไม่
ตรวจสอบว่าคุณสามารถกำหนดสิทธิ์เจ้าของเครือข่ายส่วนได้หรือไม่
คืนตารางชิ้นส่วนที่เชื่อมโยงกับวัตถุโดยใช้ข้อต่อแข็งใดๆ
คืนข้อต่อหรือข้อจำกัดทั้งหมดที่เชื่อมโยงกับส่วนนี้
ส่งค่าของคุณสมบัติ Mass กลับ
ส่งคืนผู้เล่นปัจจุบันที่เป็นเจ้าของเครือข่ายส่วนนี้หรือ nil ในกรณีของเซิร์ฟเวอร์
ส่งคืนค่าจริงหากเครื่องเกมตัดสินเจ้าของเครือข่ายสำหรับส่วนนี้โดยอัตโนมัติ
คืนส่วนฐานของการประกอบชิ้นส่วน
คืนตารางของชิ้นส่วนทั้งหมด BasePart.CanCollide ที่ถูกตัดกับชิ้นส่วนนี้
คืนความเร็วเชิงเส้นของการประกอบชิ้นส่วนในตำแหน่งที่กำหนดเมื่อเทียบกับชิ้นส่วนนี้
ส่งคืนจริงหากวัตถุเชื่อมต่อกับส่วนที่จะถือไว้ในตําแหน่ง (เช่นส่วน Anchored ) มิฉะนั้นจะส่งคืนเป็นเท็จ
เปลี่ยนขนาดของวัตถุเช่นเดียวกับการใช้เครื่องมือปรับขนาดของ Studio
ตั้งผู้เล่นที่กำหนดเป็นเจ้าของเครือข่ายสำหรับส่วนที่เชื่อมต่อทั้งหมดและส่วนนี้
ให้เครื่องเกมตัดสินได้อย่างไดนามิกว่าใครจะจัดการกับฟิสิกส์ของชิ้นส่วน (หนึ่งในไคลเอนต์หรือเซิร์ฟเวอร์)
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
สร้างใหม่ IntersectOperation จากเรขาคณิตที่ซ้อนทับของชิ้นส่วนและชิ้นส่วนอื่นๆ ในช่วงที่กำหนด
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
สร้างใหม่ UnionOperation จากส่วนโดยลบเอกภาพที่ใช้โดยชิ้นส่วนในช่องที่กำหนด
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
สร้างใหม่ UnionOperation จากส่วน, บวกกับรูปร่างที่ใช้โดยชิ้นส่วนในช่วงที่กำหนด
รับจุดศูนย์กลางของ PVInstance .
เปลี่ยน PVInstance พร้อมกับบรรดาลูกหลานทั้งหมดของมัน PVInstances ทำให้จุดศูนย์กลางอยู่ที่ตําแหน่งที่ระบุแล้ว CFrame
อีเวนต์
อีเวนต์รับทอดมาจากBasePartไฟเมื่อชิ้นหยุดสัมผัสอีกชิ้นเนื่องจากการเคลื่อนไหวทางกายภาพ
ไฟเมื่อชิ้นส่วนสัมผัสกับชิ้นส่วนอื่นเนื่องจากการเคลื่อนไหวทางกายภาพ
คุณสมบัติ
AllowTeamChangeOnTouch
อนุญาตให้ Player เข้าร่วมทีมโดยแตะที่ SpawnLocationเมื่อตั้งค่าเป็นจริง หากตัวละคร Player มาสัมผัสกับ SpawnLocation ผู้เล่นจะตั้งค่า Player.TeamColor เป็น Class.SpawnLocation.TeamColor``Class.Player.Neutral จะถูกตั้งค่าเป็น SpawnLocation.Neutral เมื่อติดต่อด้วย ซึ่งหมายความว่าผู้เล่นยังสามารถกลายเป็นเป็นกลางได้โดยแตะตำแหน่งจุดเกิด
สิ่งนี้จะไม่ทำงานเมื่อ SpawnLocation.Enabled ถูกตั้งค่าเป็น false
การสร้างจุดตรวจ
คุณลักษณะนี้มักใช้เพื่อสร้างจุดตรวจในสนามแข่งอุปสรรคหรือเกมที่คล้ายกัน
ตัวอย่างโค้ด
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)
Duration
ระยะเวลาในวินาทีที่ ForceField จะถูกนำไปใช้กับตัวละคร Player ที่จะเกิดในที่นี่ SpawnLocationหากระยะเวลาเป็นศูนย์ ForceField จะไม่ถูกสร้างขึ้น และจะไม่กระตุ้นให้เกิดเหตุการณ์ Instance.DescendantAdded หรือ Instance.ChildAdded
ค่าเริ่มต้นของคุณสมบัตินี้คือ 10 วินาที
คุณสมบัติระยะเวลาช่วยให้นักพัฒนาสามารถให้การป้องกัน Players จาก "การสร้างการฆ่า" ซึ่งอาจเป็นประสบการณ์ที่น่าผิดหวังสำหรับผู้เล่นโปรดทราบว่า ForceFields จะป้องกันผู้ใช้จาก Explosions และอาวุธที่ใช้ Humanoid:TakeDamage() เพื่อสร้างความเสียหายหรือตรวจสอบอื่น ๆ จาก ForceField
ตัวอย่างโค้ด
This sample will create a neutral SpawnLocation in the Workspace that'll give players spawning a ForceField for 20 seconds.
local spawnLocation = Instance.new("SpawnLocation")
spawnLocation.Anchored = true
spawnLocation.Size = Vector3.new(5, 1, 5)
spawnLocation.Neutral = true -- anyone can spawn here
spawnLocation.Duration = 20
spawnLocation.Parent = workspace
Enabled
ตั้งค่าว่า SpawnLocation จะเปิดใช้งานหรือไม่ เมื่อปิดใช้งานผู้เล่นไม่สามารถสร้างได้ที่ SpawnLocation และฟังก์ชัน SpawnLocation.AllowTeamChangeOnTouch ถูกปิดใช้งาน
คุณสมบัตินี้ให้วิธีที่สะดวกที่สุดในการป้องกัน Players จากการเกิดที่จุดเกิด
โปรดทราบ แม้ว่าทีมจะเปลี่ยนเมื่อสัมผัสโดยใช้ SpawnLocation.AllowTeamChangeOnTouch จะถูกปิดใช้งานเมื่อเปิดใช้งานถูกตั้งค่าเป็น false แต่อีเวนต์ที่สัมผัสอื่น ๆ โดยใช้ BasePart.Touched จะยังคงยิง
ตัวอย่างโค้ด
The following sample will create a SpawnLocation in the Workspace that will become semi-transparent when it is disabled.
local spawnLocation = Instance.new("SpawnLocation")
spawnLocation.Anchored = true
spawnLocation.Size = Vector3.new(5, 1, 5)
spawnLocation.Neutral = true -- anyone can spawn here
spawnLocation.Enabled = true
spawnLocation.Parent = workspace
local function onEnabledChanged()
spawnLocation.Transparency = spawnLocation.Enabled and 0 or 0.5
end
spawnLocation:GetPropertyChangedSignal("Enabled"):Connect(onEnabledChanged)
task.wait(5)
spawnLocation.Enabled = false -- transparency = 0.5
Neutral
ว่าจะมีการเกิดใหม่เป็นส่วนหนึ่งของทีมเฉพาะหรือไม่ซึ่งหมายความว่าทุก Player ของทุก Team สามารถสร้างบนมันได้หากคุณสมบัตินี้ถูกตั้งค่าเป็นจริง
หากตั้งค่าเป็นกลางเป็นเท็จเฉพาะผู้เล่นที่มี Player.TeamColor เท่ากับ SpawnLocation.TeamColor สามารถใช้ SpawnLocation ได้
หาก SpawnLocation.AllowTeamChangeOnTouch เป็นจริง Player.Neutral จะถูกตั้งค่าเป็นคุณสมบัตินี้เมื่อติดต่อกับ spawn
ตัวอย่างโค้ด
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)
TeamColor
คุณสมบัติ TeamColor กำหนดทีมที่ SpawnLocation เป็นสมาชิกหากคุณสมบัติ SpawnLocation.Neutral เป็นเท็จเฉพาะ Players ที่มีค่าเดียวกับ Player.TeamColor ของสีทีมที่เกิดใหม่จะสามารถสร้างได้ที่นั่น
หาก SpawnLocation.AllowTeamChangeOnTouch เป็นจริง Player.Neutral จะถูกตั้งค่าเป็นคุณสมบัตินี้เมื่อติดต่อกับ spawn
ตัวอย่างโค้ด
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)