codigo: animlenght = 2;
animTime = 6;
animID[0] = tstBrightman;
animID[1] = tstBrightmanAnimated1;
animateOnTransition = true;
animationLayer = 700;
Obrigado por visitar a The Game Makers Brasil Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais. |
animated tileset
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
animated tileset
bom dia pessoal!
eu estou com problemas em animar,essa parte do animated tileset,nas fases ja ate usei codigo de outras fases e nao ficar bom,ficar piscando,queria saber porque isso alguem saber?
eu estou com problemas em animar,essa parte do animated tileset,nas fases ja ate usei codigo de outras fases e nao ficar bom,ficar piscando,queria saber porque isso alguem saber?
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: animated tileset
Você ta alternando entre as camadas de tiles ?
Se for isso deixe uma camada sempre ativa e a outra você fica desativando e ativando.
Se for isso deixe uma camada sempre ativa e a outra você fica desativando e ativando.
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
Re: animated tileset
codigo: animlenght = 2;
animTime = 6;
animID[0] = tstBrightman;
animID[1] = tstBrightmanAnimated1;
animateOnTransition = true;
animationLayer = 700;
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
Re: animated tileset
esse é o codigo dentro do objeto:
event_inherited();
///Used to animate a tileset with its animation frames in different backgrounds
///An object setter is required for animating chunks of tiles(you don't have to set any object if you
///don't want to, just put one in the tileset so its tiles are splited).
///To use you have to set the animID array to the animation frames of the tileset
///and set animationLayer to the layer where the animated tiles are
/*
animLength = how many frames
animTime = interval before change
animID[#] = background frame (Note # goes up from 0 to animLength)
animateOnTransition = will stop animations during the transition
animationLayer = Layer animated tiles start at (your animated tiles should start on this layer)
Note: This only works for tiles on a 16x16 grid
see the example level for how to set this up.
*/
animLength = 2;
animTime = 6;
animateOnTransition = true;
animID[0] = tstBubbleman;
animID[1] = tstBubblemanAnimated1;
animationLayer=700;
timer = 0;
tileID = 0;
init=1;
begin step:
/// This generates tiles all across the levet
/// Note this causes lag at the start of the stage in larger levels
if(init)
{
print("Animating");
var tiles = tile_get_ids_at_depth(animationLayer);
var total = array_length_1d(tiles);
if(total<=0)
{
init=0;
instance_destroy();
exit;
}
for (var i = 0; i < total; i+=1)
{
var tile = tiles;
var bg=tile_get_background(tile);
var skip=false;
var k=0;
for(var j=0; j<animLength;j+=1;)
{
if(bg==animID[1])
{
skip=false;
k=j+1;
break;
}
}
if(skip)
continue;
if(k>=animLength)
{
k=0;
}
for(var j=1;j<animLength;j++)
{
tile_add(animID[k], tile_get_left(tile),
tile_get_top(tile), 16,
16, tile_get_x(tile), tile_get_y(tile),
animationLayer + j);
++k;
if(k>=animLength)
{
k=0;
}
}
}
for(var i =1;i<animLength;i++)
tile_layer_hide(animationLayer+i);
init=false;
exit;
}
if (global.frozen)
{
if (!global.switchingSections)
{
exit;
}
else if (!animateOnTransition)
{
exit;
}
}
if (timer < animTime)
{
timer += 1;
}
else
{
timer = 0;
if (tileID < animLength)
{
tile_layer_hide(animationLayer + tileID);
tileID += 1;
if(tileID==animLength)
tileID = 0;
tile_layer_show(animationLayer + tileID);
}
}
event_inherited();
///Used to animate a tileset with its animation frames in different backgrounds
///An object setter is required for animating chunks of tiles(you don't have to set any object if you
///don't want to, just put one in the tileset so its tiles are splited).
///To use you have to set the animID array to the animation frames of the tileset
///and set animationLayer to the layer where the animated tiles are
/*
animLength = how many frames
animTime = interval before change
animID[#] = background frame (Note # goes up from 0 to animLength)
animateOnTransition = will stop animations during the transition
animationLayer = Layer animated tiles start at (your animated tiles should start on this layer)
Note: This only works for tiles on a 16x16 grid
see the example level for how to set this up.
*/
animLength = 2;
animTime = 6;
animateOnTransition = true;
animID[0] = tstBubbleman;
animID[1] = tstBubblemanAnimated1;
animationLayer=700;
timer = 0;
tileID = 0;
init=1;
begin step:
/// This generates tiles all across the levet
/// Note this causes lag at the start of the stage in larger levels
if(init)
{
print("Animating");
var tiles = tile_get_ids_at_depth(animationLayer);
var total = array_length_1d(tiles);
if(total<=0)
{
init=0;
instance_destroy();
exit;
}
for (var i = 0; i < total; i+=1)
{
var tile = tiles;
var bg=tile_get_background(tile);
var skip=false;
var k=0;
for(var j=0; j<animLength;j+=1;)
{
if(bg==animID[1])
{
skip=false;
k=j+1;
break;
}
}
if(skip)
continue;
if(k>=animLength)
{
k=0;
}
for(var j=1;j<animLength;j++)
{
tile_add(animID[k], tile_get_left(tile),
tile_get_top(tile), 16,
16, tile_get_x(tile), tile_get_y(tile),
animationLayer + j);
++k;
if(k>=animLength)
{
k=0;
}
}
}
for(var i =1;i<animLength;i++)
tile_layer_hide(animationLayer+i);
init=false;
exit;
}
if (global.frozen)
{
if (!global.switchingSections)
{
exit;
}
else if (!animateOnTransition)
{
exit;
}
}
if (timer < animTime)
{
timer += 1;
}
else
{
timer = 0;
if (tileID < animLength)
{
tile_layer_hide(animationLayer + tileID);
tileID += 1;
if(tileID==animLength)
tileID = 0;
tile_layer_show(animationLayer + tileID);
}
}
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: animated tileset
Nossa não entendi nada, onde você pegou esse código ?
E é realmente necessário utiliza-lo ? Sprites são BEM mais simples.
E é realmente necessário utiliza-lo ? Sprites são BEM mais simples.
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
Re: animated tileset
realmente são fácil mas esse código esta dando muito problema mesmo,peguei de um engine pronto,gostaria de saber se tem um modo mais fácil por favor.
Re: animated tileset
Seu computador roda o GMS2? Se sim, a forma mais fácil é usando ele.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
Re: animated tileset
O problema é que a versao que,eu estou é a 1.4,mudar para outra,o engine nao vai abrir
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: animated tileset
Não é o melhor método mas já que é um jogo do megaman
Crie um objeto,chame-o de controlador e adicione isso
No alarm do controlador adicione isso
Então crie o script Tiles_Animadas e coloque isso
Esse código pode ser aprimorado para ser automático mas eu to sem tempo :triste:
E no editor de sala você adiciona esses frames em sua respectiva camada.
Resultado:
Crie um objeto,chame-o de controlador e adicione isso
Código: Selecionar todos
Quadro = 1; //Quadro da animação.
QuadroMax = 4; //Quadro máximo da animação.
alarm[0] = 5; //Inicia o alarm
Código: Selecionar todos
if Quadro = QuadroMax { //Verifica se o quadro atual é igual a quantidade máxima de quadros
Quadro = 1 //Volta ao 1 se for
}else{
Quadro += 1 /Adiciona 1 se não for
}
alarm[0] = 5; //Inicia o alarm novamente
Tiles_Animadas(Quadro,QuadroMax) //Manda as variaveis pro script
Esse código pode ser aprimorado para ser automático mas eu to sem tempo :triste:
Código: Selecionar todos
switch(Quadro){
case 1:
tile_layer_show(1);
tile_layer_hide(2);
tile_layer_hide(3);
tile_layer_hide(4);
break;
case 2:
tile_layer_show(2);
tile_layer_hide(1);
tile_layer_hide(3);
tile_layer_hide(4);
break;
case 3:
tile_layer_show(3);
tile_layer_hide(1);
tile_layer_hide(2);
tile_layer_hide(4);
break;
case 4:
tile_layer_show(4);
tile_layer_hide(1);
tile_layer_hide(2);
tile_layer_hide(3);
break;
}
Resultado:
- megaman rx
- Membro
- Reações: 0
- Mensagens: 24
Re: animated tileset
muito obrigado de coração pela sua ajuda,vou fazer aqui e depois colocar,o resultado.
obrigado pela atenção.
obrigado pela atenção.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes