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
» Servidor de Discord do fórum?
por Super Games Ontem à(s) 01:27

» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por 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

» 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


[Pergunta] Bordas de bloco, como desviar?

4 participantes

Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty [Pergunta] Bordas de bloco, como desviar?

Mensagem por Luiz A. Oliveira Qua 26 Jan 2011, 09:09

Gostaria de saber como fazer quando o player colidir com os 4 ângulos do bloco quadrado desviar, mas se tocar no topo um move_contact_solid(,). Estilo BomberMan 2, só que em plataforma.
Se alguém não entendeu, me avise.
Luiz A. Oliveira
Luiz A. Oliveira

Games Ranking : Nota C

Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Reputação : 5
Número de Mensagens : 914
Prêmios : [Pergunta] Bordas de bloco, como desviar? 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://luizgm.blogspot.com/

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por saim Qua 26 Jan 2011, 12:11

Eu não entendi.
De qualquer forma, é possível saber de que lado ocorre a colisão. Você pode testar várias opções de place_meeting, tipo
if place_meeting(x+1,y,obj_bloco)
//está à direita
if place_meeting(x-1,y,obj_bloco)
//está à esquerda
if place_meeting(x,y+1,obj_bloco)
//está abaixo
if place_meeting(x,y-1,obj_bloco)
//está acima
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Pergunta] Bordas de bloco, como desviar? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por Luiz A. Oliveira Qua 26 Jan 2011, 12:32

[Pergunta] Bordas de bloco, como desviar? Quadrado
seta vermelha= mover contato solido
triangulo vermelho= angulo do quadrado
linha azul= desvio
se não colidir com o angulo move solido
se colidir com o angulo desvia para o outro lado

Mad é complicado de explicar
Luiz A. Oliveira
Luiz A. Oliveira

Games Ranking : Nota C

Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Reputação : 5
Número de Mensagens : 914
Prêmios : [Pergunta] Bordas de bloco, como desviar? 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://luizgm.blogspot.com/

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por saim Qua 26 Jan 2011, 14:42

Acho que entendi, com a imagem. Você não quer que o jogador seja obrigado a acertar perfeitamente o espaço livre pra poder continuar o movimento.
Parece pouco provável que ocorra a colisão no centro sem ocorrer nas beiras. Talvez você queira deviar quando a colisão ocorrer somente nas beiras.
Vou pensando numa forma de fazer isso enquanto você me responde se estou certo.
Por favor, me mostre seus códigos de movimento. Minha responsta depende de como você faz pra se movimentar.
Ah, me diga também se você tem pro ou lite.


independente de como você se movimenta, é importante criar variáveis que indiquem que existe a colisão nos cantos. Uma forma de fazer isso é criando pequenos objetos, um em cada canto, e dizer, a cada um desses pequenos objetos, a que bloco ele pertence. Acho essa solução válida, mas um tanto complicada.
Sugiro definir variáveis para indicar onde são os cantos. Vou chamá-las de x1, x2, y1 e y2.
Eu não sei carregar uma imagem, então deixe-me tentar desenhar com um texto o que eu quero dizer:
......x1.....x2
.......|......|
y1 --+----+--
.......|......|
.......|......|
y2 --+----+--
.......|......|
Ficou horrível, eu sei, mas deu pra entender?
A partir daí, você precisa determinar se a colisão acontece entre esses valores. Se acontecer, move_contact, de outra forma, desvia. Pra desviar, depende da direção e da forma que você está andando.

Edit: algo assim:
Código:
var lado, colidido;
lado=""
if instance_place(x,y,obj_bloco){ //se ocorre a colisão
 colidido=instance_place(x,y,obj_bloco)
 with (colidido){
  if collision_line(y1,bbox_right,y2,bbox_right,other)
  lado="direita"
  if collision_line(x1,bbox_top,x2,bbox_top,other)
  lado="acima"
  if collision_line(y1,bbox_left,y2,bbox_left,other)
  lado="esquerda"
  if collision_line(y1,bbox_bottom,y2,bbox_bottom,other)
  lado="abaixo"
 }
 move_contact_solid(direction,speed) //move_contact, não importa onde foi a colisão
 if lado=""{ //se a colisão é na beirada (nenhuma das opções acima retornou verdadeira)
  if keyboard_check(vk_left) or keyboard_check(vk_right){ //se indo pra os lados
  if y>colidido.y2 //colisão na borda de baixo
    y-=velocidade_de_desvio
  else            //colisão na borda de cima
    y+=velocidade_de_desvio
  }
  else{  //se está movendo na vertical
  if x>colidido.x2 //colisão na borda da direita
    x+=velocidade_de_desvio
  else            //colisão na borda da esquerda
    x-=velocidade_de_desvio
  }
 }
}


