como fazer um rastro deste tipo?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Sab 21 Set 2013, 08:28

 pelo  q notei e q o rastro acompanha a imagem frame a frame tipo como se a imagem repetice  nao sei explicar sei q nem tem alpha ali todos tuto de rastro q vi  nao parecem com este rastro





eu queria fazer um rastro deste tipo desse gif eu tenho um codigo de rastro aqui mas por mais q eu ajuste nao fica parecido

aqui o codigo

no draw do obj_rastro

Código:
if image_alpha>0 {image_alpha-=0.1} else {instance_destroy()}
assim é como o rastro fica


Última edição por reinaldoferreira em Sab 21 Set 2013, 08:35, editado 1 vez(es) (Razão : modificaçoes necessarias para ajudar ao entendimento)

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por JoaoVanBlizzard em Sab 21 Set 2013, 09:54

tente adiconar essa função no event create:
Código:

image_blend=make_color_rgb(30,30,200)
os valores eu coloquei experimental, irá ficar azulado, mas se você quer trocar tal valores o make_color_rgb finciona assim:
o primeiro valor deixa mais vermelho .
o segundo valor deixa mais verde.
o terceiro valor deixa mais azul.

eu pessoalmente recomendaria que você criasse uma sprite alterada para exibir tal coloração que ficaria mais dinâmico, mas acredito que da forma que fiz em personagens claros como o ryu não terá problemas.


Edit: Se você está usando o evento Draw use esse codigo para execultar os eventos:
Código:


draw_sprite_ext
(
sprite_index,
image_index,
x,
y,
image_xscale,
image_xscale,
image_angle,
image_blend,
image_alpha
)
eu ja fiz jogos que usa tais sombras, mas não usava evento draw, mas se no seu jogo precisa, acredito que um dos melhores modos é esse ok.

espero ter ajudado, duvidas, só perguntar ok.




Última edição por JoaoVanBlizzard em Sab 21 Set 2013, 10:04, editado 1 vez(es) (Razão : adicionar algo mais)

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Sab 21 Set 2013, 10:23

a unica coisa q mudou foi a cor eu quero o estilo daquelas trilhas basicamente se eu tiver um sprite de um cara dando um salto pra frente eu quero q outro azul dê o mesmo salto depois de um tempo q o primeiro salto foi executado ai ele se destruiria quando chegase no ponto q o primeiro salto terminou esse codigo q vc me deu nao fez nada so mudou a cor do rastro pra azul ainda continua nem um pouco parecido com o rastro do gif '-'

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por JoaoVanBlizzard em Sab 21 Set 2013, 10:50

eu entendi o que você quis dizer agora, mas é um pouco complicado explicar na teoria como funciona, voce teria que fazer um script para registrar a primeira ação do ryu, e colocar um alarme para que quando esse tempo acabasse ele gerasse a sombra com o mesmo valor da imagem que o ryu ta gerando , porem a sprite da sombra deve ser mais rapida que a do ryu e quando tivessem o mesmo valor ela se destruisse, outra coisa que notei é que quando o ryu finaliza seu golpe as sombras se destroem entes de retornarem a ele, você poderia simplesmente gerar a sombra iniciando com o mesmo valor do ryu, só que ao invez de ser mais rapida, deixe- a mais lenta que o ryu, tente um codigo assim:

coloque esse código no evento step
Código:

//aqui cria sombra do ryu
if(!place_meeting(x,y,obj_sombra_do_ryu))
{ID=instance_create(x,y,obj_sombra_do_ryu)}
with ID {image_index=ryu.image_index }
no evento create da sombra crie um alarme para ela se destruir com o tempo, com esse código a sombra começará sempre com a masma animação que o ryu está execultando no momento e termina assim que o tempo do alarm terminar, tenta e ve se deu certo ok

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por cascavelo em Sab 21 Set 2013, 12:40

A maneira mais fácil de fazer é usando o sistema de partículas, deixando que o próprio sistema controle tudo.
O sprite_index seria usado como partícula e o emiter seria negativo para gerar uma partícula e pular uns steps antes de gerar outra é bem simples e usando o particle designer ele já faz todos os cálculos é só copiar para o create do objeto.

cascavelo

Ranking : Nota A
Número de Mensagens : 1011
Idade : 46
Data de inscrição : 08/12/2011
Notas recebidas : A - A - A - A - A -A -C
Reputação : 71
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 1

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Sab 21 Set 2013, 19:26

e como seria da um exemplo ai eu sou novato ainda em gm


eu queria fazer  o seguinte pegar a imagem do movimento e colocar na tela um tempinho depois da primeira ser executada depois fazer isso com o tempo da copia e colocar outra mais atrasada q a copia depois fazer mais duas vez para ficar 3 copias pela imagem gif sao 3 copias do sprite original q se repete alguem poderia ter uma ideia ai e fazer um exemplo:roll: Rolling Eyes

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por fredcobain em Dom 22 Set 2013, 10:09

Faz assim:

Crie um obj_sombra.
No create, coloque esse código:
Código:
Create Event:
image_speed=0
sprite_index=Ryu.sprite_index //obviamente estou supondo que o nome do objeto principal se chama Ryu... se não for, substitua.
image_index=Ryu.image_index
image_blend=c_blue;
Step Event:
Código:
image_alpha-=0.1
if (image_alpha<=0){instance_destroy()}
Agora no STEP EVENT do RYU, coloque esse código:
Código:
instance_create(x,y,obj_sombra)
Isso deve resolver

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Dom 22 Set 2013, 11:24

nao vai funcionar por q tou usando maquina de estados ! e na  sombra nao tem alpha  eu to quase elaborando uma tecnica boa pra fazer isso mas to com problemas eu quero criar um obj_vazio  toda vez q eu for fazer um golpe de sombra eu crio uma instancia do objeto vazio  e mando  um sprite la pra dentro com o tempo do golpe depois deleto isso vai polpar ficar fazendo objetos
mas eu so sei por inquanto e criar o sprite dentro do objeto vazio

Código:
rastro=instance_create(74,440,obj_rastro1)//cria um objeto e armazena a identidade dela na variavel "rastro"
rastro.sprite_index = spr_chute1
 agora oq eu tenho q fazer é controlar a velocidade la dentro , e controlar o tempo q o  objeto vazio vai ser destruido  vou criar nao sei fazer isso

pronto ficaria assim  ficar assim
em teoria haha


reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por SIGILOSO em Dom 22 Set 2013, 13:51

Eu usava bastante esse efeito.
Primeiro você precisaria de um objeto a parte, o objeto que será a "sombra".
No CREATE dele você precisa fazer com que ele "imite" a condição do player, ou seja, que ele fique igual a ele. Algo mais ou menos assim:
Código:
sprite_index=player.sprite_index
image_index=player.image_index
image_xscale=player.image_xscale
image_speed=0
Lembrando que você deve substituir o "player" pelo nome do objeto do jogador! Ele terá a mesma sprite e estará com o mesmo frame de quando o player estava quando a sombra apareceu. Mas ó! Se liga nesse image_speed=0. É importante se não a sombra continuará animada, o que não faz sentido.

Agora, pra fazer a sombra sumir você pode fazer com que ela vá desaparecendo, ou permaneça opaca alguns segundos e suma. Se for sumindo, use isto no STEP:
Código:
image_alpha-=0.02 if image_alpha<0 instance_destroy()
Ela irá desaparecendo até sumir de vez. Ou, pode pôr no CREATE algo como:
Código:
timer=20
E no STEP:
Código:
timer-=1 if timer<0 instance_destroy
Se quiser que a sombra seja colorida, como as gifs, você terá que usar o DRAW, mais ou menos isso:
Código:
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,c_blue,image_alpha)
(Não consultei o GM, se estiver errado corrige!)
Aí se quiser uma cor diferente, só trocar ali no c_blue. Pra fazer o jogador criar a sombra é mole. Parecido com o que eu botei antes, no CREATE do player:
[/b]
Código:
timer=3
Agora no STEP:
Código:
timer-=1 if timer<0{instance_create(x,y,sombra_obj)timer=3}
Pronto, ele vai ficar criando sombras e estas, sumindo gradativamente, sem pesar o game. Pode mudar a velocidade com que elas aparecem, e só deixar elas aparecerem no momento certo.

Em tese, acho que é isso. Foi de cabeça.
afro[/b]

SIGILOSO

Ranking : Nota A
Número de Mensagens : 2264
Idade : 23
Data de inscrição : 06/06/2009
Notas recebidas : A+A+A+A+A+A+A
Reputação : 39
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 4
   : 2
   : 1

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Dom 22 Set 2013, 15:50

'-' muito complicado
eu to elaborando um jeito mais facil
Código:
rastro=instance_create(74,440,obj_rastro1)//cria um objeto e armazena a identidade dela na variavel "rastro"
rastro.sprite_index = spr_chute1
rastro.image_speed=0.23
// aqui tenho q por um codigo para deletar nao sei ainda alguem pode dar uma força ai

so ta faltando um geito de deletar o objeto quando acabar a animaçao e tambem quero fazer o rastro aparecer uma distancia atras do objeto do meu personagem ele so ta aparecendo num lugar especifico da tela  (74,440,  sei q sao esses numeros os responsaveis preciso saber como fazer ele aparecer numa posiçao relativa ao  objeto do personagem


Última edição por reinaldoferreira em Seg 23 Set 2013, 04:52, editado 1 vez(es)

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por fredcobain em Dom 22 Set 2013, 19:17

Vc tá indo por um caminho muito complicado. Veja que o meu método e o do sigi são idênticos. O fato de vc estar usando máquina de estados finitos não é desculpa.

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Seg 23 Set 2013, 00:52

mas os metodos seus nao vo conseguir o mesmo resultado'-' vai sair nada ver eu quero igual , nao parecido silent os detalhes q contam

pra mim este metodo q falei e mais facil apenas um codigo dentro do estado do golpe. isso é mais complicado? a unica coisa q nao sei e deleta o objeto criado ainda to pesquisando


Código:
rastro=instance_create(74,440,obj_rastro1)//cria um objeto e armazena a identidade dela na variavel "rastro"
rastro.sprite_index = spr_chute1
rastro.image_speed=0.23
// aqui tenho q por um codigo para deletar nao sei ainda alguem pode dar uma força ai

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por fredcobain em Seg 23 Set 2013, 08:03

Quem disse q esse vai ficar mais parecido nos detalhes? Vc já experimentou os outros na prática?

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Seg 23 Set 2013, 08:12

olha o tanto de codigo q teria de usar com os outros modos com esse modo q to falando se eu fosse fazer um jogo de luta 3 objetos daria para todos os personagens so presiso saber como deletar essa parte que falei ...... na pratica o modo deles é um azul so. eu quero como no gif tres tons de azul diferentes seguindo

rastro=instance_create(74,440,obj_rastro1)//cria um objeto e armazena a identidade dela na variavel "rastro"
rastro.sprite_index = spr_chute1
rastro.image_speed=0.23
// aqui tenho q por um codigo para deletar nao sei ainda alguem pode dar uma força ai


reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por fredcobain em Seg 23 Set 2013, 08:17

Se o seu problema é só deletar o rastro depois de algum tempo, coloque um alarme no create:
ex:alarm[0] = 20n

e no evento alarm0, coloque :
instance_destroy() ;


fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Seg 23 Set 2013, 08:34

isso nao daria certo por q eu vo usar o mesmo objeto depois para outro golpe com outro tempo tenho q deletar ele fora dele

rastro=instance_create(74,440,obj_rastro1)//cria um objeto e armazena a identidade dela na variavel "rastro"
rastro.sprite_index = spr_chute1
rastro.image_speed=0.23
// aqui tenho q por um codigo para deletar nao sei ainda alguem pode dar uma força ai

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por fredcobain em Seg 23 Set 2013, 09:06

então, em vez de instance_destroy(), coloca visible=false;

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por GameMakerTutoriais em Seg 23 Set 2013, 11:20


No evento Create, coloque:

Código:

ghost := 10; // Tamanho do rastro
disappear = 0.1; // Qual será o alpha do último desenho da fila


_r := 0;
ghost := max(1, ghost);
for (_r := 0; _r < ghost; _r += 1)
begin
    // Armazena os estados de cada um
    shadow[_r, 0] := sprite_index;
    shadow[_r, 1] := image_index;
    shadow[_r, 2] := x;
    shadow[_r, 3] := y;
    shadow[_r, 4] := image_xscale;
    shadow[_r, 5] := image_yscale;
    shadow[_r, 6] := image_angle;
    shadow[_r, 7] := image_blend;
    shadow[_r, 8] := image_alpha;
end;

No evento End Step, coloque:
Código:

// Atualiza as coordenadas e desenhos
for (_r := 0; _r < ghost - 1; _r += 1)
begin
    shadow[_r, 0] := shadow[_r + 1, 0];
    shadow[_r, 1] := shadow[_r + 1, 1];
    shadow[_r, 2] := shadow[_r + 1, 2];
    shadow[_r, 3] := shadow[_r + 1, 3];
    shadow[_r, 4] := shadow[_r + 1, 4];
    shadow[_r, 5] := shadow[_r + 1, 5];
    shadow[_r, 6] := shadow[_r + 1, 6];
    shadow[_r, 7] := shadow[_r + 1, 7];
    shadow[_r, 8] := disappear + (max(0, image_alpha - disappear)/ghost) * _r;
end;
shadow[ghost - 1, 0] := sprite_index;
shadow[ghost - 1, 1] := image_index;
shadow[ghost - 1, 2] := x;
shadow[ghost - 1, 3] := y;
shadow[ghost - 1, 4] := image_xscale;
shadow[ghost - 1, 5] := image_yscale;
shadow[ghost - 1, 6] := image_angle;
shadow[ghost - 1, 7] := image_blend;
shadow[ghost - 1, 8] := image_alpha;
No evento Draw, coloque:
Código:

// Desenha a sombra
for (_r := 0; _r < ghost; _r += 1) draw_sprite_ext(shadow[_r, 0],shadow[_r, 1],shadow[_r, 2],shadow[_r, 3],shadow[_r, 4],shadow[_r, 5],shadow[_r, 6],shadow[_r, 7],shadow[_r, 8]);

// Desenha o sprite
draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
Eu não testei, mas tenho certeza que vai funcionar. Eu faria assim porque evitaria pôr objetos desnecessários na tela.

Grande abraço.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por reinaldoferreira em Seg 23 Set 2013, 12:36

cara  eu quero deletar o rastro pelo lado de fora do objeto sem colocar alarme repare este codigo ele cria um objeto >> no meu objeto sem nada dentro codigo nenhum dentro se eu colocar um alarme la vai deletar em um tempo so depois como eu ultilizo denovo em outro golpe de codigo denovo -_-

Código:
rastro=instance_create(74,440,obj_rastro1)//cria um objeto e armazena a identidade dela na variavel "rastro"
rastro.sprite_index = spr_chute1
rastro.image_speed=0.23
euu quero deleta  oq ta na variavel rastro o objeto criado la '-'



rastro.delete??? como destroy sem colocar nada dentro -_-
ai eu vou colocar if rastro.sprite_index=4 rastro.delete <<< supondo q fosse assim q deleta o objeto dentro da variavel

reinaldoferreira

Número de Mensagens : 65
Data de inscrição : 03/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por Gutorrock em Qui 22 Maio 2014, 10:05

kra basta criar a sprite no photoshop assim! '-'

P.S. eu sei que desenterrei um tópico um pouco velho, peço desculpas por quebrar as regras do forum, mas eu percebi que reinaldoferreira não falou nada por ultimo

Gutorrock

Número de Mensagens : 28
Data de inscrição : 15/02/2014
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por Gabreel em Qui 22 Maio 2014, 10:13

Tópico fechado.

Guto, alertado em 10%, o cara saiu do fórum pô.

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: como fazer um rastro deste tipo?

Mensagem por Conteúdo patrocinado Hoje à(s) 08:45


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum