Problemas em fazer um objeto pular

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

Problemas em fazer um objeto pular

Mensagem por FishyHatGuy em Ter 05 Jul 2011, 18:56

Eu estou implementando uma Engine de jogos de plataforma, e busquei vários tutoriais e exemplos de como fazer. Entretanto, ainda tenho um problema que não consigo solucionar. O objeto que teria de pular ao apertar 'z' pula sozinho.

Como pode-se obeservar no código a seguir:

Código:

// ================= Code for jumping and stuff ==================

// Gravity for the hero
if place_free(x,y+1){
    gravity=0.7;
}
else{
    gravity=0;
}

// Jump for the hero
if keyboard_check_pressed('z'){

    if jumpDetection == 0{
        jumpDetection = 1;
        vspeed = -10;
    }
   
    if dir_R == 1{
        sprite_index = HeroJumpRight;
    }
    else if dir_L == 1{
        sprite_index = HeroJumpLeft;
    }
   
}

Faço as verificações de gravidade, e crio condições para o pulo (Só no momento em que 'z' for pressionado e quando não for detectado pulo é que o objeto pulará. O pulo é verificado pela variável jumpDetection)

Alguem pode me ajudar com este problema? Já procurei dados dentro e fora do fórum e não obtive muito sucesso.
Agradeço desde já.

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por JV Justino em Ter 05 Jul 2011, 19:09

Quando se usa teclas de letras para fazer ações, deve se usar a função ord. Nesta função, você coloca a letra correspondente a tecla, em letra maiúscula e entre aspas ou apóstrofos.

No seu caso, o certo seria:
Código:
if keyboard_check_pressed(ord("Z"))

Espero ter ajudado!

flw

JV Justino

Ranking : Nota A
Número de Mensagens : 619
Idade : 19
Data de inscrição : 07/12/2010
Notas recebidas : A+A
Reputação : 20
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por FishyHatGuy em Ter 05 Jul 2011, 23:35

E ajudou mesmo, valeu~
Só não peço ainda para fechar o tópico pois percebi um outro problema, mas creio que posso dar um jeito neste.
...Por enquanto.


Só que agora ele só anda no chão depois de pular, e se parar, deixa de andar novamente. Acredito que o problema seja no teste de gravidade. Pois quando o editei tirando a clausula else, ele não deixava o objeto andar a não ser que estivesse no ar.
Vou tentar continuar mexendo aqui, mas agradeço outra possível ajuda @_@

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por saim em Qua 06 Jul 2011, 10:58

Obviamente, seu código pra andar não está no código apresentado. Por favor, apresente o código pra andar que poderemos ajudar.
Apresente, também, o código que faz jumpdetection voltar pra 0 (ou, pelo menos, o evento em que ele ocorre).

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por FishyHatGuy em Qua 06 Jul 2011, 11:03

Eis o código inteiro que eu fiz, com algumas modificações:

Código:

// ================= Code for moving on ground==================

// Define a standard position in case both right and left keys are pressed
if keyboard_check(vk_left) && keyboard_check(vk_right){
    dir_R = 0;
    dir_L = 0;
    sprite_index = HeroJumpRight;
}
else{ // Deal with only one key case
    if keyboard_check(vk_right)&& place_free(x+5, y) {
        dir_R = 1;
        dir_L = 0;
        x+=5;
        if jumpDetection == 0 {sprite_index = HeroWalkRight;}
    }
    if keyboard_check(vk_left) && place_free(x-5, y){
        dir_R = 0;
        dir_L = 1;
        x-=5;
        if jumpDetection == 0 {sprite_index = HeroWalkLeft;}
    }
}
if keyboard_check_released(vk_left){
    sprite_index = HeroJumpLeft;
}
if keyboard_check_released(vk_right){
    sprite_index = HeroJumpRight;
}

// ================= Code for jumping and stuff ==================

// Gravity for the hero
if place_free(x,y+1){
    gravity=0.7;
}
else {
    gravity = 0;
}

// Jump for the hero
if keyboard_check_pressed(ord("Z")) && jumpDetection == 0{

    if jumpDetection == 0{
        jumpDetection = 1;
    }
   
    //if !place_free(x,y+1){
        vspeed = -10;
    //}
   
    if dir_R == 1{
        sprite_index = HeroJumpRight;
    }
    else if dir_L == 1{
        sprite_index = HeroJumpLeft;
    }
   
}

jumpDetection é definido como 0 quando o objeto realiza colisão com o outro, neste caso, o herói com um bloco ou piso.
Meu problema agora é que se o herói está em contato direto com o piso, ele não anda, ele só anda após pular, pois antes de aterrissar, ele sofre uma pequena desaceleração até enconstar no bloco. Se possível quero resolver estes dois problemas.

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por saim em Qua 06 Jul 2011, 14:02

Código:
if keyboard_check(vk_right)&& place_free(x+5, y) {
        .....
        x+=5;
        .....
    }
Se possível quero resolver estes dois problemas.
Das duas, uma: ou x+5 não é "place_free" ou "y" não é. Provavelmente, y. Logo, os dois problemas devem estar relacionados. Provavelmente, você está aterrissando um pouco pra dentro do chão.
Mocê usa move_contact?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por FishyHatGuy em Qua 06 Jul 2011, 19:05

Não uso move_contact, tentei uma vez mas aí piorou. E a nesse caso que você mostrou, o place_free só é utilizado pra verificação de colisão horizontal, não creio que isso afete o pulo, ainda mais porque antes de eu alterar o código, não o tinha colocado, e o problema já existia.

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por Kevin em Qua 06 Jul 2011, 19:37

amigo... tenta colocar isso na Colisão com o Chão... e lembrando que é EXPRESSAMENTE RECOMENDADO q vc coloque o CHÃO como SOLIDO:

Colisão do Herói com o Chão:
Código:
move_contact_solid(direction,12)
vspeed=0

e outra.. place_free tbm é usado pra Vertical...

place_free(x,y) //x=horizontal e y=vertical...

x negativo é igual a esquerda, x positivo igual a direita
y negativo é igual a cima, y positivo é igual para baixo

bem é isso ae carinha ;)

qualquer coisa é só falar

abraço

PS:. Coloca aquele COD de colisão... abraço ;)

Kevin

Ranking : Nota C
Número de Mensagens : 1166
Idade : 22
Data de inscrição : 14/11/2008
Notas recebidas : C - C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://www.programaCODM.webs.com/

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por FishyHatGuy em Qua 06 Jul 2011, 19:45

Valeu muito Kevin, isso resolveu o problema da desaceleração na aterrissagem, mas ainda tem o problema de não andar, caso o personagem fique em contato direto com o chão.

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por Kevin em Qua 06 Jul 2011, 19:48

esse é um caso de MASK... abra o objeto do Player.. e defina a Sprite dele parado como o MASK padrão do OBJ... e pronto.. ele irá parar de travar ;)

(se caso naum resolver isso me avisa... e se naum souber como fazer isso me manda um MP ;) )

abraço

Kevin

Ranking : Nota C
Número de Mensagens : 1166
Idade : 22
Data de inscrição : 14/11/2008
Notas recebidas : C - C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://www.programaCODM.webs.com/

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por FishyHatGuy em Qua 06 Jul 2011, 19:51

Isso ajudou, valeu mesmo~
E agora podem trancar o tópico :B
Depois eu torturarei vocês com mais problemas q-

FishyHatGuy

Número de Mensagens : 18
Data de inscrição : 30/04/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas em fazer um objeto pular

Mensagem por Conteúdo patrocinado Hoje à(s) 17:21


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