Phaser BitmapData Sprite在拖动时不可移动

时间:2015-12-10 17:35:49

标签: phaser-framework

我一般都是Phaser游戏的菜鸟,但我正在尝试制作像游戏一样的拼字游戏。

我将我的瓷砖作为BitmapData并添加到精灵中。我希望能够将它们拖放到我的拼字游戏板上,但是不能将一块瓷砖放在另一块瓷砖的地方。

出于调试目的,我一直试图让你的各个图块在拖放时尊重彼此的物理。我想要的行为是,当拖动时,撞到另一个瓷砖,该瓷砖“保持地面”,拖动瓷砖无法穿过另一个瓷砖。目前拖动的瓷砖只是在其他瓷砖的顶部。我看了很多例子,觉得我的问题可能是因为我的精灵是用bitmapData制作的,或者是拖拽事件周围的东西......

function makeTile (tileIndex, tile) {

    var bmd = game.add.bitmapData(canvasZoom, canvasZoom);

    // draw to the canvas context 
    bmd.ctx.beginPath();
    bmd.ctx.rect(0, 0, canvasZoom, canvasZoom);
    bmd.ctx.fillStyle = '#efefef';
    bmd.ctx.fill();
    bmd.ctx.fillStyle = '#234234';
    bmd.ctx.font="20px Georgia";
    bmd.ctx.fillText(tile.tileName, 7,23);


    // use the bitmap data as the texture for the sprite
    var tileSprite = game.make.sprite((tileIndex * canvasZoom) + canvasZoom, canvasZoom, bmd);
    game.physics.arcade.enable([tileSprite]);
    tileHandGroup.add(tileSprite);

    tileSprite.inputEnabled = true;

    var bounds = new Phaser.Rectangle(canvasZoom, canvasZoom, spriteWidth * canvasZoom, (spriteHeight * canvasZoom) + (canvasZoom * 2));
    tileSprite.input.boundsRect = bounds;

    tileSprite.name = 'tileSpriteName' + tileIndex;

    tileSprite.input.enableDrag(true);
    tileSprite.input.enableSnap(canvasZoom, canvasZoom, true, false);

    tileSprite.immovable = true;
    tileSprite.body.moves = false;

    tileSprite.events.onDragStart.add(onDragStart, this);
    tileSprite.events.onDragStop.add(onDragStop, this);
}

  function firstTileHand() {

    tileHandGroup = game.add.physicsGroup(Phaser.Physics.ARCADE);
    game.physics.enable(tileHandGroup, Phaser.Physics.ARCADE);
    tileHandGroup.enableBody = true;
    tileHandGroup.name = 'tileHandGroup';


    for (var i = 0; i < tiles.length; i++)
    {
        makeTile(i, tiles[i]);
    }
}

0 个答案:

没有答案