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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 09/01/2013
Número de Mensagens : 23
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Problema com Sprite

em Qua 06 Fev 2013, 21:52
E ai galera

Tentem visualizar:

O jogador esta socando com a tecla "Z" e o sprite dele muda para o player_atacando
So que enquanto eu estou atacando se aperto alguma das teclas de movimento dele, por uma fração de nem um segundo o sprite muda para o player_andando e vota a ser o player_atacando, ele não se move nem nada.

Queria saber se tem alguma solução para que quando ele estivesse atacando, não acontece-se nada se apertasse os botões de movimento e o sprite continuasse de soco.
Tentei com duas Variaveis, mas não consegui.


Obrigado
avatar
Data de inscrição : 09/07/2011
Número de Mensagens : 646
Insígnias de JAM :

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

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

Re: Problema com Sprite

em Qua 06 Fev 2013, 22:07
Você precisa deixar bem claro na sua programação que você quer que seja tal sprite quando pressionar tal tecla.
Existe um conflito no seu código amigo e nesse caso é meio difícil ajudar sem ver.
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Problema com Sprite

em Qua 06 Fev 2013, 22:18
Você pode criar um "tempo" para cada comando. Quando socar por exemplo, voce ativa uma variável "socando = true" e ativa um timer "alarm[0]=xxxx" que volta "socando = false". Pronto, agora basta você colocar um "and" nos IF´s das outras teclas assim "Se o player apertar "Left" E "socando == false" ele muda senao nao faz nada... Não vou criar o codigo todo pra você porque ajuda você aprender, mas a idéia seria esta.
Flws!
avatar
Data de inscrição : 09/01/2013
Número de Mensagens : 23
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Problema com Sprite

em Qua 06 Fev 2013, 22:22
@Super Maker escreveu:Você precisa deixar bem claro na sua programação que você quer que seja tal sprite quando pressionar tal tecla.
Existe um conflito no seu código amigo e nesse caso é meio difícil ajudar sem ver.


Spoiler:

if keyboard_check(vk_right) and walk = true {
punch = false
sprite_index = spr_scott_correr
image_speed = 0.5
image_xscale = 1
x+=5
}

if keyboard_check(vk_left) and walk = true {
punch = false
sprite_index = spr_scott_correr
image_speed = 0.5
image_xscale= -1
x-=5
}

if keyboard_check(vk_up) and walk = true {
sprite_index = spr_scott_correr
image_speed = 0.5
y-=5
punch = false

}

if keyboard_check(vk_down) and walk = true {
sprite_index = spr_scott_correr
if image_number = 4 { image_number = 0 }
image_speed = 0.5
y+=5
punch = false
}

if keyboard_check(ord("Z")) and punch = true{
walk = false
sprite_index = spr_scott_atack
image_speed = 0.5
}

if keyboard_check_released(vk_right) {
sprite_index = spr_scott
punch = true
}

if keyboard_check_released(vk_left) {
sprite_index = spr_scott
punch = true
}

if keyboard_check_released(vk_up) {
sprite_index = spr_scott
punch = true
}

if keyboard_check_released(vk_down) {
sprite_index = spr_scott
punch = true
}

if keyboard_check_released(ord("Z")) {
sprite_index = spr_scott
walk = true
}
avatar
Data de inscrição : 09/01/2013
Número de Mensagens : 23
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Problema com Sprite

em Qua 06 Fev 2013, 22:25
@vinians escreveu:Você pode criar um "tempo" para cada comando. Quando socar por exemplo, voce ativa uma variável "socando = true" e ativa um timer "alarm[0]=xxxx" que volta "socando = false". Pronto, agora basta você colocar um "and" nos IF´s das outras teclas assim "Se o player apertar "Left" E "socando == false" ele muda senao nao faz nada... Não vou criar o codigo todo pra você porque ajuda você aprender, mas a idéia seria esta.
Flws!

Cara qual a diferença de = pra == ?
Começei a pouco tempo, não faço ideia hauha

Queria um jeito sem Alarms Sad
O mesmo problema eu tenho quando eu aperto esquerda e direita ao mesmo tempo, ele fica parado


Última edição por Ripley em Qua 06 Fev 2013, 22:56, editado 1 vez(es)
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Problema com Sprite

em Qua 06 Fev 2013, 22:55
Amigo, primeiro cuidado com o "post duplo". O "==" é usado para "comparar igualdade" entre os operandos, já o "=" é usado para atribuir valores para variáveis, mas o GM parece aceitar o "=" no lugar do "==" também, isso é porque GML tem alguma coisa de raizes da linguagem C.
Flws!
avatar
Data de inscrição : 09/07/2011
Número de Mensagens : 646
Insígnias de JAM :

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

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

Re: Problema com Sprite

em Qua 06 Fev 2013, 22:58
ta vendo esses dois carinhas aqui? → walk = true punch = false
A culpa é deles...
Eles server pra indicar qual evento ta sendo executado no momento, ótimo pra evitar conflitos e você não ta sabendo usar eles. Você ta trocando as posições e as vezes colocando onde não precisa.
Esse operador "=" é de atribuições e esse de igualdade "==".
avatar
Ranking : Nota B
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Número de Mensagens : 1092
Insígnias de JAM :

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

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

Re: Problema com Sprite

em Qui 07 Fev 2013, 00:25
.Para não usar alarm você pode fazer assim

em create:
Código:
socando=false;
em step:
Código:
if(keyboard_check_pressed(ord('Z') and socando=false){
socando=room_speed;
}
socando=max(0,socando-1)

if(socando>0){
sprite_index=sprite_socando;
}
else
{
sprite_index=sprite_parado;
}
Conteúdo patrocinado

Re: Problema com Sprite

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