iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Modern Web

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

Day14 角色有地方可以站了♪(´▽`)---Phaser3 物理群組&碰撞事件

  • 分享至 

  • xImage
  •  

在遊戲中加入碰撞事件吧!!

所謂的碰撞事件呢,好比說就像是在遊戲中常見會讓主角無法通過的"障礙物"
讓兩樣物體產生碰撞事件後,這樣物體就無法穿越彼此了(゚Д゚)

而碰撞事件常用在兩部分:
1. 站立平台
2. 障礙物

今天的教學就是要來將這2項加入遊戲中!(〃 ̄︶ ̄)人( ̄︶ ̄〃)


在加入碰撞事件前我們需要來介紹

:・゚✧物理群組:・゚✧

在將圖檔套上碰撞事件前得先讓圖檔有物理特性才行
開始之前,得先在constructor()內寫入變數,這樣才能讓群組能夠方便被套用(角色也需要)

那再來是物理群組程式:

this.變數名稱=this.physics.add.staticGroup();
this.變數名稱.create( X軸位置, Y軸位置 , ‘圖片名稱');
  • 將圖片加入程式之後該圖片就能加入物理性質,加入物理性質後即可讓圖片能夠有重疊事件、碰撞事件
  • 一個物理群組中可有多張圖片,同個群組中的圖片擁有相同的物理性質。

那麼來講解碰撞事件程式~(碰撞事件程式寫在create()中)
程式碼如下:

this.physics.add.collider(碰撞對象1,碰撞對象2);

碰撞對象:角色、圖檔等
==>將圖片填入碰撞對象後,即可產生碰撞事件,兩個填入的碰撞對象無法穿越彼此,不能互相重疊


接下來實作吧~

站立平台

首先在create()建立平台的位置,讓平台出現在畫面中(≧∇≦)ノ
忘記圖片位置設定的人可以點下方連結複習~
==>https://ithelp.ithome.com.tw/articles/10297521

在匯入圖片時我設定了一個名叫"platform"的圖檔:
https://ithelp.ithome.com.tw/upload/images/20220930/20152515Mpr9rbvE7L.png

加入"player"、"platforms"變數:

constructor(){
        super({ key: "Scene" });
        this.player=null;
        this.platforms=null;
    }

再來就是將"platform"加入物理群組並顯示在畫面(我加入了兩個平台~):

create(){
    this.platforms=this.physics.add.staticGroup();
    this.platforms.create(300,214,'platform');
    this.platforms.create(500,214,'platform');
}

https://ithelp.ithome.com.tw/upload/images/20220930/20152515n1yFeSfAYe.png
(上圖中因為還未加入碰撞事件程式所以角色可以穿越platform)

將碰撞事件程式加入:

create(){
    this.platforms=this.physics.add.staticGroup();
    this.platforms.create(300,214,'platform');
    this.platforms.create(500,214,'platform');
    
    this.physics.add.collider(this.player, this.platforms);
}

完成畫面:
https://ithelp.ithome.com.tw/upload/images/20220930/20152515IuNv7uIiTU.png
這樣就能看到角色站到平台上了✪ ω ✪

障礙物

與站立平台的做法相同,簡單來說就是將圖檔換位置就行了
那我們就以平台為例換位置看看吧φ(゜▽゜*)♪

create(){
    this.platforms=this.physics.add.staticGroup();
    this.platforms.create(300,214,'platform');
    this.platforms.create(580,180,'platform');
    
    this.physics.add.collider(this.player, this.platforms);
}

畫面如下:
https://ithelp.ithome.com.tw/upload/images/20220930/20152515MVhkJrKwbn.png
試著按下方向鍵就會發現角色被擋住無法通過了(。・∀・)ノ゙

PS.關於角色被擋在沒東西的地方為圖片沒切割好
將Debug打開後能看清楚遊戲畫面的圖檔狀況
(Debug教學==>https://ithelp.ithome.com.tw/articles/10298253)
https://ithelp.ithome.com.tw/upload/images/20220930/20152515wxMF7GOidp.png

大家在設定時要小心這部分喔~


這樣就完成今天教學了(/≧▽≦)/
今天教了物理群組與碰撞事件兩部分,讓角色能順利有地方可以站XD

接下來的教學要教重疊事件~敬請期待~~


上一篇
Day13 角色動起來了o(*゚▽゚*)o~~--Phaser3 角色動畫設定篇
下一篇
Day15 讓圖片與圖片相互互動吧(❁´◡`❁)---Phaser3 重疊事件
系列文
遊戲製作新手救星---Phaser3網頁遊戲教學與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言