[Pergunta] Plataforma com bug

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

[Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 17:38

Pessoal, eu fiz uma plataforma que sobe e desce e ela possui 2 bugs chatos.
O primeiro é que dependendo da forma em que você cai em cima dela, ela trava e trava o obj_player.
O segundo é que o player sobe, mas na hora de descer ele fica quicando na plataforma em quanto ela desce.
É isso. Obrigado!

Códigos:

obj_player (Colision obj_plataforma_v)
Spoiler:

Código:
//Aqui neste bloco que esta o grande problema de colisao! Por isso, não pule ou jogue caixas enquanto ela esriver subindo/descendo
if other.solid=true{//se o outro objeto for solido
if vspeed > 0 and not place_free(x,y + vspeed){//***se a velocidade vertical for maior do que 0 e não tiver o mesmo valor da vel vertical abaixo...
move_contact_solid(direction,vspeed)//mover na direção do bloco, na direcçao e com a vel.vertical
}
vspeed = 0//***velocidade vertical = a 0(esta no chao)
}
{
pe_no_chao = true
}

obj_player (Step)
Spoiler:
Código:

//Gravidade
if place_free(x,y + 1){//se tiver 1 pixel livre abaixo...
gravity = 0.5//...gravidade é igual a 0.5(movimento)
}else{//se nao tiver 1 pixel livre abaixo...
gravity = 0//...gravidade é igual a 0(parado)
}


/*Limitar a velocidade vertical*/
if (vspeed>12)
vspeed=12;


if (keyboard_check(vk_right)){//verifica se a seta direita foi apertada
    hspeed = 9;direita = true;andando = true
}else{// se não foi
    if (keyboard_check(vk_left)){ //verifica se a seta esquerda foi apertada
        hspeed = -9;direita = false;andando = true
    }else{// se não foi
        hspeed = 0;andando = false
    }
}

//Pulo Sprite

if keyboard_check_pressed(vk_up) and pe_no_chao = true and abaixado = false and not place_free(x,y+1){//se for apertado para cima
    vspeed = -12
    pe_no_chao = false
}

if keyboard_check_released(vk_up) and vspeed <= 0{//se for soltado para cima
    vspeed /= 2
}

//Plataforma Horizontal:
plat_h=instance_place(x,y+1,obj_plataforma_h);
if instance_exists(plat_h){
    if plat_h.solid=true{
        if place_free(x+plat_h.hspeed,y){
        repeat(4)
        x+=sign(plat_h.hspeed)
        }
    }
}
//Plataforma Vertical
plat_v=instance_place(x,y+1,obj_plataforma_v);
if instance_exists(plat_v){
    if plat_v.solid=true{
        repeat(4)
        y+=sign(plat_v.vspeed)
    }
    //Não ser preensado pela plataforma na parede. Esta comentada por motivos de dar conflitos na plataforma. Ative se quiser, mas...
    //if plat_v && !place_free(x,y-1){
    http://plat_v.solid=false
    //}
}

obj_plataforma_v (Create)
Spoiler:
Código:

pos_jog = 1
vel = 4
vspeed = vel
dir = 1
alarme = false

obj_plataforma_v (Step)
Spoiler:
Código:
//Saber se bateu no obj_parar_plat_v e parar.
if place_meeting(x,y+vspeed,obj_parar_plat_v) && alarme=false{
vspeed=0
alarm[0]=30
alarme=true
}
//Jogador a direita ou a esquerda:
if x>obj_jogador.x{
pos_jog=-1
}else{
pos_jog=1
}
//Fantasma!
//Saber se o jogador esta acima ou abaixo do jogador, saber se apertou vk_down.
//Então, ficar solido ou nao.
if place_meeting(x+1*pos_jog,y,obj_jogador){//Se o jogador estiver no caminho, deixara de ser solido
solid=false
}else{
if y>obj_jogador.y
&& !place_meeting(x,y,obj_jogador)
&& !keyboard_check(vk_down){
solid=1
}else{
    if place_free(x,y-1){//Caso tenha algo sobe a plataforma (no caso, a caixa)
    solid=0
    }else{
    solid=1
    }
}
}
//Alpha
if place_meeting(x,y,obj_jogador){//Se o jogador estiver dentro
image_alpha=0.8//transparente
}else{
image_alpha=1//opaco
}

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 17:54

cara tem um sistema que eu uso que é bom, faz o seguinte:

obj_plataforma_v:
Create:
Código:
Dir=choose(90,270)
step:
Código:
if(!place_free(x,y-32)){Dir=270}
if(!place_free(x,y+32)){Dir=90}
if(place_meeting(x,y-2,obj_player)){
if(Dir=90){y-=2 obj_player.y-=2}
if(Dir=270){obj_player.y+=2 y+=2}
}else{
if(Dir=90){y-=2}
if(Dir=270){y+=2}
}

acho que é isso mesmo, qualquer coisa...
[edit]
qualquer erro manda, pois eu reescrevi o codigo de cabeça e pode conter erros!!!

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 18:04

Eu pulei na plataforma e ela sumiu

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 18:10

você colocou tudo tipo na colisão do player com o solido você colocou (vspeed=0)?

pra funcionar, é bom que estejão só esses codigos e que ela esteja marcada como solid=true

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 18:11

Ta ai no obj_player (Colision obj_plataforma_v)
Código:
if other.solid=true{//se o outro objeto for solido
if vspeed > 0 and not place_free(x,y + vspeed){//***se a velocidade vertical for maior do que 0 e não tiver o mesmo valor da vel vertical abaixo...
move_contact_solid(direction,vspeed)//mover na direção do bloco, na direcçao e com a vel.vertical
}
vspeed = 0//***velocidade vertical = a 0(esta no chao)
}
{
pe_no_chao = true
}

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 18:14

essa plataforma usa o sistema de plataforma fantasma??
(quando se está em baixo dela dá para atravessar?)

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 18:16

Sim, isso mesmo.

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 18:23

vo ter que repensar esse codigo, por ser plataforma fantasma fica mais dificil

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Adilson Thiago Vieira em Sex 12 Abr 2013, 18:30

Olha só isso serve para impedir que um objeto entre dentro do outro,talves funcione,,ponha na colisão:
Código:

move_contact_solid(direction,-1)
move_outside_solid(direction-180,0)
espero que te ajude =]

Adilson Thiago Vieira

Ranking : Sem avaliações
Número de Mensagens : 367
Idade : 19
Data de inscrição : 17/10/2012
Notas recebidas : D+C+C+D
Reputação : 25
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 18:32

Obrigado pela ajuda, mas isso acabaria com a plataforma fantasma.

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Adilson Thiago Vieira em Sex 12 Abr 2013, 18:35

Bem,faça a checagem para saber se ela esta solida:
Código:

if other.solid
{move_contact_solid(direction,-1)
move_outside_solid(direction-180,0)}

Adilson Thiago Vieira

Ranking : Sem avaliações
Número de Mensagens : 367
Idade : 19
Data de inscrição : 17/10/2012
Notas recebidas : D+C+C+D
Reputação : 25
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por theguitarmester em Sex 12 Abr 2013, 18:35

marcada como solid=true
NÂÃÃÂÂOOOO!!! affraid

Se você não for iniciante, evite ao MÁXIMO usar essa função, porque com ela, você ganhará facilidade em coisas simples e fácel, como não entrar para dentro de uma parede, mas quando você quizer implantar um novo recurso, ele trará muitos e muitos problemas.
os problemas que pode ter são geralmente, que você nunca conseguirá passar por dentro do solid, ou coisas inesperadas irão acontecer, a menos que esteja fazendo um jogo rápido e pequeno, não use este recurso.

Quando tiver um tempo, e se sua pergunta não for resolvida, tentarei ajudá-lo.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 18:37

antes remove tudo do objeto Solido(o que move) e da colisão player e plataforma

na colisão do player com plataforma:
Código:
if(other.solid=true){vspeed=0}

no create da plataforma:
Código:
Dir=choose(90,270)

no step da plataforma:
Código:
if(obj_player.y<(y-8)){solid=true}else{solid=false}// é bom mudar no 8 e testar pois os sprites que usei eram 32x32

if(distance_to_object(obj_player)=0){obj_player.vspeed=-8}// faz o player ir para cima da plataforma fantasma

if(!place_free(x,y-32)){Dir=270}
if(!place_free(x,y+32)){Dir=90}
if(place_meeting(x,y-1,obj_player)){
if(Dir=90){y-=2 obj_player.y-=2}
if(Dir=270){obj_player.y+=2 y+=2}
}else{
if(Dir=90){y-=2}
if(Dir=270){y+=2}
}

testa aí dnv e me fala
[edit]
theguitarmester não intendi seu ponto de vista, mais esse segundo codigo funcionou bem com sprites 32x32 improvisados e com o solid marcado..

[edit2]
uma engine que eu fiz, só num repara eu ter upado pro 4shared mais é porque eu não estou no meu pc...
http://www.4shared.com/file/fy0no5kF/plat_movel.html?


Última edição por Isaque Onix em Sex 12 Abr 2013, 18:49, editado 2 vez(es)

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 18:47

Ele fica quicando na plataforma quando ela desce.

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 18:50

adicionei uma engine, talvez te ajude, só mude o nome do objeto Player que eu não mudei

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Adilson Thiago Vieira em Sex 12 Abr 2013, 18:52

Sei la man,tenta algumas coisas ai tambem '-'
Código:

if other.solid
{move_contact_solid(direction,-1)
move_outside_solid(direction-180,0)
direction=other.direction
speed=other.speed}

Adilson Thiago Vieira

Ranking : Sem avaliações
Número de Mensagens : 367
Idade : 19
Data de inscrição : 17/10/2012
Notas recebidas : D+C+C+D
Reputação : 25
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por douglas.teles.1 em Sex 12 Abr 2013, 18:55

Na sua engine ta com o mesmo problema do meu, quando eu pulo na plataforma ela trava tudo

douglas.teles.1

Número de Mensagens : 7
Data de inscrição : 12/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Isaque Onix em Sex 12 Abr 2013, 19:23

encontrei o erro, esta na parte marcada de vermelho, deveria ser 8 e eu coloquei 1, maus!

if(!place_free(x,y-34)){Dir=270}
if(!place_free(x,y+34)){Dir=90}
if(place_meeting(x,y-8,obj_player)){
if(Dir=90){obj_player.y-=2 y-=2 }
if(Dir=270){ y+=2 obj_player.y+=2}
}else{
if(Dir=90){y-=2}
if(Dir=270){y+=2}
}

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: [Pergunta] Plataforma com bug

Mensagem por Conteúdo patrocinado Hoje à(s) 15:46


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