Conectar-se

Esqueci minha senha

Últimos assuntos
» [Enquete] Concursos GMBR
por Willy Ontem à(s) 19:49

» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

Quem está conectado
20 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 20 Visitantes

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36
Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220919 mensagens em 30412 assuntos

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á.
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Ver perfil do usuário

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
avatar
JV Justino

Ranking : Nota A
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Número de Mensagens : 619
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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 @_@
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Ver perfil do usuário

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).
avatar
saim

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

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.
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Ver perfil do usuário

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?
avatar
saim

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

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.
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Ver perfil do usuário

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 ;)
avatar
Kevin

Ranking : Nota C
Notas recebidas : C - C
Data de inscrição : 14/11/2008
Número de Mensagens : 1166
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0

Ver perfil do usuário 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.
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Ver perfil do usuário

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
avatar
Kevin

Ranking : Nota C
Notas recebidas : C - C
Data de inscrição : 14/11/2008
Número de Mensagens : 1166
Insígnias de JAM :

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

Prêmios
   : 0
   : 1
   : 0

Ver perfil do usuário 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-
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

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

Ver perfil do usuário

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