Pulo "travado"

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

Pulo "travado"

Mensagem por Fredo em Ter 13 Jul 2010, 15:04

Primeiramente, Olá. Sou novo no forum e no GM.

Minha duvida é sobre o pulo. Eu não sei como fazer um pulo travado (como os jogos antigos eram). Consiste em pular sem poder alterar a trajetória do pulo, ou seja, o pulo já tem a altura e trajetória programada não sendo possivel alterar durante o pulo. Claro que sem por uma direção o personagem pula apenas pra cima.

Alguém sabe?
(procurei antes de postar se já tiver o post sobre isso por favor esfreguem em minha cara)

Fredo

Número de Mensagens : 5
Data de inscrição : 13/07/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Janx em Ter 13 Jul 2010, 16:55

Movido.

Hmm, suponho que para o movimento, você está usando o hspeed/vspeed certo?

Nesse caso, a idéia seria a seguinte:
create:
Código:
pulando = false;

Faça todo o código de movimento horizontal que você tem ai, só executar SE pulando for FALSE!
Assim:

Código:
if !pulando
{
 //movimento HORIZONTAL
}

No código de pular, você adiciona
Código:
pulando = true;
hspeed = sign(hspeed)*6; //6 = força do pulo HORIZONTAL
vspeed = -6; //Força do pulo VERTICAL

E no código de quando ele cai no chão, adiciona o seguinte:
Código:
pulando = false;

Acredito que funcione!

Janx

Número de Mensagens : 2417
Idade : 23
Data de inscrição : 24/05/2008
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Fredo em Qua 14 Jul 2010, 10:50

Janx escreveu:Movido.
Hmm, suponho que para o movimento, você está usando o hspeed/vspeed certo?

Não sei o porque de você ter suposto isso. Eu estou usando o movimento do char da forma mais primitiva possivel, pois não sei outra forma:

Código:
if keyboard_check(vk_right)
{
    if place_free(x+3,y){x+=3}
    sprite_index=spr_brutos_walk_right
}

if keyboard_check_released (vk_right) and sprite_index=spr_brutos_walk_right
sprite_index=spr_brutos_stand_right

if keyboard_check(vk_left)
{
    if place_free(x-3,y){x-=3}
    sprite_index=spr_brutos_walk_left
}

if keyboard_check_released (vk_left) and sprite_index=spr_brutos_walk_left
sprite_index=spr_brutos_stand_left

Não estou usando H/Vspeed, por esse motivo seu codigo não funfou silent

Fredo

Número de Mensagens : 5
Data de inscrição : 13/07/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Igor KinGamer em Qua 14 Jul 2010, 11:16

Primeiramente, bem-vindo ao fórum Smile
---
Então, dá para fazer mais ou menos do jeito que o Janx falou, mas, em vez de usar o hspeed, testar se a variável pulando é true, e se for, mover o personagem do jeito que você está fazendo (x += 3).

Assim:

Create:
pulando = false;
movendo = false; // Variável para saber se a criatura está pulando para o lado ou em linha reta para cima


Creio que esse seu código está no step:
if (!pulando) // O mesmo que "pulando == false"
{
if keyboard_check(vk_right)
{
if place_free(x+3,y){x+=3}
sprite_index=spr_brutos_walk_right
}

if keyboard_check_released (vk_right) and sprite_index=spr_brutos_walk_right
sprite_index=spr_brutos_stand_right

if keyboard_check(vk_left)
{
if place_free(x-3,y){x-=3}
sprite_index=spr_brutos_walk_left
}

if keyboard_check_released (vk_left) and sprite_index=spr_brutos_walk_left
sprite_index=spr_brutos_stand_left
}
else // Caso estiver pulando
{
if (movendo) // Se estiver se movendo
if (/* teste aqui se está virado para a direita */) // Se estiver pulando para a direita
x += 3;
else // Se estiver pulando para a esquerda
x -= 3;
}


No evento em que faz ele pular:
// Código para pular (Não sei qual você está usando, se é que já fez algum)
pulando = true;
if (keyboard_check(vk_right) || keyboard_check(vk_left)) // Se estiver segurando tecla direita ou esquerda
movendo = true;


E, no evento em que o personagem cai no chão:
pulando = false;

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Fredo em Qua 14 Jul 2010, 12:20

Bem, eu fiz tudo aí, a unica coisa que meu personagem fez foi andar pra frente de moonwalk (deslizando)
se quizer eu ponho meu projeto pra download pra ficar mais facil de visualizar


Fredo

Número de Mensagens : 5
Data de inscrição : 13/07/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Igor KinGamer em Qua 14 Jul 2010, 15:13

Você programou o pulo dele? Nesses códigos que postei, eu coloquei:

Igor KinGamer escreveu:No evento em que faz ele pular:
// Código para pular (Não sei qual você está usando, se é que já fez algum)
pulando = true;
if (keyboard_check(vk_right) || keyboard_check(vk_left)) // Se estiver segurando tecla direita ou esquerda
movendo = true;

Ali, na parte "// Código para pular (Não sei qual você está usando, se é que já fez algum)" é onde tem que ir o código para ele pular, se você não fez nenhum é claro que ele não vai pular u.u

Se você realmente não o fez, procure algum tutorial de plataforma aqui no fórum para saber como fazer.
Mas, se você já fez e não está funcionando, então poste o seu projeto aqui.

PS.: Eu arrumei algumas coisas no código que postei antes:
Step:
if (!pulando)
{
if keyboard_check(vk_right)
{
if place_free(x+3,y){x+=3}
sprite_index=spr_brutos_walk_right
}

if keyboard_check_released (vk_right) and sprite_index=spr_brutos_walk_right
sprite_index=spr_brutos_stand_right

if keyboard_check(vk_left)
{
if place_free(x-3,y){x-=3}
sprite_index=spr_brutos_walk_left
}

if keyboard_check_released (vk_left) and sprite_index=spr_brutos_walk_left
sprite_index=spr_brutos_stand_left
}
else // Caso estiver pulando
{
if (movendo) // Se estiver se movendo
if (/* teste aqui se está virado para a direita */) // Se estiver pulando para a direita
{
if place_free(x+3,y)
x += 3;
}
else // Se estiver pulando para a esquerda
{
if place_free(x-3,y)
x -= 3;
}
}
if keyboard_check_released(vk_right) || keyboard_check_released(vk_left)
movendo = false;

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Fredo em Qui 15 Jul 2010, 00:50

eu tentei pro h/vspeed:

Código:
if (keyboard_check_pressed(ord('Z'))) and pulando = false
{if!place_free(x,y+2)
{vspeed=-20}
if sprite_index=spr_brutos_walk_right
hspeed=2
if sprite_index=spr_brutos_walk_left
hspeed=-2
if sprite_index=spr_brutos_stand_right or sprite_index=spr_brutos_stand_left
{vspeed=-20}
}
if (keyboard_check(vk_right) || keyboard_check(vk_left)) // Se estiver segurando tecla direita ou esquerda
{movendo = true;
}

mas mesmo assim o pulo não ficou travado, dá pra mudar a pequena trajetória e a velocidade do pulo ficou muito acelerada.

eu queria que ele executasse o pulo de forma mais lenta e travada :|

e por alguma razão ele fica travado na parte horizontal dos blocos.

Fredo

Número de Mensagens : 5
Data de inscrição : 13/07/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Janx em Qui 15 Jul 2010, 01:07

Trava pois você não checa se tem obstaculo na frente antes de mover!

Código:
if (keyboard_check_pressed(ord('Z'))) and pulando = false
{if!place_free(x,y+2)
{vspeed = -20}

if sprite_index=spr_brutos_walk_right && place_free(x+2,y)
{hspeed = 2}
else if sprite_index=spr_brutos_walk_left && place_free(x-2,y)
{hspeed = -2}
else{hspeed = 0;} //Parar se tiver obstaculo

if sprite_index=spr_brutos_stand_right or sprite_index=spr_brutos_stand_left
{vspeed=-20}
}

if (keyboard_check(vk_right) || keyboard_check(vk_left)) // Se estiver segurando tecla direita ou esquerda
{movendo = true;}

Para deixar o pulo mais suave, tente diminuir a força da gravidade!
Quanto você usa?
Tente usar
gravity = 0.3;
E velocidade vertical do pulo -7. (-20 vai ser um pulo gigante..)

Janx

Número de Mensagens : 2417
Idade : 23
Data de inscrição : 24/05/2008
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Fredo em Qui 15 Jul 2010, 12:42

Sim de fato o pulo ficou suave. Porém continua um pulo livre (sem a trajetória travada) e continua travando na parede

Fredo

Número de Mensagens : 5
Data de inscrição : 13/07/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pulo "travado"

Mensagem por Conteúdo patrocinado Hoje à(s) 13:48


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