Entrar
Últimos assuntos
» player não consegue andarpor 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
[Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
+2
.:Allison:.
Willy
6 participantes
Página 1 de 1
Colisão entre dois objetos em velocidade vertical oposta.
>>>TÓPICO DA ENGINE<<<
Estou com um problema com a colisão vertical com dois objetos em direção uma com a outra...
Tenho dois objetos, um é o objeto jogador e a outra é uma plataforma que se move verticalmente...
O problema, é que quando esses dois objetos se colidem, ambos travam. (a plataforma é solida).
O movimento de subir e descer o player ja esta programado, tudo que falta fazer é uma colisao perfeita com velocidade oposta. Exemplo: Jogador com vspeed = 2 e o bloco com vspeed = -4.
O código que estou usando é esse:
Colisao com a plataforma
- Código:
if other.solid=true{
if vspeed > 0 && !place_free(x,y + vspeed){
move_contact_solid(direction,vspeed)
}
vspeed = 0
}
Eu acredito que o problema seja o move_contact_solid ou/e o vspeed = 0
Desde já agradeço...
Última edição por Willy em Seg 28 Fev 2011, 22:18, editado 1 vez(es)
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
tenta isso na colisão
- Código:
y=other.y-32 // o Y pulará o "(total do tamanho da sprite do player)" para cima da plataforma vertical! OBS:isso fará o player ficar certinho em cima da plataforma sem trancar no meio dela
vspeed=other.vspeed// e o vspeed será o mesmo da platafoema vertiacal
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
Agradeço sua ajuda X-Games, porem, não deu certo...
Ja tentei diversos codigos antes, inclusive o que você sugeriu agora...
Esse problema so acontece quando eu caio em cima da plataforma, quando eu simplesmente passo por ela sem pular ou cair, a colisao fica perfeita, o jogdor sobe e desce sem problome algum... O código que estou usando no jogador é esse (Step):
Obrigado.
Ja tentei diversos codigos antes, inclusive o que você sugeriu agora...
Esse problema so acontece quando eu caio em cima da plataforma, quando eu simplesmente passo por ela sem pular ou cair, a colisao fica perfeita, o jogdor sobe e desce sem problome algum... O código que estou usando no jogador é esse (Step):
- Código:
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)
}
}
Obrigado.
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
hmm acho que entendi
tenta isso no step do teu player
bom o code ai é facil
enquanto nao estiver lugar_livre(x,y)
{obj da um pulinho pra tras}
claro depois tu edita ali os x e y de acordo com o jeito que tu vai querer testa ae acho que funciona
ps: aprendi isso com o jyraia
tenta isso no step do teu player
- Código:
while(!place_free(x+8,y ) )
{
x-=1;
}
while(!place_free(x,y-8 ) )
{
y+=1;
}
while(!place_free(x-8,y ) )
{
x+=1;
}
while(!place_free(x,y+8 ) )
{
y-=1;
}
bom o code ai é facil
enquanto nao estiver lugar_livre(x,y)
{obj da um pulinho pra tras}
claro depois tu edita ali os x e y de acordo com o jeito que tu vai querer testa ae acho que funciona
ps: aprendi isso com o jyraia
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
Tambem não deu certo... Mas foi quase!
Ainda acho que o problema é no move_contact_solid...
Vou continuar tentando aqui... Mas vou continuar aguardando mais possiveis soluções...
Obrigado!
Ainda acho que o problema é no move_contact_solid...
Vou continuar tentando aqui... Mas vou continuar aguardando mais possiveis soluções...
Obrigado!
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
Voce colocou a plataforma como solida, isso faz com que ao bater nela ele pare, independente de um codigo. Entao, isso talvez sirva:
if y > other.y
{move_contact_solid(direction,vspeed)}
vspeed = 0
if y > other.y
{move_contact_solid(direction,vspeed)}
vspeed = 0
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
Boa a tentativa... Pena que não deu certo.
Ja tentei diversas coisas, mas o problema persiste...
Porém, uma das coisas que mais se aproximou de funcionar foi remover um código que deichava a plataforma não-sólida (Na engine, ela esta normal). Talvez isso ajude de alguma forma...
Eu postei a ENGINE a alguns dias atras, agora fica mais facil de pedir ajuda a vocês...
Eu ficaria muito grato se alguem fosse capaz de resolver esse problema de colisão que insiste em me atormentar...
Agradeço desde já a todos vocês que estão tentando me ajudar!
Ja tentei diversas coisas, mas o problema persiste...
Porém, uma das coisas que mais se aproximou de funcionar foi remover um código que deichava a plataforma não-sólida (Na engine, ela esta normal). Talvez isso ajude de alguma forma...
Eu postei a ENGINE a alguns dias atras, agora fica mais facil de pedir ajuda a vocês...
Eu ficaria muito grato se alguem fosse capaz de resolver esse problema de colisão que insiste em me atormentar...
Agradeço desde já a todos vocês que estão tentando me ajudar!
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
if other.solid=true{
if vspeed > 0 and not place_free(x,y + vspeed){
}
if other.vspeed<0then y+=other.vspeed //linha nova
move_contact_solid(direction,vspeed)
vspeed=0
}
tenta esse.
ps: esses eventos de colisão, sempre dão problema lol
flws
if vspeed > 0 and not place_free(x,y + vspeed){
}
if other.vspeed<0then y+=other.vspeed //linha nova
move_contact_solid(direction,vspeed)
vspeed=0
}
tenta esse.
ps: esses eventos de colisão, sempre dão problema lol
flws
fokao- Data de inscrição : 14/09/2008
Reputação : 7
Número de Mensagens : 264
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
Olá Sr.Willy! Tenho um código da comunidade estado-unidense, cujo nome é "Colisão perfeita para plataformers". Eis o código:
- Código:
if vspeed > 0 && !place_free(x,y+vspeed)
move_contact(270)
vspeed = 0
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Colisão entre dois objetos em velocidade vertical oposta.
O vencedor!fokao escreveu:if other.solid=true{
if vspeed > 0 and not place_free(x,y + vspeed){
}
if other.vspeed<0then y+=other.vspeed //linha nova
move_contact_solid(direction,vspeed)
vspeed=0
}
tenta esse.
ps: esses eventos de colisão, sempre dão problema lol
flws
Parabéns, você conseguiu resolver grande parte do meu problema! Digo grande parte pois falta alguns detalhes para aperfeiçoar o codigo (O jogador fica uns 2 pixels de distancia quando sobe e quica quando cai na plataforma quando esta descendo), mas isso ja é outra hitoria e eu posso resolver...
Muito obrigado fokao, mereceu!
Markituh, o seu código não deu certo... Apesar de ser praticamente o mesmo que estou usando na engine, mas eu agradeço a sua intenção mesmo assim!
Muito obrigado a todos que me ajudaram, agora o tópico esta [RESOLVIDO] e a moderação ja pode trancar o tópico.
Mais uma vez, obrigado a todos!
Tópicos semelhantes
» Colisão entre dois objetos
» como posso fazer colisão entre dois objetos
» [Resolvido]Como medir a distância entre dois objetos sem...?
» colisão em linha com dois objetos
» Objeto - Movimento Colisão/Vertical [Resolvido]
» como posso fazer colisão entre dois objetos
» [Resolvido]Como medir a distância entre dois objetos sem...?
» colisão em linha com dois objetos
» Objeto - Movimento Colisão/Vertical [Resolvido]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos