Fazer player voar

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

Resolvido Fazer player voar

Mensagem por andreh em Qua 06 Abr 2011, 12:17

Olá! Estou criando um jogo de plataforma, na qual o player é um robô, lógicamente os jogos de plataforma tem pulos e td mais, mas o meu robô não pode pular, pois ele não tem pernas, é tipo um tanque de guerra, mas eu queria que ele flutuasse (aparece uma luz embaixo dele e ele vai "voando"), vc pode ficar flutuando a qualquer altura, mas tem um tempo, ou seja, a flutuação usa uma força, quando essa força acaba, o robô cai. Alguém pode me ajudar a fazer ele flutuar? e se possível colocar o tempo de flutuação, por favor? Espero q tenha explicado certo, qqer coisa, eh soh perguntar.


Última edição por andreh em Qua 13 Abr 2011, 16:00, editado 3 vez(es)

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por Super Games em Qua 06 Abr 2011, 12:52

Está aqui serve?
Pesquise antes de postar, só escrevi voar.


Espero ter ajudado...

Super Games

Ranking : Nota D
Número de Mensagens : 2704
Idade : 18
Data de inscrição : 10/06/2010
Notas recebidas : D
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por andreh em Qua 06 Abr 2011, 13:02

Pois é! Malz ae!
Eu postei a dúvida e só depois lembrei q deveria ter procurado primeiro, é que eu tava precisando demais disso ,mas enfim, obrigado.

Mas agora vem a Segunda pergunta: Tem como eu fazer ele flutuar por determinado tempo?
ou seja, eu aperto pra ele voar, ai uma barrinha vai esvazeando, e quando ficar toda vazia o player cai.

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por saim em Qua 06 Abr 2011, 14:26

Use um alarm. Quando o alarm chegar a zero, adicione a gravidade.

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

Resolvido Re: Fazer player voar

Mensagem por andreh em Qua 06 Abr 2011, 17:24

Por favor, me ajudem a criar um alarm. Depois que o saim postou eu procurei mto sobre alarm, mas nao achei nd que se encaixasse no meu caso. Por favor me ajudem, o q eu quero eh o seguinte: quando o player estiver flutuando, começa o alarm, ai qndo chegar em zero é pra fazer ele descer, eu quero isso para nao deixar o jogador se aproveitar da flutuação.

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por saim em Qua 06 Abr 2011, 17:32

Alarms são eventos, como create, collision ou draw. É possível fazer seus próprios alarms, mas não é necessário.
no começo da flutuação: alarm[0]=tempo_que_você_quiser_que_flutue
no evento alarm0: gravity=um_valor_qualquer

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

Resolvido Re: Fazer player voar

Mensagem por andreh em Qua 06 Abr 2011, 17:53

não esta dando certo! tem como vc postar um código explicando ou fazer uma engine?(se não é pedir de mais!).

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por saim em Qui 07 Abr 2011, 11:41

código:
create
Código:
voando=false //checa se está voando
gravity=0              //gravidade
velocidade=4          //pra andar na horizontal

step
Código:
if keyboard_check_pressed(vk_up) && place_meeting(x,y+1,obj_chao){ //se apertou a tecla de voar sem estar voando
 voando=true  //avisa pro computador que está voando
 alarm[0]=30  //liga o alarme
 }

if keyboard_check_released(vk_up){ //se soltou a tecla (provavelmente, é porque quer cair)
 voando=false //deixa cair
 alarm[0]=-1
 }

if voando==false && !place_meeting(x,y+1,obj_chao) //se não está voando nem está no chão
 gravity=1 //começa a cair

//aqui, eu deixo pra você fazer o código de aterrissar. Eu sempre apronto um balaio de gato, nessa parte
//o usual é usar move_contact_solid em caso de colisão

//e, pra andar para os lados:
x+=(keyboard_check(vk_right)-keyboard_check(vk_left))*velocidade

alarm0
Código:
voando=0

draw
Código:
cor_antiga=draw_get_color()
draw_sprite(sprite_index,image_index,x,y)
if voando{ //alguns efeitos (toscos) pra quando estiver voando
 draw_luz //claro que isso é uma piada. Você que define como quer fazer a "luz"
 draw_set_color(c_red)
 draw_rectangle(x-50,y-10,x+50,y+10,0)
 draw_set_color(c_green)
 draw_rectangle(x-50,y-10,x-50+100*(alarm[0]/30),y+10,0)
 draw_set_color(cor_antiga) //pra não atrapalhar outros eventos
 }


Última edição por saim em Sex 08 Abr 2011, 14:57, editado 4 vez(es) (Razão : correções e melhorias)

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

Resolvido Re: Fazer player voar

Mensagem por andreh em Qui 07 Abr 2011, 17:11

No primeiro pulo dá td certo, mas depois o player trava, não consigo ir para os lados e ele não flutua mais, apenas dá pequenos pulos. fiz colisão com o bloco, mas não funcionou!

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por saim em Sex 08 Abr 2011, 09:56

"pulo"? Meu código não permite que o player pule. Pra isso, tenho que elaborar ele um pouco mais. Já que o primeiro dá certo, me parece que o problema é na colisão.
Me mostre seu código pra colisão (eu me embanano nessa hora, mas a coisa sai) e explique se quer permitir o pulo, mesmo. Se quiser, é imprescindível mudar o código.

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

Resolvido Re: Fazer player voar

Mensagem por andreh em Sex 08 Abr 2011, 13:56

Eu me expressei mal, pulo= flutuar (malz ae, eu não quero que ele pule)! Agora, a colisão, imagine td, move_contact_solid, um codigo que não deixa o player afundar no bloco, speed=0, até no drag'n'drop eu tentei, mas ele trava, e dá pra ver q ele não afunda no chão, alguma coisa está cancelando a flutuação,pq na primeira flutuação funciona, mas depois não,apenas dá uns pulinhos, se puder me ajudar, eu agradeço!

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por saim em Sex 08 Abr 2011, 14:22

Acho que você não está zerando a gravidade, mas espera um pouquinho que vou editar a mensagem com mais informações.

Recomendo debugar. Sabe o que é debugar? É uma tradução medonha pra "debug". Você roda o jogo com aquele botão "play" vermelho e verifica o valor das variáveis. Clica no botão "+" e adiciona qual variável de qual objeto você quer olhar. No caso, as variáveis são:
player.voando
player.gravity
player.alarm[0]
==>claro que é pra substituir "player" pelo nome do seu objeto
veja se está tudo como esperado, ou seja, ao apertar a tecla pra cima, você espera que esteja assim
player.voando=true
player.gravity=0
player.alarm[0]=30 e baixando
Ao soltar a tecla ou ao alarm[0] chegar a zero, você espera encontrar:
player.voando=false
player.gravity=1
player.alarm[0]=-1 //na verdade, tenho que mudar um pouco o step, só mais um minutinho que eu altero ele lá em cima pronto, alterei

Ao cair/aterrissar, você espera encontrar o seguinte:
player.voando=false
player.gravity=0
player.alarm[0]=-1

Se estiver tudo conforme esperado, o erro realmente está em algum outro lugar. Estando qualquer coisa fora do esperado, me avise.

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

Resolvido Re: Fazer player voar

Mensagem por andreh em Sex 08 Abr 2011, 15:21

aaeeeeee! encontrei o erro! mto obrigado saim, primeiro por ter me ajudado e segundo pela paciencia, eu nao sabia pra q servia o debug, agora sei!
Sabe qual foi o erro?
Ele começava com gravidade zero certinho, ai ele flutuava, e quando caía, a gravidade não zerava, continuava 1, aí eu não conseguia me mexer, mas aí eu coloquei um Senão nessa condição, escrevendo gravity=0:
Código:
if voando==false && !place_meeting(x,y+1,obj_chao) //se não está voando nem está no chão
 gravity=1 //começa a cair
else
gravity=0
e agora ele zera a gravidade, vlw saim, o debug é uma grande ajuda, eu nunca ia saber que a gravidade não tava zerando!

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Fazer player voar

Mensagem por saim em Sex 08 Abr 2011, 16:04

O debug é muito útil, acho que o manual devia gastar um pouco mais de texto explicando como usá-lo. Eu já pastei um bocado até conseguir usar essa ferramenta efetivamente e até hoje ainda tenho umas dúvidas.
Que bom que foi resolvido! Eu faria diferente, simplesmente mandaria gravidade pra zero na colisão, mas seu método parece até mais eficaz.

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

Resolvido Re: Fazer player voar

Mensagem por Conteúdo patrocinado Hoje à(s) 20:26


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