簡體   English   中英

Phaser-如何選擇平鋪地圖圖層並將其設置為碰撞圖層

[英]Phaser - how to select a Tiled map layer and set it as collision layer

我對使用Phaser和Tiled地圖編輯器還很陌生,目前我正在使用制作的Tiled地圖制作平台游戲。 我無法在Tiled或Phaser文檔中,或者在教程或論壇中找到有關如何在Tiled地圖中選擇圖層作為碰撞層的信息。 在一些教程中,我看到人們將Tiled圖層屬性設置為沖撞:true,但我認為他們使用的是另一個Tiled版本,並且我在Tiled文檔中看不到任何信息。

我有3層,外加一層對象。 我已將所有碰撞圖塊放在一層中,其中包括地面和平台。 我已經讀過答案,指出您需要包括碰撞圖塊的索引,但是我不想包含單個圖塊,因為那里使用了很多圖塊。 我已經包含了Tiled map JSON文件的屏幕快照,我要創建碰撞層的層稱為“平鋪層2”。 我不確定是否需要在Phaser代碼中提及該圖層名稱以使其成為碰撞圖層,或者是否需要將該圖層設置為碰撞:在Tiled中為true。 我非常感謝有關使用Tiled或Phaser如何使其成為碰撞層的任何建議。 謝謝。

平鋪的地圖JSON文件

我評論了一下,但以為id可以提供更多的完整答案。 我使用P2物理,如果您使用Arcade可能不適用,則必須在Phaser網站上的大多數示例都假定使用Arcade。

因此,一旦您在Tiled中創建了tilemap,便會在preload方法中preload JSON和tileet圖像:

game.load.tilemap('levelOneData', 'assets/levels/levelOne.json', null, Phaser.Tilemap.TILED_JSON);
game.load.image('levelOneImage', 'assets/pics/levelOne.png');

然后,在您的create方法中,加載tileet圖像並設置與圖層的碰撞。

levelMap = game.add.tilemap('levelOneData');
slowLayerBodies = game.physics.p2.convertCollisionObjects(levelMap, "collide", true);

//add background image and set world size
background = game.add.tileSprite(0, 0, 4040, 2880, 'levelOneImage');

我不是Phaser的專家,但是仍然可以自己學習。 與大多數JavaScript構建的事物一樣,最有可能采用不同的方法。

另一種可能性是使用此Phaser插件: https : //www.npmjs.com/package/phaser-tilemap-plus

您可以設置具有多邊形和矩形形狀的對象層,並將其用作碰撞層。 多邊形可以是任何形狀,允許您使用傾斜和彎曲的圖塊。 您也可以使用一種單向形狀來跳過平台或單向門。 也可以為彈力表面設置回彈值或彈奏la Sonic。

除了高級圖塊碰撞之外,您還可以獲得在Tiled地圖編輯器中定義的圖塊動畫,碰撞和區域事件處理以及以自定義屬性的形式訪問元數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM