كائنات الصوت

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

يحدث تشغيل الصوت من خلال كائنات Sound التي تصدر الصوت داخل تجربة. تعين Roblox لكل أصل صوتي معرفًا فريدًا يمكنك تعيينه لكائنات Sound لتشغيل مؤثر صوتي معين أو مسار موسيقي. يمكنك ضبط هذا الصوت ليبدأ التشغيل تلقائيًا أثناء وقت التشغيل، أو لتحفيزه للتشغيل من البرامج النصية.

لتعديل تشغيل عدة كائنات Sound، يمكنك تعيينها إلى مجموعة صوتية والتحكم في حجم المجموعة بأكملها، بالإضافة إلى تطبيق تأثيرات ديناميكية.

إنشاء كائنات الصوت

هناك ثلاث مواقع يمكنك إنشاء كائن Sound فيه، ويحدد كل موقع كيفية إصدار الصوت وكيفية تغيير الحجم بالنسبة لموقع المستخدم داخل التجربة.

الموقعكيفية إصدار الصوتكيفية تغيير الحجم
طفل لكتلة أو كرة أو أسطوانة BasePart.يصدر الصوت للخارج من سطح الكائن بالكامل.تتغير حجم الصوت حسب المسافة بين مستمع الصوت الخاص بالمستخدم وموقع الكائن، بالإضافة إلى حجمه.
طفل لـ Attachment أو MeshPart أو TrussPart أو WedgePart أو CornerWedgePart.يصدر الصوت للخارج من نقطة التعلق الواحدة أو مركز الكائن.تتغير حجم الصوت حسب المسافة بين مستمع الصوت الخاص بالمستخدم وموقع التعلق أو الكائن.
داخل SoundService أو Workspace.يصدر الصوت في جميع أنحاء التجربة.تظل حجم الصوت وموقع الصوت كما هو بغض النظر عن موقع أو دوران مستمع الصوت الخاص بالمستخدم.

الصوت الموضوعي

الصوت الموضوعي هو الصوت الذي يمكن للمستخدمين سماعه فقط بالقرب من موقع معين داخل التجربة. هناك نوعان من الصوت الموضعي يمكنك الاستفادة منه: الصوت الحجمي ومصدر النقطة.

الصوت الحجمي

الصوت الحجمي هو الخيار الأكثر واقعية للصوت، حيث يتغير ديناميكيًا اعتمادًا على موقع المستخدم بالنسبة لمصدر الصوت. على سبيل المثال، إذا كان المستخدم داخل BasePart يحتوي على كائن Sound طفل، فإن الصوت يتردد في جميع أنحاء المستخدم، مثل الموسيقى في سماعات الرأس التي تعزف بنفس الحجم في كل مكبر صوت. عندما يغادر المستخدم الكائن، يتقلص الصوت تدريجياً في الحجم ويصبح أكثر توجيهًا لكل مكبر صوت، Movint حول رأس المستخدم عندما يدور مستمعه. للحصول على معلومات حول الخصائص التي تتحكم في مدى ارتفاع صوتك على مسافات مختلفة من الكائن، راجع RollOffMinDistance و RollOffMaxDistance.

تؤثر أيضًا حجم BasePart على حجم الصوت، حيث تنتج أجزاء BaseParts الأكبر منطقة أوسع يمكن للمستخدمين سماع الصوت فيها وعندما ينتقل المستخدم بعيدًا عن BasePart كبيرة، يتناقص الصوت بشكل أبطأ. يعرض المثال التالي جزءًا من BasePart بحجم مدينة مع كائن Sound يشغل صوت البيئة. يختبر المستخدم A و B الصوت بشكل مختلف: المستخدم B أقرب إلى BasePart الكبيرة، وبالتالي يسمع غالبية الصوت بنفس الحجم تقريبًا في كلا مكبرات الصوت. بالمقابل، المستخدم A بعيد عن المدينة، لذا فإن الصوت الذي يسمعه أقل وضوحًا وأكثر توجيهًا من المستخدم B، حيث يلعب بأحجام متفاوتة في كل من مكبرات الصوت الخاصة بهم.

الصوت الحجمي مفيد لأي صوت يحتاج إلى أن يكون غامرًا حول المستخدم ويتغير ديناميكيًا تبعًا لموقع المستخدم، مثل منصة الحفلات الموسيقية أو مناطق الأجواء مثل هطول الأمطار. عندما تجرب وضع كائن Sound على BaseParts بأحجام مختلفة ومواقع مختلفة عما هو موجود عند المستخدمين، يمكنك سماع مدى تأثير الصوت الحجمي الغامر.

لإنشاء كائن Sound لصوت حجمي:

  1. في نافذة Explorer، حدد SoundService.

  2. في نافذة Properties، انتقل إلى خاصية VolumetricAudio، ثم قم بتعيينها إلى Enabled.

  3. في نافذة Explorer، مرر فوق BasePart، ثم انقر على زر ⊕. ستظهر قائمة السياق.

  4. من القائمة، أضف صوت.

  5. في نافذة Properties، انتقل إلى خاصية SoundId وأدخل معرف أصل صوتي صالح.

  6. (اختياري) إذا كنت ترغب في بدء تشغيل الصوت عند بدء التجربة، قم بتمكين خاصية Playing.

مصدر النقطة

على عكس الصوت الحجمي، يصدر صوت مصدر النقطة من نقطة مصدر واحدة فقط. هذا النوع من الصوت مفيد للانفجارات، وأصوات التأثير، والأجهزة الإلكترونية، والحوار.

لإنشاء كائن Sound لصوت مصدر النقطة:

  1. في نافذة Explorer، مرر فوق التعلق أو التروس أو الوتد أو الوتد الزاوي، ثم انقر على زر ⊕. ستظهر قائمة السياق.
  2. من القائمة، أضف صوت.
  3. في نافذة Properties، انتقل إلى خاصية SoundId وأدخل معرف أصل صوتي صالح.
  4. (اختياري) إذا كنت ترغب في بدء تشغيل الصوت عند بدء التجربة، قم بتمكين خاصية Playing.

الصوت الخلفي

يعمل الصوت الخلفي بنفس الحجم بغض النظر عن المكان الذي يسافر إليه المستخدم داخل تجربتك. هذا النوع من الصوت مفيد للموسيقى التي تريد تشغيلها للمستخدمين، خاصة عندما تريد إنشاء مسار صوتي يتكون من عدة ملفات صوتية.

من الأفضل الاحتفاظ بجميع كائنات Sound للصوت الخلفي في موقع واحد من Workspace لأغراض التنظيم حيث تواصل إضافة وتحرير الصوت داخل تجربتك. المثال التالي يخزن كائن Sound الجديد تحت حاوية SoundService، حيث تحدد هذه الخدمة كيفية تشغيل كائنات Sound في التجارب.

لإنشاء كائن Sound للصوت الخلفي:

  1. في نافذة Explorer، مرر فوق SoundService، ثم انقر على زر ⊕. ستظهر قائمة السياق.
  2. من القائمة، أضف صوت.
  3. في نافذة Properties، انتقل إلى خاصية SoundId وأدخل معرف أصل صوتي صالح.
  4. (اختياري) إذا كنت ترغب في بدء تشغيل الصوت عند بدء التجربة، قم بتمكين خاصية Playing.
  5. (اختياري) إذا كان هذا كائن Sound هو المسار الوحيد الذي تريد تشغيله في المكان، قم بتمكين خاصية Looped الخاصة به.

تخصيص كائنات الصوت

تعمل خصائص كائن Sound معًا للتأثير على كيفية تجربة المستخدمين لصوتك، مثل:

  • مدى ارتفاع الصوت الذي يسمعونه لكل صوت بشكل فردي وبالاقتران مع بعضهم (الحجم).
  • كيف يدركون حجم الصوت عند تحركهم بعيدًا عن مصدر الصوت (RollOffMinDistance، RollOffMaxDistance، و RollOffMode)
  • ما الجزء من الصوت الذي يمكنهم الاستماع إليه (TimePosition).
  • مدى سرعة وبتردد يسمعونه (PlaybackSpeed).
  • إذا كان الصوت يعيد التشغيل تلقائيًا عند الانتهاء (Looped).

الحجم

تمكنك خاصية Volume من تعيين حجم صوتك من 0 (صمت) إلى 10 (صوت عالٍ). إذا كنت ترغب في تغيير حجم عدة كائنات Sound في نفس الوقت، يمكنك جعلها من أطفال مجموعة صوتية.

RollOffMinDistance و RollOffMaxDistance

تحدد خاصيتا RollOffMinDistance و RollOffMaxDistance نطاق كيف يدرك المستخدم الحجم من الصوت الموضعي. بالنسبة للصوت الحجمي، فإن RollOffMinDistance هو الحد الأدنى من المسافة بالسماكات التي يبدأ عندها الصوت في الانخفاض في الحجم عندما يبتعد مستمع العميل عن الكائن الأب BasePart، وتكون خاصية RollOffMaxDistance هي أقصى مسافة بالسماكات التي يمكن لمستمع العميل أن يسمع الصوت من سطح الكائن.

بالنسبة لصوت مصدر النقطة، فإن RollOffMinDistance و RollOffMaxDistance تعمل بطريقة مشابهة للصوت الحجمي، ولكن مدى الانخفاض الذي تتحكم فيه هذه الخصائص لا يحيط بالكائن، بل يؤثر فقط على المسافة إلى الخارج من مصدر النقطة.

RollOffMode

تتيح لك خاصية RollOffMode اتخاذ قرار بشأن كيفية تلاشي الصوت كلما زادت المسافة بين مستمع المستخدم ووالد كائن Sound. يمكنك ضبط هذه الخاصية على أحد القيم الأربعة لـ Enum.RollOffMode enum.

RollOffModeالوصف
معكوس (افتراضي)يتلاشى الحجم في البداية بشكل مفاجئ من RollOffMinDistance، لكن تلاشي الحجم يصبح أكثر تدريجًا كلما اقترب المستخدم من الوصول إلى RollOffMaxDistance. عند الوصول إلى RollOffMaxDistance، يصبح الصوت صامتًا.
خطّييتلاشى الحجم بشكل خطي بين RollOffMinDistance و RollOffMaxDistance. عند بلوغ المستخدم RollOffMaxDistance، يصبح الصوت صامتًا.
معكوس مائليتبع الحجم النموذج المعاكس عند القرب من RollOffMinDistance ونموذج المربع الخطّي عندما يكون المستخدم قريبًا من RollOffMaxDistance. يقترب الصوت من الصمت عند أقصى نقطة مسافة.
مربع خطّييتلاشى الحجم بين RollOffMinDistance و RollOffMaxDistance بعلاقة مربعة خطية. يقترب الصوت من الصمت عند أقصى نقطة مسافة.

PlaybackSpeed

تسمح لك خاصية PlaybackSpeed بتحديد سرعة تشغيل صوتك. على سبيل المثال، إذا قمت بتعيين قيمة PlaybackSpeed إلى 2، فإن صوتك سيعمل مرتين أسرع وبتردد أعلى. بالمثل، إذا قمت بتعيينها إلى قيمة 0.5، فإن صوتك سيعمل مرتين أبطأ وبتردد أقل.

TimePosition

تظهر خاصية TimePosition، بالثواني، ما هي الموضع داخل عينة الصوت التي يسمعها المستخدم حاليًا. هذه الخاصية مفيدة إما لتشغيل قسم فقط من عينة الصوت، أو لتحفيز حدث يحدث عند وصول الصوت إلى موضع معين. على سبيل المثال، تسبب الكود التالي من تشغيل مُولّد الجسيمات لإصدار جزيء حلقي أبيض فوق كائن ضمن مدى زمني محدد لمسار صوتي.


local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- إنشاء جزء جديد
local part = Instance.new("Part")
part.Anchored = true
part.Color = Color3.new(0.75, 0.2, 0.5)
part.Size = Vector3.new(2, 1, 2)
part.Material = Enum.Material.Neon
part.Position = Vector3.new(0, 4, 0)
part.Parent = Workspace
-- إنشاء تعلق على الجزء
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- إنشاء مولد جسيمات على التعلق
local emitter = Instance.new("ParticleEmitter")
emitter.Rate = 5
emitter.Lifetime = NumberRange.new(1.5, 1.5)
emitter.Texture = "rbxassetid://1266170131"
emitter.Speed = NumberRange.new(1, 1)
emitter.Size = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 6)}
emitter.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.25, 0), NumberSequenceKeypoint.new(1, 1)}
emitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
emitter.Parent = attachment
-- إنشاء صوت على التعلق
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- تشغيل الصوت
sound:Play()
-- بدء التحقق مما إذا كان يجب تمكين المولد
RunService.Heartbeat:Connect(function()
-- تمكين المولد ضمن مدى زمني للصوت؛ وإلا قم بتعطيله
emitter.Enabled = sound.TimePosition >= 5 and sound.TimePosition < 20
end)

Looped

تتيح لك خاصية Looped تكرار الصوت بعد الانتهاء من تشغيله. عند تعيينها إلى true، يتم تشغيل الصوت مرة أخرى. هذا مفيد لتطبيقه على الصوت الخلفي لضمان عدم وجود صمت مفاجئ في تجربتك.

كائنات الصوت البرمجية

تشغيل الصوت بشكل سياقي

بعيدًا عن التشغيل التلقائي للصوت من خلال خاصية Sound الكائن الخاصة بـ Playing، يمكنك تشغيل الصوت بشكل سياقي من LocalScript عن طريق استدعاء Play() على كائن Sound المعني. على سبيل المثال:


local Workspace = game:GetService("Workspace")
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://9120386436"
sound.Looped = true
sound.Parent = Workspace
sound:Play()

بدلاً من ذلك، إذا كانت المكان ستضم عدة مسارات، يمكنك تشغيل مسار محدد من LocalScript:


local SoundService = game:GetService("SoundService")
local musicTrack = SoundService:FindFirstChild("LucidDream")
if not musicTrack.IsPlaying then
musicTrack:Play()
end

تشغيل الصوت في الواجهة

يمكنك تشغيل الصوت في الواجهة لكائنات GuiObjects مثل الأزرار عن طريق توصيل كائن Sound بحدث مستمع Activated. هذا يسمح لك بتقديم ردود فعل سمعية للمستخدمين، مثل عندما يمررون فوقه أو يضغطون عليه.

لتشغيل الصوت لكائن Sound عند تفعيل المستخدم لـ TextButton أو ImageButton:

  1. في نافذة Explorer، مرر فوق TextButton أو ImageButton، ثم انقر على زر ⊕. ستظهر قائمة السياق.
  2. من القائمة، أضف إما LocalScript أو Script مع تعيين RunContext إلى Enum.RunContext.Client.
  3. استبدل الكود الموجود في البرنامج النصي بالكود التالي، ثم استبدل SOUND_NAME باسم كائن Sound الموجود داخل حاوية SoundService.

local SoundService = game:GetService("SoundService")
local button = script.Parent
local sound = SoundService:FindFirstChild("SOUND_NAME")
if not sound.isLoaded then
sound.Loaded:Wait()
end
local function onButtonActivated()
if sound and not sound.IsPlaying then
sound:Play()
end
end
button.Activated:Connect(onButtonActivated)
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.