發表文章

目前顯示的是有「Unity 遊戲音效與音樂」標籤的文章
Related Posts Plugin for WordPress, Blogger...

3-21 Add An Effect Audio On Special Abilities

圖片
本章要介紹如何在發動技能時播放音效,實作方式還滿簡單的。首先,請大家下載免費音效,或是自己在網路上找也可以。 Fantasy SFX for Particle Distort Texture Effect Library https://www.assetstore.unity3d.com/en/#!/content/42146 我挑選sfx_chrono_gale當作發動範圍技的音效。 接著修改SpecialAbilityConfig.cs及AreaEffectBehaviour.cs。我們會在SpecialAbilityConfig中新增一個AudioClip用來存放該技能的音效,並在AreaEffectBehaviour的Use方法中取得該音效並播放。 SpecialAbilityConfig.cs: using System.Collections; using System.Collections.Generic; using UnityEngine; using RPG.Core; namespace RPG.Character{ public struct AbilityParams{ public IDamageable target; public float baseDamage; public AbilityParams(IDamageable target, float baseDamage){ this.target = target; this.baseDamage = baseDamage; } } public abstract class SpecialAbilityConfig : ScriptableObject { [Header("Special Ability General")] [SerializeField] float energyCost = 10f; [SerializeField] GameObject particlePrefab = null; [SerializeField] AudioClip audioClip = null; abstract public ISpecialAbility ...

3-13 Player Damage & Death Sound

圖片
本章要教大家播放受傷跟死亡的音效。首先請大家下載角色的音效,花了很多時間才找到滿意的免費音效: http://www.affordableaudio4everyone.com/Affordable%20SFX%204%20Everyone/Samples/ActionRPG_Characters/ActionRPG_Char_Samples.zip 另外這是該音效的官網,介紹是說有4290個音效,只要約600元的樣子,大家有興趣可以參考看看: http://www.affordableaudio4everyone.com/Affordable%20SFX%204%20Everyone/ActionRPG_Characters.html 但我還沒買,在目前的階段中,我們使用免費音效來測試程式是否能正常運作即可。往後要優化遊戲體驗時,再找更好的資源檔進行更換。 首先,先開啟File/Build Settings選項。 按下「Add Open Scenes」將目前的開啟的Scene加入,因為我們要製作當玩家死亡後會重新讀取關卡的功能,必須先將Scene登記在Build Settings中。 然後,在Player中加入Audio Source,這是用來播放音效的組件。 將Play On Awake選項關掉。 接著,請將剛剛下載的音效檔匯入,或者匯入自己預先準備的音效檔。 主要修改Player.cs及Enemy.cs。於Player.cs的TakeDamage方法中新增條件式判斷血量,血量不足時呼叫KillPlayer方法,這邊使用StartCoroutine的呼叫方式,是為了讓程式等待死亡音效播放完畢後,再重新載入場景。播放音效的部分,則用Random隨機函數挑選其中一個音效檔。 Enemy.cs的Update中,則增加了判斷玩家是否已死的條件式,當玩家死了以後就不要再攻擊玩家了。不然會發生Player喊著死亡音效的時候,Enemy還在拚命鞭屍的窘境。(ˊˋ) 最後,將音效拉入Damage Sounds跟Death Sounds即可。 以下提供本章修改的完整程式碼。 Player.cs: using System.Collections; using System.Collection...

3-3 Trigger Player Hit Animation And Audio On Radius

圖片
本章要介紹如何播放Player的攻擊動畫,以及當Player進入到某個範圍後會播放音效。因為前半段製作過程都已有文章進行說明,如大家有不懂的地方請先閱讀以下文章: 2-27 Import Mechanim Animation Pack https://rpgcorecombat.blogspot.tw/2017/12/2-27-import-mechanim-animation-pack.html 3-2 The Animator Override Controller https://rpgcorecombat.blogspot.tw/2017/12/3-2-animator-override-controller.html 主要更改的程式碼為Player.cs,只要在呼叫IDamageable的TakeDamage之前,使用animator呼叫SetTrigger方法即可,如下圖。 我在Player.cs中進行了一些重構讓方法可以自我解釋: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Assertions; using RPG.CameraUI; // TODO consider re-wiring using RPG.Core; using RPG.Weapons; namespace RPG.Character{ public class Player : MonoBehaviour, IDamageable { [SerializeField] float maxHealthPoints = 100f; [SerializeField] float damagePerHit = 50f; [SerializeField] AnimatorOverrideController animatorOverrideController; [SerializeField] Weapon weaponInUse; Animator animator; float currentHealthPoint; float lastHitTime; ...