O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

MZ / MV - Criar animações com os 12 quadros de um sprite

Iniciado por Crixus, 29/05/2021 às 01:44

29/05/2021 às 01:44 Última edição: 30/05/2021 às 15:42 por Crixus
Um simples Script que possibilita o uso dos quadros de um gráfico de character, provavelmente daria pra fazer apenas com eventos, mas neste caso é pra facilitar no uso de rotas customizadas.

Download do Plugin:
GitHub

Exemplo de uso em um evento de mapa:
Spoiler
◇Script:spritePattern(this, 1)
◇Wait:45 frames
◇Script:spritePattern(this, 2)
◇Wait:45 frames
◇Script:spritePattern(this, 3)
◇Wait:45 frames
◇Script:spritePattern(this, 4)
◇Wait:45 frames
◇Script:spritePattern(this, 5)
◇Wait:45 frames
◇Script:spritePattern(this, 6)
◇Wait:45 frames
[close]



Se quiser animar um evento com processo paralelo também funcionará, mas se precisar animar outro evento no mesmo mapa use apenas números.

30/05/2021 às 18:49 #1 Última edição: 31/05/2021 às 02:03 por Jorge_Maker
Eu lembro bem que, numa das minhas primeiras fuçadas em programação, eu fiz algo do tipo para um projeto pessoal no RPG Maker VXAce. Fico feliz que esteja se dedicando a aprender programação.
Tem muita coisa pra melhorar no código, como por exemplo mudar o escopo da função spritePattern  (para a classe Game_Character, tal como uma função auxiliar na Game_Interpreter), mas eu queria fazer um adendo na parte lógica do código:

Todo esse empilhamento de condições que tu fez aqui:
Código: javascript
/* Determines the pose */
if(p==1 || p==2 || p==3){
    dir=2;
    pose=p-1;
}	
if(p==4 || p==5 || p==6){
    dir=4;
    pose=p-4;
}	
if(p==7 || p==8 || p==9){
    dir=6;
    pose=p-7;
}	
if(p==10 || p==11 || p==12){
    dir=8;
    pose=p-10;
}


Poderia ser resumido à isso:
Código: javascript
let 
i = (p - 1) / 3,
dir = (i + 1) * 2,
pose = p - (1 + 3 * i)


Muito mais prático, eficiente e gostosinho de ver.
Isso é importante pois, imagine se um char tivesse centenas de "poses", não seria viável fazer uma condição para cada, certo?

Desejo que continue a melhorar. o/
Oxe

30/05/2021 às 19:55 #2 Última edição: 30/05/2021 às 19:56 por Crixus
Que maravilha de olhar mesmo, porém os números que retornou foram:
spritePattern(this,1)

i -> 0.6666666666666667
dir -> 3.3333333333333335
pose -> -2

spritePattern(this,2)

i -> 1.6666666666666667
dir -> 5.333333333333334
pose -> -4

Eu vou estudar e criar uma fórmula que resulte os parâmetros certos pra cada direção.
O sistema em si foi um pedido focado em usar os 12 "blocos" do gráfico mesmo.

Muito obrigado Gab  :blink:

Isso deve corrigir:

Código: js
let
i = Math.trunc((p - 1) / 3),
dir = (i + 1) * 2,
pose = p - (1 + 3 * i)


Estou acostumado com ruby. lol
Oxe

31/05/2021 às 07:10 #4 Última edição: 18/06/2021 às 21:30 por Crixus
O Brandt (Masked) me passou isso:
pose = (p - 1) % 3;
dir = Math.ceil(p / 3) * 2;