iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Modern Web

遊戲製作新手救星---Phaser3網頁遊戲教學與實作系列 第 8

Day7 Phaser3 2D網頁遊戲關卡----圖片音效匯入篇(o゚v゚)ノ

  • 分享至 

  • xImage
  •  

再來就把資源,圖片與音效匯入到遊戲中吧!!

在開始之前,如果還沒有準備圖片或音效的人
可以到 ==> https://github.com/michelle379/phasertest 這邊來下載喔

https://ithelp.ithome.com.tw/upload/images/20220923/20152515gUtm0lYnCw.png
圖中紅框起來的部分就是圖片與音效

要下載的話,先點擊綠色按鈕Code,再點擊Downlod ZIP 即可~
https://ithelp.ithome.com.tw/upload/images/20220923/201525154McBf8UJlE.png

解壓縮完再將圖片與音效複製到資源資料夾中就可以囉ヽ(✿゚▽゚)ノ
https://ithelp.ithome.com.tw/upload/images/20220923/20152515ggmvTv21td.png

記得檢查程式中有沒有出現資源喔
https://ithelp.ithome.com.tw/upload/images/20220923/20152515Bh3OjldVrJ.png


都準備好了的話,今天的教學就開始囉(≧∇≦)ノ

這次的程式將寫在preload()中
https://ithelp.ithome.com.tw/upload/images/20220923/20152515GVd2CZyyhf.png

可以匯入的分為

  • audio 音樂or音效
  • image 圖片*
  • spritesheet 可切割圖片(動畫用)

先來講audioimage的部分

""
載入音效程式: this.load.audio(“音效名稱“,‘音效檔案位置’);
載入圖片程式: this.load.image(“圖片名稱“,‘圖片檔案位置’);
""

音效名稱與圖片名稱可以自己隨意輸入,之後如果要用到該資源時,只要輸入取名的名稱就可以了喔~

而檔案位置的部分,即為該圖片與檔案的相對位置
也就是**("資料夾名稱"+"/"+)"檔案名稱"+"檔案類型"**

若不再資料夾中則直接輸入名稱和類型即可,若為多資料夾則 "資料夾名稱"+"/" 就要多加幾個
例如: (.jpg檔案"player"在資料夾2中,資料夾2在資料夾1中) ==> 資料夾1/資料夾2/player.jpg

有點複雜?那舉個例子好了
以資源資料夾中的assets資料夾內的coin圖片為例:

要從assets資料夾拿出圖片
就要輸入==>"assets"+"/"+"coin"+".png"
https://ithelp.ithome.com.tw/upload/images/20220923/20152515iEnzhutUPX.png

那麼將想要的資源匯入吧,
我選擇了檔案中 lose與pick音效 以及 platform、heart、lose、c、coin圖檔
當然也可以自行匯入想要的資源~

class Scene extends Phaser.Scene{
    constructor(){
        super({ key: "Scene" });

    }
    
    preload(){
        this.load.audio('lose', 'music/lose.mp3');
        this.load.audio('pick', 'music/pick.mp3');

        this.load.image("platform",'assets/platform.png');
        this.load.image("heart",'assets/heart.png');
        this.load.image("lose",'assets/lose.png');
        this.load.image("enemy","assets/c.png");
        this.load.image("coin","assets/coin.png");
    }
    create(){

    }
    update(){

    }
}

再來是 spritesheet 可切割圖片 部分
可切割圖片主要是用來做在動畫的部分,同樣的圖片角色有著不同的動作~
https://ithelp.ithome.com.tw/upload/images/20220923/201525157l9UCVqfEx.png
提供的檔案,在assets資料夾內也有提供spritesheet喔,可以找找看(o゜▽゜)o☆


那就來匯入spritesheet吧~

""
載入可切割圖片程式:
this.load.spritesheet(‘可切割圖片名稱’,‘可切割圖片檔案位置’,{frameWidth:切割圖片寬,frameHeight:切割圖片高});
""

將選定的可切割圖片設定名稱、填入圖片位置後,
決定想切割的圖片大小,填入frameWidth、frameHeight
出來的結果就會以所填入的尺寸從左至右開始做切割並照順序作編號

舉例:
https://ithelp.ithome.com.tw/upload/images/20220923/20152515Ufaakj8rIG.png

https://ithelp.ithome.com.tw/upload/images/20220923/20152515TfNSmzGiCR.png

https://ithelp.ithome.com.tw/upload/images/20220923/20152515DHVrNwjRqt.png

這樣就完成角色的圖片切割了~之後可以用其編號來製作動畫喔(☆▽☆)

這邊是程式的部分~ 我選擇了檔案中rabbit3 - doux.圖檔

class Scene extends Phaser.Scene{
    constructor(){
        super({ key: "Scene" });
        this.player=null;
        this.platforms=null;
        this.heart=null;
        this.lose=null;
        this.enemy=null;
        this.coins=null;
    }
    
    preload(){
        this.load.audio('lose', 'music/lose.mp3');
        this.load.audio('pick', 'music/pick.mp3');

        this.load.image("platform",'assets/platform.png');
        this.load.image("heart",'assets/heart.png');
        this.load.image("lose",'assets/lose.png');
        this.load.image("enemy","assets/c.png");
        this.load.image("coin","assets/coin.png");

        this.load.spritesheet('player','assets/rabbit3 - doux.png',{frameWidth:72 ,frameHeight:72 });
    }
    create(){
        
    }
    update(){

    }
}

這樣就完成所有資源的匯入了~那接下來就是將他們顯示出來了!!
敬請期待明天的教學~~


上一篇
Day6 Phaser3 2D網頁遊戲關卡----場景設定篇(o゚v゚)ノ
下一篇
Day8 讓圖片豐富遊戲畫面吧(´▽`ʃ♡ƪ) --Phaser3 圖片位置設定
系列文
遊戲製作新手救星---Phaser3網頁遊戲教學與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言