8

このスプライト画像の 2 行目、3 行目、4 行目を、左、右、上 (上) の動きに対応して追加する方法を知る必要があります。

以下のコードは下の移動用で、スプライトの最初の行として移動できます。

横に長いスプライトを作成すると、それを達成できます。他に方法はありますか?

2行目以降を含める方法を教えてください。

スプライト画像 (ユーザー/プレイヤー) :スプライト画像 (ユーザー、プレイヤー)

function preload(){
    myGame.load.spritesheet('user', 'user4.png', 95, 158, 12);
}
var player;

function create(){
    player = myGame.add.sprite(500, 100, 'user');
    myGame.physics.arcade.enable(player);
    player.animations.add('bottom', [0,1,2,3,4,5,6,7,8,9,10,11], 12, true, true);

}

function update(){
        if (cursors.left.isDown) {
            //  Move to the left
            player.body.velocity.x = -150;
            player.animations.play('left');
        }
        else if (cursors.right.isDown)
        {
            //  Move to the right
            player.body.velocity.x = 150;
            player.animations.play('right');
        }
        else if (cursors.up.isDown)
        {
            //  Move to the right
            player.body.velocity.y = -50;
            player.animations.play('top');
        }
        else if (cursors.down.isDown)
        {
            //  Move to the right
            player.body.velocity.y = 50;
            player.animations.play('bottom');
        }
}
4

3 に答える 3

3

プリロードを次のように変更します。

function preload() {
    game.load.spritesheet('user', 'user4.png', 95, 158, 48);
}

すべての方向のアニメーションを追加します。

    player.animations.add('bottom', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 12, true, true);
    player.animations.add('left', [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 12, true, true);
    player.animations.add('right', [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35], 12, true, true);
    player.animations.add('top', [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], 12, true, true);

また、create() 関数でカーソル入力をキャプチャすることも忘れないでください。

    cursors = game.input.keyboard.createCursorKeys();

それをテストし、動作させました。スプライト シートは 100% 正しいわけではありませんが、問題ないように見えます。

于 2014-08-27T14:25:00.860 に答える
1

物事を簡単にするための私のアプローチは次のとおりです。

 animation_arr = ['idle', 'walk', 'jump', 'idle_towel', 'walk_towel', 'jump_towel' ];
 for(var i=0; i < animation_arr.length; i++){
    player.animations.add(animation_arr[i], [0+(i*10), 1+(i*10), 2+(i*10), 3+(i*10), 4+(i*10), 5+(i*10), 6+(i*10), 7+(i*10), 8+(i*10), 9+(i*10)], 10, true);
 }
于 2015-04-25T17:27:54.657 に答える