GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» 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

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Problemas com colisões.

3 participantes

Ir para baixo

Problemas com colisões. Empty Problemas com colisões.

Mensagem por EdJr Ter 20 Abr 2010, 21:37

Olá, pessoal!
Bom, tentarei ser bem direto e explicativo: Estou usando o GM 8, e estou usando paredes em formato de objetos sólidos para impedir a passagem do personagem (não sei se há uma maneira melhor, peguem leve Happy). Os objetos são invisíveis mas têm uma máscara idêntica ao formato da parede.

Estou com dois problemas relacionados às colisões. O primeiro é que, quando o personagem colide verticalmente com a parede, ele para de andar horizontalmente também. Isso eu até cheguei a resolver, mas gerou outros problemas.

O segundo é com relação às paredes diagonais: O personagem fica travando nelas também, eu queria saber se há uma maneira de "deslizar" quando se estiver pressionando apenas as teclas direita/esquerda OU cima/baixo. (Acho que essa parte ficou meio complicada de entender, mas eu tento explicar de novo se não entenderem.)

Como "ajuda-bônus", eu gostaria de saber também como faço para mudar o sprite para parado se o jogador estiver pressionando uma tecla mas o personagem não estiver se movendo.

Muito obrigado desde já!
EdJr
EdJr

Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 20
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.ceticismando.co.cc (Nada lá ainda)

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por victor_aco Ter 20 Abr 2010, 21:55

Qual código você está usando para fazer a movimentação do personagem?
victor_aco
victor_aco

Data de inscrição : 25/03/2010
Reputação : 2
Número de Mensagens : 666
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por EdJr Ter 20 Abr 2010, 22:02

Acabei de resolver o primeiro problema, hehe. Eu tentei de todas as maneiras mais complicadas, só depois fui ver que a mais simples era a que resolvia. Mas ainda estou com o segundo problema.

O código está aí:
Código:
//////////////////////MOVIMENTAÇÃO\\\\\\\\\\\\\\\\\\\\\\\\\

if pode_teclar = "tudo" and pode_andar = true
{
/////////////////////ESQUERDA / DIREITA\\\\\\\\\\\\\\\\\\\\\\
if (keyboard_check (vk_left) and not keyboard_check(vk_right))
    {
    direcao = "esq"; movimento = "anda"; hspeed = -velocidadeh;
    }
else{
if (keyboard_check (vk_right) and not keyboard_check(vk_left))
    {
    direcao = "dir"; movimento = "anda"; hspeed = velocidadeh;
    }
}
//Fim esquerda-direita

///////////////////////CIMA / BAIXO\\\\\\\\\\\\\\\\\\\\\\\\\\
if (keyboard_check (vk_up) and not keyboard_check(vk_down))
    {
    movimento = "anda"; vspeed = -velocidadev; andav = true
    }
else{
if (keyboard_check (vk_down) and not keyboard_check(vk_up))
    {
    movimento = "anda"; vspeed = velocidadev; andav = true
    }
}
//Fim cima-baixo

/////////////////SORTA AS TECRA\\\\\\\\\\\\\\\\\\\\\
if (keyboard_check_released (vk_left and vk_right))
    {
    hspeed = 0; movimento = "para";
    }
 
if (keyboard_check_released (vk_up and vk_down))
    {
    vspeed = 0; movimento = "para"; andav = false
    }

if (keyboard_check_released (vk_left and vk_right and vk_up and vk_down))
    {
    movimento = "para"; andav = false
    }
   
if pode_andar = false
    {
    hspeed = 0; vspeed = 0; movimento = "para"
    }

//Fim do sorta as tecra
}

Se precisarem de mais detalhes, podem falar.
EdJr
EdJr

Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 20
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.ceticismando.co.cc (Nada lá ainda)

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por KinKing Ter 20 Abr 2010, 23:03

Se trata de um jogo de visão aérea (top-down)... certo...?

E você tem paredes "diagonais..." Que diabos é isso... Paredes que não são retas com colisão "precisa" marcada?

Tipo isso, só que mais triangular e inclinado (seria o canto esquerdo-baixo)?
|\
KinKing
KinKing

Data de inscrição : 29/05/2008
Reputação : 16
Número de Mensagens : 422
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://felipejoys.webnode.com

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por EdJr Ter 20 Abr 2010, 23:32

Como eu já disse, o jogo será no estilo Beat'em up, olha uma imagem do Golden Axe: http://revistagames.files.wordpress.com/2009/12/golden-axe-1.jpg

Tirei uma SS do meu projeto (e recolori pra proteger os gráficos u.u), olha o que eu quero dizer:
https://2img.net/r/ihimizer/img641/835/imagemhbf.png

Pelo que você disse ("Que diabos é isso...."), suponho que eu esteja fazendo algo errado. Se não for folga demais da minha parte, você poderia dizer o que é?
EdJr
EdJr

Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 20
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.ceticismando.co.cc (Nada lá ainda)

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por KinKing Qua 21 Abr 2010, 10:50

Não, eu só realmente não entendi o que você quis dizer com "parede diagonal," sabe?
E lendo seu post de novo eu não achei em nenhum lugar que diz que ele será Beat'em Up... Só se você disse isso em um outro post, que eu não li.

Enfim, agora que tudo está mais claro, a minha sugestão é que você só faça o personagem andar se não houver algo sólido na frente dele, assim ele nunca entala na parede.

*Talvez* só isso já resolva seu problema, mas só talvez.

Eis um exemplo:

Código:
if (keyboard_check (vk_left) && !keyboard_check(vk_right) && place_free(x-velocidadeh,y))
{
    direcao = "esq";
    movimento = "anda";
    hspeed = -velocidadeh;
}

Onde a novidade está em "place_free(x-velocidadeh,y)" e variará para x+velocidadeh,y, x,y-velocidadev e x,y+velocidadev, se eu não estiver errado.
KinKing
KinKing

Data de inscrição : 29/05/2008
Reputação : 16
Número de Mensagens : 422
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://felipejoys.webnode.com

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por EdJr Qua 21 Abr 2010, 14:19

Ops, é que eu reescrevi o tópico por um problema que tinha dado aqui, esqueci de citar o estilo do jogo de novo.
O código novamente só deu certo para o primeiro problema, e ainda com um pequeno bug (nada grave, mas o código que usei foi mais eficaz), mas não resolveu o problema da parede diagonal; ele continua travando.

Consegui fazer um codigozinho aqui, não está tão compacto como poderia, eu sei, mas só vou fazer isso quando solucionar o problema completamente.
Código:

if andav = "cima" and direcao = "esq" and (place_meeting(x+15, y-2, obj_imp_ne))
    {
    hspeed = -velocidadeh; vspeed = -velocidadev
    }
   
if andav = "cima" and direcao = "dir" and (place_meeting(x-2, y-2, obj_imp_nw))
    {
    hspeed = velocidadeh; vspeed = -velocidadev
    }
   
if andav = "nada" and andah = true and direcao = "dir" and (place_meeting(x+15, y+6, obj_imp_ne))
    {
    hspeed = velocidadeh; vspeed = velocidadev
    }
Não entendi por que, mas a mesma lógica não funciona com a parede |/ ao tentar descer apertando apenas pra esquerda. Finalmente, só resta a dúvida de como fazer isso funcionar e como configurar o sprite como "parado", como eu perguntei lá em cima.

Obrigado mais uma vez. Happy
EdJr
EdJr

Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 20
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.ceticismando.co.cc (Nada lá ainda)

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por KinKing Qua 21 Abr 2010, 15:23

Desculpa, mas não consigo ver o seu método como se fosse um método óbvio na minha cabeça para eu poder raciocinar.

O máximo que eu posso fazer é te mandar um chute, uma idéia, quem sabe né...

E se o personagem, quando se deparar uma parede e estiver para a direção direita tentando andar, simplesmente simular como se a tecla baixo estivesse apertada? Ou dar a ele uma velocidade vertical temporária, só enquanto aquela checagem for verdadeira...
KinKing
KinKing

Data de inscrição : 29/05/2008
Reputação : 16
Número de Mensagens : 422
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://felipejoys.webnode.com

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por victor_aco Qua 21 Abr 2010, 20:50

Decha eu ver se entendi em relação a parede diagonal. Quando você quer dizer parede diagonal você quer falar da parede lateral do prédio, como se fosse a profundidade dele?
Se for isso você quer que o player entre por um bequinho no caso na parede diagonal ou quer que ele não entre?
victor_aco
victor_aco

Data de inscrição : 25/03/2010
Reputação : 2
Número de Mensagens : 666
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por EdJr Qui 22 Abr 2010, 15:25

Sim, é a parede lateral do prédio. Só quero mesmo é que passe sem travar. É que, como a máscara do personagem é um retângulo, fica travando nos pixels diagonais da máscara da parede.

Como eu disse, já resolvi quase todo o problema com o código acima, mas ainda buga com a parede "|/".


KinKing, não sei se você falou da lógica do código em si ou de partes isoladas. Esses obj_imp são os impassáveis, e os nw e ne são "noroeste" e "nordeste", estou usando isso pra representar diagonais, por exemplo: O nw é |/ e o ne é \|.
No caso do place_meeting é óbvio, estou checando se em tal posição há colisão com o objeto. Mas acontece o contrário: Se a condição for verdadeira é que o personagem anda. Porque estou checando um local atrás do personagem, e não pelo caminho por onde ele vai passar.

E se o personagem, quando se deparar uma parede e estiver para a direção direita tentando andar, simplesmente simular como se a tecla baixo estivesse apertada? Ou dar a ele uma velocidade vertical temporária, só enquanto aquela checagem for verdadeira...
Eu fiz mais ou menos isso mesmo....
EdJr
EdJr

Data de inscrição : 29/05/2009
Reputação : 0
Número de Mensagens : 20
Prêmios : Problemas com colisões. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.ceticismando.co.cc (Nada lá ainda)

Ir para o topo Ir para baixo

Problemas com colisões. Empty Re: Problemas com colisões.

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos