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

Dio*_*nha 10 javascript isometric phaser-framework

我是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);
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

非常感谢你.

编辑:

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