TUTORIAIS

Phaser Actions: como alterar vários Game Objects sem escrever loops

Phaser.Actions aplica uma mudança a arrays ou Groups de Game Objects, e os parâmetros step, index e direction criam variação e controlam a ordem. A versão do Phaser não é especificada na fonte.

Ilustração editorial de vários sprites alinhados e girando em um jogo 2D
Imagem: Phaser Tutorials · identificada na matéria-fonte e otimizada pela Rplay News. Fonte ↗

As Actions do Phaser permitem alterar vários Game Objects de uma vez, sem escrever um loop manual para cada ajuste. São funções estáticas do namespace `Phaser.Actions`: você passa um array de objetos, e a função aplica a mesma operação a todos. A fonte é a documentação oficial "Actions | Phaser Help", que não traz data de publicação nem indica a versão do Phaser. Por isso, confira a compatibilidade no projeto antes de adotar qualquer exemplo.

O que são Actions e quando usá-las

Segundo a documentação, uma Action costuma executar uma única tarefa combinando vários recursos do Phaser. Entre os exemplos citados estão alinhar sprites ao longo de uma linha e girar um conjunto de sprites em torno de um ponto. Algumas Actions foram pensadas para uma chamada única, e outras para rodar continuamente em um loop de atualização.

Por serem funções estáticas, elas são chamadas diretamente, sem instanciar nada.

JOGUE NA RPLAY

Conheça jogos publicados na Rplay Games

Jogue grátis online, sem baixar.

Ver catálogo →

Pré-requisitos: conhecimento básico de Phaser, familiaridade com Game Objects, arrays JavaScript e a estrutura de uma cena.

Como aplicar uma Action a um Group

Actions recebem arrays. Para usá-las em um Group, passe o resultado de `getChildren()`. O exemplo da documentação define o alpha de todos os filhos do grupo como 0.5:

Phaser.Actions.SetAlpha(myGroup.getChildren(), 0.5);

Step, index e direction: variação e ordem de iteração

Muitas Actions aceitam três parâmetros opcionais, que evitam chamadas repetidas.

  • **step**: valor somado ao valor informado, multiplicado pelo contador da iteração. Com 10 sprites em `SetX` e valor 100, todos ficam em x = 100. Com step 50, o primeiro fica em 100, o segundo em 150, o terceiro em 200 e assim por diante.
  • **index**: posição inicial no array. Ele pula os primeiros itens e aplica a Action só aos restantes. O padrão é zero, que atinge todos os itens, e o índice nunca deve exceder o tamanho do array.
  • **direction**: o padrão 1 percorre do início ao fim; -1 percorre do fim ao início. Isso inverte a ordem de aplicação sem alterar o array.

Algumas Actions aceitam dois valores de step, porque ele é dividido entre x e y. Em `SetScale`, o primeiro vale para scaleX e o segundo para scaleY. A documentação recomenda consultar cada Action para saber se ela suporta isso.

Exemplos de Actions documentadas

**Angle** soma o valor informado à propriedade angle, em graus. Por ser aditiva, pode ser chamada em um update loop para incrementar a rotação aos poucos:

Phaser.Actions.Angle(myObjects, 90);

**AlignTo** alinha os objetos um ao lado do outro. Recebe os itens, uma posição (constante de alinhamento como `Phaser.Display.Align.LEFT_CENTER`) e offsets opcionais em x e y:

Phaser.Actions.AlignTo(items, position, [offsetX], [offsetY]);

Outras Actions descritas na página:

  • `IncAlpha`, `IncX`, `IncY` e `IncXY`, todas aditivas. `IncXY` aceita index e direction, e seu step é dado em dois valores, stepX e stepY.
  • `PlaceOnCircle`, `PlaceOnEllipse`, `PlaceOnLine` e `PlaceOnRectangle`, que posicionam objetos em pontos igualmente espaçados. A Origin dos objetos influencia como eles aparecem em relação a esses pontos.
  • `GridAlign`, `GetFirst`, `GetLast` e `Call`.

Nas Actions de posicionamento, alterar depois a forma usada (círculo, elipse, linha ou retângulo) não move os objetos já posicionados. É preciso chamar a Action de novo. Para animar o efeito, a documentação sugere chamá-la em update, tween ou loop temporizado enquanto a forma muda.

O que a fonte não confirma

  • Data de publicação e compatibilidade com versões específicas do Phaser.
  • Impacto em desempenho ou FPS, que não é discutido.
  • Os exemplos de arquivo citados na página, como os de angle e inc alpha em update, não vieram nos trechos analisados.

A Rplay Games não testou estes exemplos. Eles refletem apenas o que a documentação oficial descreve.

Orientações baseadas na fonte indicada; não testadas pela Rplay. Confira a versão e a plataforma antes de aplicar.

Fontes e transparência editorial

Esta matéria da Rplay News foi produzida em português a partir das fontes identificadas abaixo. O conteúdo é reorganizado para acrescentar contexto e utilidade, sem copiar a redação das publicações originais.

PhaserGame ObjectsActions APIdesenvolvimento Phasertutorial desenvolvimentootimização sprites

Conteúdo produzido com apoio de automação e IA a partir das fontes citadas.