我是Phaser的菜鸟,正在研究Flappy Bird。我尝试建立一个无限的地面,我尝试了tilePosition,但是它不起作用。

var ground;
function preload(){
  game.load.image('ground', '/assets/groud.png');
}
function create(){
  ground = game.add.tileSprite(0, 480, 'ground');
}
function update(){
  ground.tilePosition.x -= 1;
}


但这不起作用,有人可以帮我吗?

最佳答案

constructor for TileSprite需要参数x, y, width, height, key(和frame,但仅适用于spritesheets,不适用于使用image的参数)。

因此,我认为您忘记了width和height参数,导致Phaser将“地面”视为宽度。这可能会在JavaScript控制台上引发错误消息。在Chrome中按CTRL + Shift + J,在FireFox中按F12,然后在控制台中查看是否有任何消息。

另外,我不知道您使用的分辨率是什么,但是参数480是y位置,也许这​​会导致TileSprite位于屏幕下方,因此它不可见?

也许试试看:

function create(){
    ground = game.add.tileSprite(0, 100, game.width, 50, 'ground');
}

08-19 10:19