如何使角色进入Phaser 3中的建筑物?

时间:2019-01-02 18:08:38

标签: javascript json html5 phaser-framework tiled

我正在使用Tiled和Phaser 3制作自上而下的RPG风格的游戏。我已经在Tiled中制作了城市和商店的地图。另外,我已经为进入商店的玩家应该去的商店的位置设置了游戏对象,并为玩家应该出现的位置设置了游戏对象。我在弄清楚我应该使用的代码以帮助实现此功能以及返回城市地图方面遇到了麻烦。还有一件事,如果对此还有其他想法,我将不知所措。

更新:我已经使用已有的功能将角色加载到地图上,但问题是我无法移动角色。

这是我到目前为止拥有的功能:

// When the player walks into the store.
  player.onCollide = new Phaser.signal();
  Store.onCollide.add(enterstore,this);

  function enterstore(player){
 	const map2 = this.make.tilemap({ key: "map2" });
  	const tileset2 = map.addTilesetImage("store", "tiles2");

  	const storeLayer = map.createStaticLayer("Tile Layer 1", tileset, 0, 0);

  	storeLayer.setCollisionByProperty({ collides: true });

  	this.physics.add.collider(player, storeLayer);

  	storeLayer.setDepth(10);

  	const SpawnPoint = map.findObject("Objects", obj => obj.name === "Spawn Point");
  	const Store = map.findObject("Objects", obj => obj.name === "store");

  	player = this.physics.add
    .sprite(SpawnPoint.x, SpawnPoint.y, "atlas", "misa-front")
    .setSize(30, 40)
    .setOffset(282, 202);

 };

1 个答案:

答案 0 :(得分:0)

为此,我的解决方案非常简单。 (我没有使用Phaser,但是概念是相同的)

在“平铺”中,我将“矩形”放置在单独的对象层中。这些矩形覆盖了通往不同位置的区域,例如门,地面上的孔等。 在对象的属性中,我定义了目标位置。

从代码角度来说,您只需检查与这些矩形的碰撞即可。如果玩家与其中之一发生冲突,则将其移动到目标位置(单独的图块文件或当前地图上的不同坐标)。