Conectar-se
Quem está conectado
33 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 33 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 02/03/2014
Número de Mensagens : 63
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

[Ajuda] Problema em criar pista estilo SimCity

em Sex 24 Jul 2015, 04:45
Olá pessoal , gostaria de uma ajudinha nesse problema ,está dando um erro.
a imagem abaixo é uma strip de 12 imagens




e estou ultilizando esse codigo pra poder modificar as imagens de acordo com a posiçao que ela for colocada na room

Código:
if place_meeting(x+1,y,obj_Pista) // horizontal direita
{
    image_index = 0
    image_speed = 0
}
if place_meeting(x-1,y,obj_Pista) // horizontal esquerda
{
    image_index = 0
    image_speed = 0
}
if place_meeting(x,y+1,obj_Pista) // vertical baixo
{
    image_index = 1
    image_speed = 0
}
if place_meeting(x,y-1,obj_Pista) // vertical cima
{
    image_index = 1
    image_speed = 0
}
if place_meeting(x-1,y,obj_Pista) && place_meeting(x,y+1,obj_Pista) // esquerda,baixo
{
    image_index = 2
    image_speed = 0
}
if place_meeting(x-1,y,obj_Pista) && place_meeting(x,y-1,obj_Pista) // esquerda,cima
{
    image_index = 3
    image_speed = 0
}
if place_meeting(x+1,y,obj_Pista) && place_meeting(x,y+1,obj_Pista) // direita,baixo
{
    image_index = 4
    image_speed = 0
}
if place_meeting(x+1,y,obj_Pista) && place_meeting(x,y-1,obj_Pista)// direita,cima
{
    image_index = 5
    image_speed = 0
}
if place_meeting(x-1,y,obj_Pista) && place_meeting(x-1,y,obj_Pista) && place_meeting(x,y+1,obj_Pista) //esquerda,direita,baixo
{
    image_index = 6
    image_speed = 0
}
if place_meeting(x-1,y,obj_Pista) && place_meeting(x-1,y,obj_Pista) && place_meeting(x,y-1,obj_Pista) // esquerda, direita, cima
{
    image_index = 7
    image_speed = 0
}
if place_meeting(x,y-1,obj_Pista) && place_meeting(x,y+1,obj_Pista) && place_meeting(x+1,y,obj_Pista) //cima,baixo,direita
{
    image_index = 8
    image_speed = 0
}
if place_meeting(x-1,y,obj_Pista) && place_meeting(x+1,y,obj_Pista) && place_meeting(x,y-1,obj_Pista)//cima,baixo,esquerda
{
    image_index = 9
    image_speed = 0
}

if place_meeting(x-1,y,obj_Pista) && place_meeting(x,y-1,obj_Pista) && place_meeting(x+1,y,obj_Pista) && place_meeting(x,y+1,obj_Pista)//todas as direcoes

{
    image_index = 10
    image_speed = 0
}

o problema é que a prioridade de algumas condicoes está passando por cima de outras , tipo se eu quero uma curva da direita pra esquerda a imagem desenhada é a como se eu tivesse colocado direita,esquerda,cima por exemplo, o teste de 3 condicoes esta passando a frente do teste de 2 condicoes.

agradeco a ajuda.
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Problema em criar pista estilo SimCity

em Sex 24 Jul 2015, 07:21
Reputação da mensagem: 100% (1 votos)
Primeiro, tá certo ser x+1? Não deveria ser ao invés de 1 o tamanho da imagem? Não sou de usar place_meeting e posso estar equivocado, de qualquer forma... Eu uso collision_point().

Segundo, pra me facilitar nesses scripts, eu costumo criar vars locais ali antes de checar, assim:

Código:
var R,L,U,D;
R=place_meeting(x+1,y,obj_Pista)
L=place_meeting(x-1,y,obj_Pista)
U=place_meeting(x,y-1,obj_Pista)
D=place_meeting(x,y+1,obj_Pista)

Na hora de checar fica muito mais fácil, sendo assim:

Código:
if R && L && U//se tiver outro na esquerda, direita, e baixo
{
     //rá
}

Terceiro, se tu quer priorizar uma certa condição (se ela acontecer, outra será descartada) use else-if. Aí tu organiza por ordem de prioridade as condições, começando com as que checam mais (ou seja, a que checa os 4 lados, depois as que 3 e por aí vai...):


Código:
if R && L && U && D//se tiver outro em todos os lados (4 lados)
{
     //rá
}
else if R && L && U//se tiver outro na esquerda, direita, e cima (3 lados)
{
     //rá
}
else if R && L && D//se tiver outro na esquerda, direita, e baixo (3 lados)
{
     //rá
}

//e vai...
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 24/04/2013
Número de Mensagens : 354
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 40

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Problema em criar pista estilo SimCity

em Sex 24 Jul 2015, 13:07
Reputação da mensagem: 100% (1 votos)
mude de "+1" para metade do tamanho da sprite,por exemplo,se a sprite for 32x32 ponha "+16"

eu fiz um sistema identico ao seu rapidinho aqui,e isso funcionou


avatar
Data de inscrição : 02/03/2014
Número de Mensagens : 63
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Problema em criar pista estilo SimCity

em Sab 25 Jul 2015, 01:13
Goncalves obrigado nao incluir o collision_point , deixei o place_meeting ,esse metodo de criar as variaveis e atribuir a funcao facilita muito , nos meus proximos scripts vou sempre usar dessa forma usei o else if e ficou lindo e
Lightspeed inclui esse raciocinio de colocar a metade do tamanho da sprite e fucionou , está perfeito

obrigado!
Joinha pros 2
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum