Смещение кадров анимации Phaser 3? - PullRequest
0 голосов
/ 20 сентября 2019

Я использую Multiatlas и JSON-файл для своих спрайтов в Phaser 3. Как я могу установить смещение (например, setOrigin) для определенных кадров ?

В некоторых свойствахJSON, который, я полагаю, может помочь, но я не понимаю их значения.В чем разница между sourceSize и spriteSourceSize?Я также видел свойство anchor, но подозреваю, что это старая версия Phaser ...

Лучшей альтернативой было бы, если бы было возможно установить смещение кадра в определении анимации сам по себе, а не в определении кадров JSON.Но возможно ли это?

1 Ответ

0 голосов
/ 21 сентября 2019

РЕДАКТИРОВАТЬ : не важно, я неправильно понял вопрос.Речь идет о кадрах анимации и setOrigin, и setOrigin может отличаться для разных кадров.AFIAK все анимационные спрайты имеют одинаковое происхождение, поэтому один и тот же «якорь», но я не уверен на 100% в этом.

v - старый ответ - v

Подождите, покаВы сохраняете последовательность анимации в файле JS спрайта?Если это так, я хотел бы знать, как вы это делаете, потому что AFAIK вы должны создавать последовательности анимации программно в JavaScript, я обычно делаю это в preloader:

// preloader scene
create: function ()
{
    // create animations
    this.anims.create({
            key: 'anim_run',
            frames: [
                { key: 'sprites', frame: 'guyrun1' },
                { key: 'sprites', frame: 'guyrun2' },
                { key: 'sprites', frame: 'guyrun3' },
                { key: 'sprites', frame: 'guyrun2' }
            ],
            frameRate: 15,
            repeat: -1
        });

    //..etc.
},

И вы можете запустить анимациюс параметром startFrame для смещения анимации, т. е. начинать с кадра, отличного от первого кадра, например

// start animation with random offset
var r = Phaser.Math.RND.between(0, 3);
mainguy.play('anim_run', null, r); // key, ignoreIfPlaying = null, startFrame = r
...