GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Servidor de Discord do fórum?
por Super Games Hoje à(s) 01:27

» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42


Pulo "travado"

3 participantes

Ir para baixo

Pulo "travado" Empty Pulo "travado"

Mensagem por Fredo 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
Fredo

Data de inscrição : 13/07/2010
Reputação : 0
Número de Mensagens : 5
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Janx 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
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Fredo 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
Fredo

Data de inscrição : 13/07/2010
Reputação : 0
Número de Mensagens : 5
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Igor KinGamer 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
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Fredo 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
Fredo

Data de inscrição : 13/07/2010
Reputação : 0
Número de Mensagens : 5
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Igor KinGamer 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
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Fredo 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
Fredo

Data de inscrição : 13/07/2010
Reputação : 0
Número de Mensagens : 5
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Janx 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
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Fredo 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
Fredo

Data de inscrição : 13/07/2010
Reputação : 0
Número de Mensagens : 5
Prêmios : Pulo "travado" Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Pulo "travado" Empty Re: Pulo "travado"

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos