Invertendo uma animação completa.

TL;DR: Para inverter uma animação digite powershell no menu de pesquisa do Windows, copie o código do ANIMATION-MANIPULATOR, substitua “D:\Teste” pela seu diretório e pressione ENTER

Durante o desenvolvimento de Rio, exportamos uma série de imagens para o game, todas ‘olhando para frente (ou para cima)’:

esse é o fera
fera_sprite

No entanto descobrimos que o GameMaker, usa um plano cartesiano cujo ângulo 0 é para a direita.

No ínicio ignoramos isso e consertamos no código, sempre girando as imagens 90 graus. Mas ao longo do tempo, conforme as imagens e animações ficaram mais numerosas, resolvemos girar todas as imagens originais para reimportar no GameMaker com os objetos e personagens olhando para a direita.

Nosso artista falou ‘puta que pariu, ah, vai tomar no cu, tem 400 imagens já, pedisse pra eu exportar assim de ínicio seu cavalo’.

Então escrevi este Script para girar todas as imagens do game:


#ANIMATION-MANIPULATOR
#MACKNIGHTER 05/04/2016
#contador da sub-imagem da animação
$cont = 0;
#MUDE O ENDEREÇO DESTA PASTA PARA A PASTA QUE ESTÁ A ANIMAÇÃO QUE VOCÊ DESEJA INVERTER/GIRAR
$caminho = "D:\Teste"
#carrega modulo necessario para manipulação de imagens
[Reflection.Assembly]::LoadWithPartialName(“System.Drawing.Image”)

#pega todas as imagens na pasta que esta na variavel caminho
Get-ChildItem -Path $caminho *png | ForEach-Object {
#transforma a arquivo da imagem em um objeto manipulavel pelo powershell
$i = New-Object System.Drawing.Bitmap($_.FullName)

#rotaciona a imagem
$i.RotateFlip("Rotate270FlipNone")
#salva a imagem na mesma pasta, com o nome novaAnimacao(x).png, x é obtido pela variavel $cont
$i.save("D:\teste\novaAnimacao" + $cont + ".png")
#aumenta o contador para não sobrescrever a ultima imagem
$cont++
}

E voa lá (vouilá, sei lá….)

o fera
o fera_girado

Para utiliza-lo basta abrir o Powershell (ele é power, ele é shell, e ele está instalado no windows de fábrica, apenas entre no menu iniciar e digite powershell),
copiar e colar no código, e troque o valor da váriavel $caminho para o caminho da pasta que você quer inverter as imagens.

Os comentários devem ser o suficiente para você personalizar o script para seu gosto (você pode mudar o formato dos arquivos ou o nome dos arquivos de saída!).

Trocando a linha $i.RotateFlip(“Rotate270FlipNone”) por $i.RotateFlip(“Rotate180FlipNone”) você pode por exemplo girar o arquivo apenas 180.
Aí vái uma lista de parametros que você pode usar:

RotateNoneFlipNone
Rotate90FlipNone
Rotate180FlipNone
Rotate270FlipNone
RotateNoneFlip
Rotate90Flip
Rotate180FlipX
Rotate270FlipX
RotateNoneFlipY
Rotate90FlipY
Rotate180FlipY
Rotate270FlipY
RotateNoneFlipXY
Rotate90FlipXY
Rotate180FlipXY
Rotate270FlipXY

Eu também usei esse mesmo script novamente para consertar uma animação em que o personagem era destro em todas as animações, mas em uma ele saiu canhoto (esses canhotos do diabo)…. Apenas mudando de $i.RotateFlip(“Rotate270FlipNone”) para $i.RotateFlip(“RotateNoneFlipY”)

Published by

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *