Слой Tilemap не сталкивается с игроком - PullRequest
0 голосов
/ 31 мая 2019

У меня проблема с картой тайла, я использую один слой, и я установил номер тайла 5, чтобы он функционировал как барьер, через который игрок не может пройти, или я так надеялся.Но это не работает, я использовал графический метод, чтобы показать, является ли барьер встречным, как вы можете заметить на картинке.Примечание: консоль не показывает ошибок, любая помощь будет отличной!https://i.stack.imgur.com/UB4S8.png https://i.stack.imgur.com/cLzcu.png

{ "height":6,
 "infinite":false,
 "layers":[
        {
         "data":[1, 1, 1, 1, 1, 1, 1, 5, 5, 1, 1, 1, 5, 1, 1, 1, 1, 5, 1, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1],
         "height":6,
         "id":1,
         "name":"Tile Layer 1",
         "opacity":1,
         "type":"tilelayer",
         "visible":true,
         "width":5,
         "x":0,
         "y":0
        }],
 "nextlayerid":2,
 "nextobjectid":1,
 "orientation":"orthogonal",
 "renderorder":"right-down",
 "tiledversion":"2019.05.08",
 "tileheight":32,
 "tilesets":[
        {
         "columns":25,
         "firstgid":1,
         "image":"ground_1x1.png",
         "imageheight":32,
         "imagewidth":800,
         "margin":0,
         "name":"ground_1x1",
         "spacing":0,
         "tilecount":25,
         "tileheight":32,
         "tilewidth":32,
         "transparentcolor":"#ff0000"
        }],
 "tilewidth":32,
 "type":"map",
 "version":1.2,
 "width":5
}
function create ()
{

    map = this.make.tilemap({key: 'map'});

   groundTiles = map.addTilesetImage('ground_1x1', 'ground');
    map.createStaticLayer('Tile Layer 1', groundTiles,0,0);
    map.setCollision(5);

    var debugGraphics = this.add.graphics();
    map.renderDebug(debugGraphics);
    debugGraphics.visible = true;




indi= this.physics.add.sprite(200, 60, 'mario');
indi.body.allowGravity = false;
indi.setInteractive();
this.cursors = this.input.keyboard.createCursorKeys();
indi.setCollideWorldBounds(true);
this.physics.add.collider(indi, groundTiles);

}

1 Ответ

0 голосов
/ 01 июня 2019

var config = {
    type: Phaser.WEBGL,
    width: 400,
    height: 288,
    parent: 'phaser-example',
    loader: {
      baseURL: 'https://raw.githubusercontent.com/nazimboudeffa/assets/master/',
      crossOrigin: 'anonymous'
    },
    physics: {
      default: 'arcade',
      arcade: {
        gravity: { y: 10 }
      }
    },
    scene: {
        preload: preload,
        create: create
    }
};

var game = new Phaser.Game(config);
var map;
var cursors;
var player;
var groundLayer;

function preload ()
{
    this.load.image('tileset', 'maps/super-pixel-platformer-set/tileset.png');
    this.load.tilemapTiledJSON('map', 'maps/super-pixel-platformer-set/level0.json');
    this.load.image('alien', 'sprites/phaser-alien.png');
}

function create ()
{
  map = this.make.tilemap({ key: 'map' });
  var groundTiles = map.addTilesetImage('tileset');

  groundLayer = map.createStaticLayer('ground', groundTiles, 0, 0);
  map.createStaticLayer('jumpThrough', groundTiles, 0, 0);
  
  //groundLayer.setCollision(7);
  groundLayer.setCollisionBetween(7,9);
  
  player = this.physics.add.sprite(100, 50, 'alien');
  player.setCollideWorldBounds(true);
  
  this.physics.add.collider(player, groundLayer);
}
<script src="//cdn.jsdelivr.net/npm/phaser@3.17.0/dist/phaser.min.js"></script>
...