Unity教學第三篇,這篇我們要講動畫和音效
建議先看過前兩篇
本篇分成2個小節:
1. 爆炸動畫製作
2. 音效和背景音樂
1. 爆炸動畫製作
先講爆炸的動畫
用小畫家開一個50 X 200像素的區域
每50像素畫一個爆炸的連環圖
畫好之後,存成PNG檔
拖曳到Asset中
點一下Explode,在Inspector的頁面裡
Sprite Mode選Mutiple
如果把很多圖片放在一張圖裡,就要選Multiple
然後按Sprite Editor
Sprite Editor按下去後
會出現一個新的視窗
1. 按左上角的Slice,會出現一個小選單
2. Type選Grid(格狀),Pixel Size的X和Y都設50 (新版是Grid By Cell Size)
3. 按下面的Slice(裁切)
然後我們就會看到圖片被切成4份了
1. 按Apply(使用)
2. 按X離開
按Explode旁的小三角型,會跑出我們切割的四個圖片
用Ctrl + 滑鼠左鍵,選取這四個圖片(變成藍底色)
一起拖曳到Hierarchy底下,會自動產生動畫
然後就會出現一個視窗,問你這個動畫要存成什麼名字
輸入explode,按存檔
會出現三個新的東西
1. Explode_0的物件
2. explode的動畫
3. Explode_0的動畫控制器
這三者的關係是,物件底下有動畫控制器,控制器底下有動畫
點一下explode動畫
把explode動畫底下的Loop time打勾取消
這樣動畫才不會一直重複播放
我們把Hierarchy底下的Explode_0物件改名成ExplodeObject
然後在ExplodeObject物件底下
加入程式描述
自訂一個新的function,取名為AnimationEnd
注意不是放在update的大括號內喔
void AnimationEnd()
{
Destroy (gameObject); //消滅物件
}
這個function我們等一下會用到
Window → Animation
開啟Animation視窗
1. 點一下ExplodeObject選擇動畫
2. 點Add Event. 加入新的事件
3. 把Event的小箭頭拉到第五格,我們會看到他顯示No Function Selected
也就是還沒選擇Function的意思 (新版會出現在Inspectors那個視窗裡)
4. 點兩下Event的小箭頭,就會出現選單
選擇我們剛剛自訂的AnimationEnd()
新版的Event會出現在Inspectors那個視窗裡
選了之後,我們會看到他顯示AnimationEnd()
然後我們把ExplodeObject拖曳到Asset底下
我們不需要爆炸一開始在場景裡
把Hierarchy底下的ExplodeObject刪掉
打開之前的外星人程式描述 (Invader.cs)
在開頭加上
public GameObject explo; //宣告一個名為explo的物件
然後在碰撞事件底下加入
Instantiate(explo,transform.position,transform.rotation); //在外星人的位置產生爆炸
if (col.tag == "Ship") //如果碰撞的標籤是Ship
{
Instantiate(explo,col.gameObject.transform.position,col.gameObject.transform.rotation);
//在碰撞物件的位置產生爆炸,也就是在太空船的位置產生爆炸
}
寫好之後存檔,我們就會看到外星人的程式底下多了Explo的空格
把ExplodeObject拖曳到空格中
存檔後按Play
成功的話,就會看到爆炸的動畫了
2. 音效和背景音樂
接著,要加入音效和音樂
我們去素材商店(Asset Store)找音效吧!
Window → Asset Store
Asset Store裡有很多超酷超炫的素材
音樂音效、2D圖片、3D人像、3D場景等
其中有一些是免費的,有空的話一定要逛一下!
按左上角的Log in,登入Unity的開發帳號
搜尋 "Free 8bit Game Sound Effect Package"
然後點擊進去,這個是免費的音效
Download然後Import
我們不用Import全部的檔案
我選了explosion0作為爆炸聲,shot3當作雷射聲
勾選這兩個就好,然後Import
當然你也可以全部Import,聽聽看不同的聲音
或是下載其他免費資源來用
Import之後,Asset底下會出現一個新的資料夾
裡面有剛剛勾選的explosion0和shot3
把這兩個檔案拖曳到Asset的資料夾裡
然後在LaserObject底下加入Audio元件
選Audio Source(聲音來源)
把shot3音效拖曳到AudioClip的空格
同樣的,我們在ExplodeObject底下加入Audio Source
然後把explosion0的音效拖曳到AudioClip的空格
存檔後Play,應該就能聽到音效了
接著找音樂
1. 右邊選單選Music
2. PRICE按價格排列
3. 找一個8-bit Action Free
也可以直接搜尋 " 8-bit Action Free "
我選了Aggressive1當作背景音樂
把要用的音樂拖曳到Asset中
1. Background底下新增Audio Source
2. 音樂拖曳到AudioClip的空格
3. Loop打勾,就會重複播放
4. 刪除不要的音樂,當然你也可以移到其他資料夾保留他們
存檔後Play,享受你的遊戲吧!
下一篇,我們會講解介面和遊戲機制
前往下一篇
想要了解程式的觀念,請參考 初學者如何建立程式的觀念(Scratch教學)

老師您好,很感謝您提供如此詳細的教學 學生我在學習中遇到一個問題, 在 2. 點Add Event. 加入新的事件這個地方, 我的Add Event 是處於無法案的狀態, 請問這是什麼問題。
要先選擇動畫,才能Add Event喔 我有修改內文,你再試試看 ^_^
老師您好,我已解決無法加入事件的問題, 不過我的步驟是, 1.從HierarChy內將ExplodeObject加入事件, 2.ExplodeObject物件複製至Assets 3.移除HierarChy的ExplodeObject物件。 我原本對老師教學的理解是 1.ExplodeObject物件從HierarChy複製至Assets, 2.刪除HierarChy中的ExplodeObject物件 3開啟Animation,選取Assets內的ExplodeObject物件 就無法使用Add Event功能, 不清楚是版本問題還是我理解有錯 Unity版本4.5.5f1。
你的理解是正確的 應該是版本問題,我是5.0.2 (=w=")
請問animation那邊該如何操作呢? 我點選我的explodeObject之後, add Event依舊是灰色的無法點選 我的版本是5.1.2f1
好像很多人不行,我修改了順序,感謝回應 ^_^"
感謝老師的教學 十分詳細! 期待Part4!
謝謝^_^ 後來animation問題解決了嗎?
我是前兩樓的學習者,我不確定老師四樓老師的回覆是不是對我說XD, 不過我已經解決問題了,三樓和四樓的學習者朋友們不是我XDD! 謝謝老師指導。
學習者大舉入侵! XDD
我是三樓的學習者,問題已經解決了 我是先把動畫拉到Hierarchy後才能使用animation的功能 如果先把ExplodeObject刪除的話,就不能使用
你是用Mac嗎? 想說會不會是系統的關係
可以請教如果是要給按鈕音效怎麼給嗎? 按下去才會有聲音~謝謝!
我是window8.1 企業版 unity 5.1.2.f1 不知道是不是版本問題 另外請問老師可以做一個拼圖製作的教程嗎? 在網路上找了很多都只有code 不是很理解
確認是版本問題 好,我會考慮看看
可惜了,怎麼沒繼續專研Android,期待看到其他Android文章
網路上已經有很多Android的文章囉
期待part 4
Part 4推出囉!
老師,你好: 我想請問 我做出來的效果是 我的戰鬥機一碰到外星人 就不見了 想請問 這個destroy的程式是寫在哪裡呢?? 如果想要這個戰鬥機被外星人碰撞三次才不見的話(有三條命)要怎麼改呢?? 謝謝 很期待 part4
這個destroy的程式是寫在哪裡呢?? >>UnityEngine底下 如果想要這個戰鬥機被外星人碰撞三次才不見的話(有三條命)要怎麼改呢?? >>設一個計數器囉 int Life=3; 碰撞時 Life -= 1 if(Life=0)消滅物件
期待PART4 +1 這些教學文比市面上的書簡單明瞭多了>< 買了書回來卻發現寫的不夠詳細 只能照本宣科 剛學根本看不懂阿QQ
哈哈,謝謝 我也是買了書做不出來,才寫這些教學文的
我想請問一下 就是之前有做的下邊界的部分 當怪物碰到之後 要怎麼樣讓他不要有爆炸的特效跟聲音@@?
咦? 為什麼會有....
我想問一下 BottomSideFunction.cs(18,32): error CS1525: Unexpected symbol `'
BottomSideFunction.cs(23,1): error CS8025: Parsing error
是什麼回事呀?
我跟你說的做
為什麼top side可以通過
bottom side不可以
可以付上code嗎?
在文章中附上囉 應該是打錯字吧,我想
那個~~我在ADD EVENT(動畫)的那邊他只閃一下就跳出去了不能進行下一步驟耶!!請問有辦法解決嗎QQ
按ADD EVENT應該會出現一個白色小箭頭在第一格 視窗閃掉沒關係 點小箭頭就會再出現
你好!我做到放背景音樂了..在unity執行開始前三秒如果一直按空白鍵他背景音樂會重複撥放到後面就一堆背景音樂混在一起請問這是正常的嗎?
咦? 怎麼會這樣,太強了!
先感謝大大提供教學 !! 我發生一個問題, 就是打中外星人爆炸後, 爆炸後的圖會殘留在畫面上... (殘留的圖片為切成後的第四個圖) http://i.imgur.com/Vb6k8BT.jpg (圖片連結)
我的爆炸圖...會殘留在畫面上...是否 addevent 沒有正確作好? 因為已從物件那先刪了... 連結圖: http://i.imgur.com/r13xqPo.jpg
你好: 我再從 素材拉 ExplodeObject 去 物件, 再重新作一次 AddEvent , 就正常啦!!! 謝謝 大大的教學!! 讓我這第一次弄 Unity 就上手!
很高興對你有幫助 ^_^
妳好 請問 自訂一個新的function,取名為AnimationEnd 注意不是放在update的大括號內喔 這段話 我不是很了解 另外 雖然有炸彈的動畫出現 但她都只出現在頂端 @@? 請問我哪個環節有錯誤
1. 只是提醒,AnimationEnd放的位置和圖片一樣就沒問題了 2. 應該是Invader.cs底下的Instantiate那行有打錯了
請問大大 我的四格圖片拉上去沒有出現存檔的選項耶 之後做好打怪物也沒有爆炸的動畫 能否請大大幫我看看 LINE ID wl03151019
大大不好意思 有出現動畫了 可是爆炸動畫沒有消失 檢查了一下函數 沒問題
如果是重複播放 可能是動畫的LoopTime有打勾 要取消打勾,動畫才會消失
老師 不好意思 看了您的教學才接觸這個軟體 請問一下 背景音樂我一放上去就出現一堆error 子彈對怪物碰撞失效 子彈也不會消失 怪物也會穿過背景不會消失 不然就只能不放背景音樂了QAQ
可能是格式不支援 請參考官方支援的格式 網址: http://docs.unity3d.com/Manual/AudioFiles.html
老師您好: 請問我按照您的步驟加入爆炸的音效,可是音效爆炸並不完全撥放完畢(甚至聽不出來是爆炸),有什麼方法可以讓其更加完善嗎? 謝謝指導。
可能是爆炸音太長了
老師您好,我發現每當子彈打到怪物爆炸的動畫顯示的時候,整體的動畫會停頓等待動畫播放完畢才會繼續,造成一種像是Lag的現象,不知道是不是哪個地方沒有調整好,所以造成了整個畫面的物件沒有同步進行呢? 再來一個奇怪的問題是,每當我Project存檔後重新開啟,按下Space會跑出子彈的這段腳本都會有點當掉,都會失去作用,要去重新改寫成其他程式存檔後再回來改成原來的才會作用。 還請老師不吝賜教!!感恩您
已經活了半百又多幾歲現在的我,因為受到正在讀大三孩子專案作業的請託,幾天前開始頂著鋼盔學習過去聞所未聞完全陌生的Unity,恐怕對初學者而言已經是超超齡了,憑著不服輸的意志先爬爬文,很快就發現老師你的部落格學習文章很吸引初學者,拜讀之後如獲至寶,依照你講解的步驟一步步操作雖然偶有遇到新舊版本的介面誤差,但還是可以完全OK,這也是我與生俱來的第一個2D射擊遊戲從線上學習文章跟著老師講解最後無痛完成,看到不少鄉民提問,我算是僥倖沒有操作失誤,最後感謝老師發表這類有益文章,希望老師可以繼續出更多的學習文章。
學習永遠不嫌晚!
老師您好,我在ADD EVENT(動畫)的那邊他只閃一下就跳出去了不能進行下一步驟耶!(無論我按多少次) 請問有辦法解決嗎QQ?
會另外跳一個視窗出來,把Unity視窗移動一下也許會找到
您好 我出現這段UnassignedReferenceException: The variable explo of Invator has not been assigned. You probably need to assign the explo variable of the Invator script in the inspector. C那邊對應的是這段 Instantiate(explo,transform.position,transform.rotation); 可以請教老師要改哪邊嗎QQ
public GameObject explo; //宣告一個名為explo的物件 應該是少打了這行
目前是都可以運作 只是當怪物被打中消失後 並不會有爆炸會面QAQ
我猜你忘記調圖層了
您的教學真的非常詳細,很感謝有你這種為教育熱誠的人
過獎了,其實這是寫給我自己看的筆記 教學只是順便
有些人遇到在ADD EVENT視窗秒閃的問題(我自己也遇到) 在準備要關掉視窗前亂按 發現只要在ADD EVENT的小視窗關閉旁邊按視窗放大 旁邊就會出現接下來動作的視窗了 unity5.3.5給大家參考:)
請問大大太空船爆炸的程式也是一樣嗎?如果一樣為甚麼col下面一直有波浪紅線?讓外星人射出子彈程式也是一樣嗎?
板本5.6.1f1, 在animation event, 多了很多項, 包含int, float, string, object. 其中的function 必需自己輸入函式名稱! 無法下拉選取!
版本更新後又改回來了
我覺得特效音有點吵想調小一點該怎麼做?
Audio Source底下Volume調小
'ExplodeObject(Clone)' AnimationEvent has no function name specified! 可以請問這邊是出了甚麼問題嗎 謝謝
我的爆炸動畫也只出現在頂端指令碼都再三確認過了 請問還有可能是哪裡出錯了嗎
記得調整圖層!
13樓的問題我也有 碰到底下會爆炸
大師我是一位從零開始的菜鳥 ,先感謝你的教程,我遇到了一個問題 所有編編程都打對了,但就是沒有發生爆炸動畫,為什麼呀求教
確認程式碼放的位置喔
嗚嗚不曉得島主還在不在...... 這兩天開始看這個教學摸UNITY,想問問上面要加入AnimationEnd事件那邊,說點兩下Event的小箭頭就會出現選單......但是我不知道Event的小箭頭指的是什麼小箭頭,好像沒看到,而且選單裡也只有No Function Selected......希望能有解答TT
小箭頭就是add event有點像書籤的那個東西。要先點explodeObject,再去點那個event書籤,才會有選項喔
我在Asset Store 找不到 Free 8bit Game Sound Effect Package TT 求救謝謝
用其他音效代替即可。可能下架了
不知島主還在不在QAQ 這幾天剛剛學unity,到爆炸動畫時卻出現了問題 問題是:[worker0] the animator controller (explode_0) you have used is not valid. animations will not play 我第一次用時做錯了,我把東西刪了後重新再做一次,結果就出這個問題了QAQ 希望島主可以教教我
把explode相關的東西都刪掉,然後再重做試試
島主好 explode相關的東西是指些甚麼呢?
文章中提到的這三個東西 1. Explode_0的物件 2. explode的動畫 3. Explode_0的動畫控制器
島主好,我遇到這個問題後就刪了這些東西
[Worker0] The Animator Controller (boom_0) you have used is not valid. Animations will not play 我在做爆炸的時候出現這個問題,請問要怎麼處理?