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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[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