بحث صدا و موسیقی در بازی کامپیوتری، بحث عجیب و گهگاه پرچالشیه. چرا که صداها میتونن جو و هدف بازی ما رو تعیین کنند و بهش فضای بالاتری اختصاص بدن. در این مطلب، قصد دارم بخشی از تجربیات خودم در زمینه صداگذاری (و نه آهنگسازی!) در بازی های کامپیوتری رو با شما به اشتراک بذارم. در این مطلب، چیزی که بررسی میکنیم : ۱. قرار دادن موسیقی متن بازی و ۲. پخش صدا در Trigger های خاص خواهد بود. پس در ادامه با من باشید 🙂
قرار دادن موسیقی متن بازی
اول یک پروژه به اسم Audio Test درست میکنیم، سپس وارد Scene اصلی میشیم تا این صفحه یونیتی رو ببینیم :
حالا باید دو کار انجام بدیم، از Asset های پیشفرض، یک First Person Controller برداریم و Main Camera رو هم پاک کنیم. ضمن این که لازمه حتما یک «زمین بازی» بسازیم. بعد از این کارها Scene من این شکلی شد :
وقتی روی FPSController کلیک کنیم و اولین زیرمجموعهش رو در Inspector ببینیم با این صحنه مواجه میشیم :
همونطور که میبینید، در این Inspector ما عنصری به اسم Audio Listener داریم. Audio Listener کارش «شنیدن صدا»ست و روی دوربین سوار میشه. کاراکتر اول شخص هم معمولا همراه خودش یک دوربین داره، پس خیالمون از بابت «شنیده شدن» صدا، راحته. حالا روی Add Component کلیک میکنیم و یک Audio Source بهش اضافه میکنیم و سپس، موسیقی متن مورد نظر رو به عنوان Audio Clip بهش معرفی میکنیم (در اینجا دوئت پیانو و ویولن که چند وقت پیش ساخته بودم رو معرفی کردم) و تیک Loop هم میزنیم :
(البته اینجا تیک Loop رو نزدم) و حالا تبریک! موسیقی متن بازی شما نشست روی بازی. ولی این همه ماجرا نیست. ماجرا در کل خیلی پیچیده تر میشه ولی این اولین چیزیه که ما باید یاد میگرفتیم (مثلا بعدها در مورد این که چطور موسیقی داینامیک استفاده کنیم و … هم بحث خواهد شد).
حالا که این رو یاد گرفتیم، بریم سراغ اضافه کردن یک لایه صدا که در یک Trigger خاص قرار میگیره.
ساخت Trigger های صدا
در Scene یک Sphere میسازیم، یک متریال دلخواه بهش میدیم، یک Collider از نوع Trigger براش تعریف میکنیم و نتیجه میشه این :
خب، محتوای Inspector باید مثل این باشه (البته الزامی نیست، صرفا خواستیم که محدوده Collider مشخص باشه). الان کاری که باید بکنیم، اینه که یک Audio Source و یک Script به این Sphere اضافه کنیم (زبان اسکریپت رو سیشارپ تعیین کنید). حالا کافیه در اسکریپتمون چنین چیزی بنویسیم :
این اسکریپت، میگه که «اگر چیزی وارد Collider من شد و تگ Player داشت، کلیپی که معرفی شده رو یک بار پخش کن». پس به Inspector باید بریم و برای FPSController مون، یک تگ Player تعریف کنیم. سپس، به Script (و نه Audio Source ) باید یک Clip اختصاص بدیم، به این شکل :
و خب کار تموم شد! این فایل صوتی هم با ورود ما به Trigger تعریف شده، پخش خواهد شد!
چه چیزهایی مونده که هنوز باید یاد گرفت؟
موضوعی که اینجا بهش پرداخته شد خیلی خیلی سطحی بود. برای کار صدا در یونیتی، هم باید با Audio Mixer کار کنیم هم Audio Mixer Snapshot . گذشته از اون، باید با اسکریپت؛ اینها رو به هم مرتبط کنیم، به شکلی که یه جا موسیقی آروم قراره پخش بشه و بعد موسیقی یک صحنه خوفناک وارد بشه و … . سعی میکنم در قسمت (های) بعد، این موارد رو هم پوشش بدم.
موفق باشید 🙂
مطلب جالب بود