يمكن أن يكون من الصعب العثور على الأصدقاء في التجربة. وحدة SpawnWithFriends للمطورين تقوم تلقائيًا بنقل اللاعبين الذين يظهرون بالقرب من أحد الأصدقاء الموجودين في التجربة. يمكن أيضًا تكوين هذه الوحدة لنقل اللاعب عند الطلب بدلاً من تلقائيًا.
استخدام الوحدة
التثبيت
لاستخدام وحدة SpawnWithFriends في تجربة:
من قائمة Window في الاستوديو أو شريط أدوات Home، افتح Toolbox واختر علامة Creator Store.

تأكد من تحديد فرز Models، ثم انقر على زر See All لــ Categories.

ابحث وانقر على بلاطة Packages.
ابحث عن وحدة الظهور مع الأصدقاء وانقر عليها، أو اسحبها وأفلتها في العرض ثلاثي الأبعاد.

في نافذة Explorer، انقل نموذج SpawnWithFriends بالكامل إلى ReplicatedStorage. عند تشغيل التجربة، ستبدأ الوحدة في العمل.
مناطق الظهور المحظورة
قد تؤدي هذه الوحدة إلى ظهور اللاعبين في مناطق محظورة مثل غرف VIP، ومساحات الوصول فقط، وما إلى ذلك. لمنع اللاعبين من الانتقال إلى هذه المناطق:
املأ المنطقة المحظورة بلوكات غير مرئية من نوع Anchored. تأكد من أن CanCollide، CanTouch، و CanQuery مُعطلة لجميع الكتل.

كتلة تملأ الغرفة بالكامل لمنع اللاعبين من الظهور داخلها باستخدام قسم Tags في خصائص كل كتلة، قم بتطبيق الوسم RestrictedSpawnArea حتى يتمكن CollectionService من اكتشافها.
الصق الشيفرة التالية في Script داخل ServerScriptService.
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)local function validator(playerToTeleport, destinationPlayer, teleportationPoint)-- Iteration through all tagged partsfor _, 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)
مرجع واجهة برمجة التطبيقات
الدوال
configure
configure(config: table)
يتجاوز خيارات التكوين الافتراضية من خلال المفاتيح/القيم التالية في جدول config. يمكن استدعاء هذه الدالة فقط من Script.
| المفتاح | الوصف | الافتراضي |
|---|---|---|
| teleportToFriendOnRespawn | إذا تم تعيينها على false، سيتم النقل إلى صديق فقط يدويًا من خلال teleportToRandomFriend. | true |
| teleportDistance | كم يجب أن يكون اللاعبون بعيدين عن بعضهم البعض عند الظهور، يقاس بالدرجات. | 5 |
| maxCharacterVelocity | الشخصيات التي تتحرك بسرعة أكبر من هذه القيمة لن تُختار كمرشحين للنقل، على سبيل المثال أولئك في المركبات المتحركة. | 48 |
| bypassFriendshipCheck | إذا تم تعيينها على true، سيكون جميع اللاعبين مرشحين للنقل، وليس فقط الأصدقاء. | false |
| showLogs | ما إذا كان يجب عرض رسائل التسجيل في الإخراج. | false |
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
teleportToRandomFriend
teleportToRandomFriend(playerToTeleport: Player): boolean
يؤدي ظهور نقل يدوي للاعب إلى أحد أصدقائه في التجربة. تعيد قيمة منطقية تشير ما إذا كان النقل قد نجح أم لا؛ قد يكون فشل النقل بسبب عدم وجود أصدقاء في الخادم أو عدم القدرة على العثور على نقطة نقل غير محجوزة. يمكن استدعاء هذه الدالة فقط من Script.
setTeleportationValidator
setTeleportationValidator(validator: function)
يسمح لك بإجراء فحوصات ما قبل النقل مخصصة عن طريق ربط دالة مراجع التحقق. تستقبل الدالة ثلاثة معلمات:
| المعلمة | الوصف |
|---|---|
| playerToTeleport | مرجع إلى Player الذي يتم نقله. |
| destinationPlayer | مرجع إلى Player المستهدف الذي يتم نقل playerToTeleport إليه. |
| teleportationPoint | CFrame حيث يتم نقل playerToTeleport إليه. |
يمكن استخدام هذه الدالة ومراجعها فقط في Script وتعيد الدالة قيمة منطقية تشير ما إذا كان ينبغي متابعة النقل أم لا. على سبيل المثال، تضمن المنطق return في دالة التحقق التالية أن اللاعب الذي يظهر واللاعب المستهدف على نفس الفريق.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)
-- ينقل اللاعبين فقط إذا كانوا على نفس الفريق
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport.Team == destinationPlayer.Team
end
SpawnWithFriends.setTeleportationValidator(validator)