อาจเป็นเรื่องท้าทายในการค้นหาเพื่อนในประสบการณ์โมดูลนักพัฒนา SpawnWithFriends จะเคลื่อนย้ายการสร้างผู้เล่นอัตโนมัติใกล้เพื่อนของพวกเขาที่อยู่ในประสบการณ์โมดูลนี้ยังสามารถกำหนดค่าให้เทเลพอร์ตผู้เล่นตามคำสั่งแทนที่จะเป็นอัตโนมัติ
การใช้งานโมดูล
การติดตั้ง
เพื่อใช้โมดูล SpawnWithFriends ในประสบการณ์:
ตรวจสอบให้แน่ใจว่าการจัดเรียง รูปแบบ ถูกเลือกแล้วคลิกที่ปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่
ค้นหาและคลิกที่แท็บ โมดูลพัฒนา
ค้นหาโมดูล เกิดขึ้นกับเพื่อน และคลิกหรือลากลงไปในมุมมอง 3D
ในหน้าต่าง สํารวจ เคลื่อนย้ายแบบจำลองทั้งหมด SpawnWithFriends ไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์แล้ว โมดูลจะแจกจ่ายตัวเองไปยังบริการต่างๆ และเริ่มทำงาน
พื้นที่จุดเกิดที่ถูกจำกัด
โมดูลนี้อาจทำให้ผู้เล่นเกิดในพื้นที่จำกัดเวลาเช่นห้อง VIP พื้นที่สำหรับเข้าถึงเท่านั้น ฯลฯเพื่อป้องกันไม่ให้ผู้เล่นเทเลพอร์ตไปยังพื้นที่เหล่านี้:
เติมพื้นที่จํากัดด้วยบล็อกล่องดูไม่เห็น Anchored บล็อกตรวจสอบให้แน่ใจว่า , และ ถูกปิดใช้งานสำหรับบล็อกทั้งหมด
บล็อกเติมห้องคุมทั้งหมดเพื่อป้องกันไม่ให้ผู้เล่นเกิดในภายใน โดยใช้ส่วน แท็ก ของคุณสมบัติของบล็อกแต่ละบล็อกหรือ เครื่องมือแท็กของ Studio ใช้แท็ก RestrictedSpawnArea เพื่อให้ CollectionService ตรวจพบพวกเขา
ใส่โค้ดต่อไปนี้ลงใน Script ภายใน ServerScriptService
สคริปต์local ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))local function validator(playerToTeleport, destinationPlayer, teleportationPoint)-- จัดเตรียมผ่านชิ้นส่วนที่มีแท็กทั้งหมดfor _, area in CollectionService:GetTagged("RestrictedSpawnArea") dolocal relativePosition = area.CFrame:PointToObjectSpace(teleportationPoint.Position)local size = area.Sizelocal inXBounds = relativePosition.X < size.X / 2 and relativePosition.X > -size.X / 2local inZBounds = relativePosition.Z < size.Z / 2 and relativePosition.Z > -size.Z / 2if inXBounds and inZBounds thenreturn false -- จุดหมายการเกิดอยู่ภายในพื้นที่จํากัด; ยกเลิกการเทเลพอร์ตendendreturn true -- จุดเกิดไม่ซ้อนทับพื้นที่ที่ถูกจำกัด; ดำเนินการต่อไปด้วยการเทเลพอร์ตendSpawnWithFriends.setTeleportationValidator(validator)
คู่มือ เอกสารอ้างอิงเกี่ยวกับ API
ฟังก์ชัน
กำหนดค่า
กำหนดค่า (config: table )
ยกเลิกตัวเลือกการกำหนดค่าเริ่มต้นผ่านตัวแปรหรือค่าต่อไปนี้ในตาราง config ด้วยคีย์/ค่าฟังก์ชันนี้สามารถโทรได้เฉพาะจาก Script
กุญแจ | คําอธิบาย | ค่าเริ่มต้น |
---|---|---|
teleportToFriendOnRespawn | หากตั้งค่าเป็น false การเทเลพอร์ตไปยังเพื่อนจะเกิดขึ้นเฉพาะผ่าน teleportToRandomFriend เท่านั้น | จริง |
teleportDistance | ระยะทางที่ผู้เล่นควรจะเกิดจากกันและกันโดยวัดเป็นสตัด | 5 |
maxCharacterVelocity | ตัวละครที่เคลื่อนที่เร็วกว่ามูลค่านี้จะไม่ถูกเลือกเป็นผู้สมัครการเทเลพอร์ต เช่น ผู้ที่อยู่ในยานพาหนะ | 48 |
bypassFriendshipCheck | หากตั้งค่าเป็นจริง ทั้งหมด ผู้เล่นจะเป็นผู้สมัครสําหรับการเทเลพอร์ตไม่ใช่เพื่อนเท่านั้น | ปิด |
showLogs | ว่าจะแสดงข้อความบันทึกในออกหรือไม่ | ปิด |
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
เทเลพอร์ตไปยังเพื่อนสุ่ม
teleportToRandomFriend(playerToTeleport: Player ): boolean
กระตุ้นการเทเลพอร์ตของผู้เล่นไปยังเพื่อนคนหนึ่งในประสบการณ์โดยการดำเนินการด้วยตนเองส่งคืนเป็นไบนารีที่ระบุว่าการเทเลพอร์ตสําเร็จหรือไม่; ความล้มเหลวในการเทเลพอร์ตอาจเกิดจากการหายไปของเพื่อนในเซิร์ฟเวอร์หรือความไม่สามารถในการหาจุดเทเลพอร์ตที่ไม่ถูกขัดขวางฟังก์ชันนี้สามารถโทรได้เฉพาะจาก Script
ตั้งค่าตัวยืนยันการเทเลพอร์ต
ตั้งค่าการเทเลพอร์ตรับรอง (validator: function )
ช่วยให้คุณสามารถดำเนินการตรวจสอบก่อนเทเลพอร์ตที่กำหนดเองโดยการเชื่อมต่อฟังก์ชัน callback ที่ถูกต้อง คอลเลกชันจะได้รับพารามิเตอร์สามตัว:
พารามิเตร | คําอธิบาย |
---|---|
playerToTeleport | การอ้างอิงถึง Player ที่กําลังถูกเทเลพอร์ต |
destinationPlayer | การอ้างอิงถึงเป้าหมาย Player ที่ playerToTeleport ถูกเทเลพอร์ตไปยัง |
teleportationPoint | CFrame ที่ซึ่ง playerToTeleport กำลังเทเลพอร์ตไป |
ฟังก์ชันนี้และคอลเลกชันของมันสามารถใช้ได้เฉพาะใน Script และคอลเลกชันกลับมาเป็นบูลีนบ่งบอกว่าควรดำเนินการเทเลพอร์ตหรือไม่ตัวอย่างเช่น ล็อกิก return ในฟังก์ชันตรวจสอบที่ถูกต้องต่อไปนี้จะให้แน่ใจว่าผู้เล่นและจุดหมายกำลังอยู่ในทีมเดียวกัน
สคริปต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))
-- เทเลพอร์ตผู้เล่นเฉพาะถ้าพวกเขาอยู่ในทีมเดียวกัน
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport.Team == destinationPlayer.Team
end
SpawnWithFriends.setTeleportationValidator(validator)