Última edição por saim em Qua 26 Jan 2011, 16:05, editado 2 vez(es)
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Pergunta] Bordas de bloco, como desviar? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por Willy Qua 26 Jan 2011, 15:47

Você pode fazer o jogador verificar se esta nas quinas superiores assim:

Colisão com o bloco:
Código:
if x>other.x+1{
//Colisão Normal
}else{
x-=1
}

Esse código não vai funcionar para AS DUAS quinas superiores, apenas na quina da esquerda. Se quiser q funcione nos dois cantos, vai ter que usar algo + ou - assim:

//Direita
Código:
if x>other.x+1 && x<other.x+31
Esse código provavelmente não vai dar certo pois eu não testei, mas apenas citei a logica que funcina (ja fiz algo semelhante com isso).
Os valores de X vão depender do tamanho da sprite do bloco.

Crie também uma variavel nos blocos para saber se nao tem nada na esquerda e/ou na direita, sençao o jogador vai começar a recuar e/ou avançar quando estiver andando em uma fileira de blocos.

Espero ter ajudado.
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : [Pergunta] Bordas de bloco, como desviar? Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

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

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por Minun Qua 26 Jan 2011, 23:29

Olha que coisa!
Também tava precisando disso, que mundo pequeno.
Eu inda não consegui resolver @_@
Minun
Minun

Data de inscrição : 26/01/2011
Reputação : 0
Número de Mensagens : 15
Prêmios : [Pergunta] Bordas de bloco, como desviar? 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

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por Luiz A. Oliveira Qui 27 Jan 2011, 07:49

vou tentar as duas maneiras, entrei no pc quase agora e quenado testar dou um edit
edit==
aconteceu isso aqui:
Código:
COMPILATION ERROR in code action
Error in code at line 8:
    if collision_line(y1,bbox_right,y2,bbox_right,other)
                                                        ^
at position 55: Wrong number of arguments to function or script.


Spoiler:
Luiz A. Oliveira
Luiz A. Oliveira

Games Ranking : Nota C

Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Reputação : 5
Número de Mensagens : 914
Prêmios : [Pergunta] Bordas de bloco, como desviar? 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://luizgm.blogspot.com/

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por saim Qui 27 Jan 2011, 08:20

Ah, eu esqueci de alguns argumentos mesmo.
Acrescente 1 ou 0, dependendo de você querer colisão precisa ou não e mais um 0, pra explicar pra instância que ela própria não deve ser considerada na colisão. Isso pra todos os collision_line, claro.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Pergunta] Bordas de bloco, como desviar? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por Luiz A. Oliveira Qui 27 Jan 2011, 08:46

não entendi
0 ou 1 pra que e onde?
==edit== entendi agora
mas não funcionou, só faz ele travar o passo
Luiz A. Oliveira
Luiz A. Oliveira

Games Ranking : Nota C

Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Reputação : 5
Número de Mensagens : 914
Prêmios : [Pergunta] Bordas de bloco, como desviar? 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://luizgm.blogspot.com/

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

Mensagem por saim Qui 27 Jan 2011, 09:40

Certeza que a colisão está acontecendo só nas beiras?
Não tenho como testar isso agora... Faça o seguinte: não declare "lado" como variável var. Rode o jogo no modo "debug" e cheque o valor de obj_player.lado
Se der qualquer coisa diferente de "", a colisão está acontecendo no meio do bloco, também.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Pergunta] Bordas de bloco, como desviar? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[Pergunta] Bordas de bloco, como desviar? Empty Re: [Pergunta] Bordas de bloco, como desviar?

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