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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Problemas em fazer um objeto pular

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á.
avatar
Ranking : Nota A
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Número de Mensagens : 619
Insígnias de JAM :

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

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

Re: Problemas em fazer um objeto pular

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
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Re: Problemas em fazer um objeto pular

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 @_@
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Problemas em fazer um objeto pular

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).
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Re: Problemas em fazer um objeto pular

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.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

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

Re: Problemas em fazer um objeto pular

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?
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Re: Problemas em fazer um objeto pular

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.
avatar
Ranking : Nota C
Notas recebidas : C - C
Data de inscrição : 14/11/2008
Número de Mensagens : 1166
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://www.programaCODM.webs.com/

Re: Problemas em fazer um objeto pular

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 ;)
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Re: Problemas em fazer um objeto pular

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.
avatar
Ranking : Nota C
Notas recebidas : C - C
Data de inscrição : 14/11/2008
Número de Mensagens : 1166
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuáriohttp://www.programaCODM.webs.com/

Re: Problemas em fazer um objeto pular

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
avatar
Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Re: Problemas em fazer um objeto pular

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-
Conteúdo patrocinado

Re: Problemas em fazer um objeto pular

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