相位器和相机定位上的对象池(等距平铺)

时间:2016-08-31 23:45:18

标签: javascript phaser-framework isometric

我是Phaser的新手,我现在很难在phaser等距插件的帮助下生成一个tilemap。我也很难理解与Phaser世界,游戏和相机相关的一些概念,这些概念使得更正确地生成tilemap的一部分。我实际上已经注意到这个问题似乎是Phaser新手的障碍,就像我一样,如果正确解释它肯定有助于对抗这一点。

谈及此事:

我使用单个草精灵使用 for循环生成了一个tilemap。 for循环工作正常,我还实现了一个函数,我可以指定我想要生成的tile数。

{
  spawnBasicTiles: function(half_tile_width, half_tile_height, size_x, size_y) {
    var tile;
    for(var xx = 0; xx < size_x; xx += half_tile_width) {
      for(var yy = 0; yy < size_y; yy += half_tile_height) {
        tile = game.add.isoSprite(xx, yy, 0, 'tile', 0, tiles_group);
        tile.checkWorldBounds = true;
        tile.outOfBoundsKill = true;
        tile.anchor.set(0.5, 0);
      }
    }
  }
}

enter image description here 因此,生成静态草砖的过程不是问题。问题,以及我试图让对象池正常工作的原因之一是当磁贴数量超过80时,这对游戏性能产生了巨大影响。由于我的目标是制作巨大的自动生成地图,这些地图根据玩家角色位置进行渲染,因此对象池是必不可少的。我已经为这些图块创建了一个组,并添加了我认为将不需要渲染的图块(物理,世界边界......)所需的属性。然而,经过多次尝试,我得出的结论是,即使是超出界限的瓷砖仍然会产生。我还使用了另一个属性而不是add.isoSprite来生成tile,这是 .create 但没有区别。我想没有任何瓷砖被杀死#34;

  • 这个过程是否正确?我需要做什么才能生成出现在相机上的图块(我假设相机是可见的游戏矩形),并在角色移动到另一个区域时生成剩下的图片,假设相机已经跟踪了角色的移动?

除此之外,我希望在世界中间生成我的角色,这是生成的草图块的中间。但是,我也很难做到这一点。我认为,为了达到这个目的,我应该使用以下概念,尽管不能:

  • .anchor.set()
  • game.world.setBounds (特别是这一个......它似乎没有设定我订购的地方);
  • Phaser.game (我将它的大小设置为我的window.width和window.height,没有太多麻烦......)

总结: 使用以下用于生成切片的循环方法,如何在跟随我的角色的相机移动到另一个区域时生成无限/几乎无限的地图?除此之外,在生成的草地图中间始终生成角色的正确方法是什么,以及相机从角色的起点开始?

我将非常感谢他们的帮助,并希望这对于处于类似情况的人来说可能是有价值的。对于任何额外的信息,只需询问,如果您想要按特定数字生成图块的功能,我很乐意发布。对不起任何语言错误。

非常感谢。

修改

通过将X和Y设置为(大小/宽度)和(大小/高度),我能够始终在草中间生成我的角色。大小是px中X和Y的度量。

0 个答案:

没有答案