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

Nenhum

Ver toda a lista


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

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

[Pergunta] Plataforma com bug

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
}
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

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

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Pergunta] Plataforma com bug

em Sex 12 Abr 2013, 18:04
Eu pulei na plataforma e ela sumiu
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

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

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Pergunta] Plataforma com bug

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
}
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

em Sex 12 Abr 2013, 18:14
essa plataforma usa o sistema de plataforma fantasma??
(quando se está em baixo dela dá para atravessar?)
avatar
Data de inscrição : 12/04/2013
Número de Mensagens : 7
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Pergunta] Plataforma com bug

em Sex 12 Abr 2013, 18:16
Sim, isso mesmo.
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

em Sex 12 Abr 2013, 18:23
vo ter que repensar esse codigo, por ser plataforma fantasma fica mais dificil
avatar
Ranking : Sem avaliações
Notas recebidas : D+C+C+D
Data de inscrição : 17/10/2012
Número de Mensagens : 367
Insígnias de JAM :

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

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

Re: [Pergunta] Plataforma com bug

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 =]
avatar
Data de inscrição : 12/04/2013
Número de Mensagens : 7
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Pergunta] Plataforma com bug

em Sex 12 Abr 2013, 18:32
Obrigado pela ajuda, mas isso acabaria com a plataforma fantasma.
avatar
Ranking : Sem avaliações
Notas recebidas : D+C+C+D
Data de inscrição : 17/10/2012
Número de Mensagens : 367
Insígnias de JAM :

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

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

Re: [Pergunta] Plataforma com bug

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)}
avatar
Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

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

Prêmios
   : 2
   : 2
   : 1
Ver perfil do usuáriohttp://guitarmester.no.comunidades.net/index.php?pagina=19362978

Re: [Pergunta] Plataforma com bug

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.
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

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...
4shared.com/file/fy0no5kF/plat_movel.html?


Última edição por Isaque Onix em Sex 12 Abr 2013, 18:49, editado 2 vez(es)
avatar
Data de inscrição : 12/04/2013
Número de Mensagens : 7
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Pergunta] Plataforma com bug

em Sex 12 Abr 2013, 18:47
Ele fica quicando na plataforma quando ela desce.
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

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
avatar
Ranking : Sem avaliações
Notas recebidas : D+C+C+D
Data de inscrição : 17/10/2012
Número de Mensagens : 367
Insígnias de JAM :

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

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

Re: [Pergunta] Plataforma com bug

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

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Pergunta] Plataforma com bug

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
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: [Pergunta] Plataforma com bug

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}
}
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