Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
[Pergunta] Plataforma com bug
4 participantes
Página 1 de 1
[Pergunta] Plataforma com bug
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)
obj_player (Step)
obj_plataforma_v (Create)
obj_plataforma_v (Step)
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- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
cara tem um sistema que eu uso que é bom, faz o seguinte:
obj_plataforma_v:
Create:
acho que é isso mesmo, qualquer coisa...
[edit]
qualquer erro manda, pois eu reescrevi o codigo de cabeça e pode conter erros!!!
obj_plataforma_v:
Create:
- Código:
Dir=choose(90,270)
- 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!!!
Re: [Pergunta] Plataforma com bug
Eu pulei na plataforma e ela sumiu
douglas.teles.1- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
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
pra funcionar, é bom que estejão só esses codigos e que ela esteja marcada como solid=true
Re: [Pergunta] Plataforma com bug
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- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
essa plataforma usa o sistema de plataforma fantasma??
(quando se está em baixo dela dá para atravessar?)
(quando se está em baixo dela dá para atravessar?)
Re: [Pergunta] Plataforma com bug
Sim, isso mesmo.
douglas.teles.1- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
vo ter que repensar esse codigo, por ser plataforma fantasma fica mais dificil
Re: [Pergunta] Plataforma com bug
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)
Adilson Thiago Vieira- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 17/10/2012
Reputação : 25
Número de Mensagens : 367
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
Obrigado pela ajuda, mas isso acabaria com a plataforma fantasma.
douglas.teles.1- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
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- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 17/10/2012
Reputação : 25
Número de Mensagens : 367
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
NÂÃÃÂÂOOOO!!!marcada como solid=true
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.
Re: [Pergunta] Plataforma com bug
antes remove tudo do objeto Solido(o que move) e da colisão player e plataforma
na colisão do player com plataforma:
no create da plataforma:
no step da plataforma:
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?
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)
Re: [Pergunta] Plataforma com bug
Ele fica quicando na plataforma quando ela desce.
douglas.teles.1- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
adicionei uma engine, talvez te ajude, só mude o nome do objeto Player que eu não mudei
Re: [Pergunta] Plataforma com bug
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- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 17/10/2012
Reputação : 25
Número de Mensagens : 367
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
Na sua engine ta com o mesmo problema do meu, quando eu pulo na plataforma ela trava tudo
douglas.teles.1- Data de inscrição : 12/04/2013
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Pergunta] Plataforma com bug
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}
}
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}
}
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|