seleção de sprites

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

seleção de sprites

Mensagem por reddragon em Qui 20 Out 2011, 17:13

estou tentando montar um sistema de troca de sprite para um jogo isométrico o nome de meus sprites são os seguinte:

sprites parado:
  • spr_teste_p_costa
  • spr_teste_p_frente
  • spr_teste_p_lado
  • spr_teste_p_d_cima
  • spr_teste_p_d_baixo


sprites andando
  • spr_teste_a_costa
  • spr_teste_a_frente
  • spr_teste_a_lado
  • spr_teste_a_d_cima
  • spr_teste_a_d_baixo


OBS: p de parado, a de andando, d de diagonal.

criei essas variáveis para me auxiliar:
Código:
mouse_destinio_x = x    //garda o destino em x
mouse_destinio_y = y    //garda o destino em y
velocidade = 5
imagem_direcao = 0      //quarda qual direção o player esat andando
imagem_nome = "teste"  //nome da imagem
imagem_index = ""      //nome da imagem montada
andando = "_p"          //garda se estou andando ou parado

e código que fiz foi o seguinte:

Código:
if mouse_check_button(1){
    mouse_destinio_x = mouse_x
    mouse_destinio_y = mouse_y
}

if point_distance(x,y,mouse_destinio_x,mouse_destinio_y) > velocidade{
    andando = "_a"
    move_contact_solid(point_direction(x,y,mouse_destinio_x,mouse_destinio_y),velocidade);
    imagem_direcao = floor((point_direction(x,y,mouse_destinio_x,mouse_destinio_y) + 22.5) / 45)
}else{
    x = mouse_destinio_x
    y = mouse_destinio_y
    andando = "_p"
}

switch (imagem_direcao)
{
    case 0:case 8:  imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_lado")      image_xscale = -1  break;
    case 1:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_cima")      image_xscale = -1  break;
    case 2:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_costa")      image_xscale =  1  break;
    case 3:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_d_cima")    image_xscale =  1  break;
    case 4:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_lado")      image_xscale =  1  break;
    case 5:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_d_baixo")    image_xscale =  1  break;
    case 6:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_frente")    image_xscale =  1  break;
    case 7:        imagem_index = ("spr_" + string(imagem_nome) + string(andando) + "_d_baixo")    image_xscale = -1  break;
}

sprite_index = imagem_index

eu ando utilizando o mouse e com a divisão do angulo entre eu e o destino eu chego a imagem que o player tem de ter entretanto me parece que a variável sprite_index não aceita uma string como resultado.

já tentei usa comandos como o sprite_get_number, sprite_get_name mas não obtive sucesso.

a quem souber resolver meu problema agradeço antecipadamente.

reddragon

Número de Mensagens : 267
Idade : 27
Data de inscrição : 19/03/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por Pit Bull em Qui 20 Out 2011, 17:21

cria condições:
exemplo:

if ("spr_" + string(imagem_nome) + string(andando) + "_cima")==string(spr_spr_teste_p_frente) {
image_index=2
}else

dai você usa bastante o else,claro que o script ficará grande, então e só criar um script para diminui-lo.

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por reddragon em Qui 20 Out 2011, 18:07

;) value Pit Bull entretanto eu tive todo esse trabalho na intenção de poder trocar a sprite só mudando a varial imagem_nome

reddragon

Número de Mensagens : 267
Idade : 27
Data de inscrição : 19/03/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por PedroX em Qui 20 Out 2011, 18:42

Coloca assim:

Código:
execute_string("sprite_index="+"imagem_index")

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por reddragon em Qui 20 Out 2011, 18:49

eu colocaria assim:

execute_string("sprite_index="+ string(imagem_index))

mais execute_string eu usaria como ultima opção porque é um comando muito lento

reddragon

Número de Mensagens : 267
Idade : 27
Data de inscrição : 19/03/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por Luiz A. Oliveira em Qui 20 Out 2011, 19:10

Seria melhor usar o direction, mesmo num jogo isométrico e mesmo com movimentação no mouse. Procure ter uma ideia de como sair o direction de acordo com o angulo da imagem. Tipo:
Código:
switch(direction)
{
case 45:
case 135:
case 225:
case 315
}
Não sei se esses são os angulos certos de um jogo isométrico.

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por PedroX em Qui 20 Out 2011, 19:55

Ou você pode colocar numa array.
Ou até num ds_map, que é rápido e prático.
E para você não precisar digitar tudo, você pode fazer assim:
Código:
sprites=ds_map_create()
for(i=0;i<=numero de sprites;i+=1){
ds_map_add(sprites,sprite_get_name(i),i)
}

Assim ele irá mapear o nome da sprite com a index dela.
É claro que a primeira id no exemplo seria 0. Você tem que adaptar o loop.

Depois você pode tentar:

Código:
sprite_index=ds_map_find_value("string que você formou")

Obs: Use o loop se quiser facilitar.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: seleção de sprites

Mensagem por Conteúdo patrocinado Hoje à(s) 06:11


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