Bug com colisão

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Bug com colisão

Mensagem por Isquilo_Roedor em Sex 06 Mar 2015, 20:32

alguem sabe como consertar esse problema, as vezes quando o inimigo arremesa o meu player pra cima e estou perto de uns blocos acontece isso ... = http://imgur.com/ABk7YXQ

(a inteligencia do inimigo é tipo bater no player e jogar ele pra cima e para trás.)

pra quem nao entendeu quando o player é arremessado ele atravessa outros blocos que estão acima dele, isso não deveria acontecer, isso só acontece quando colide com o inimigo se o jogador pular normalmente não buga

aqui está oque uso para colisões

vsp+=grav;
y+=vsp;
x+=hsp;
pular = keyboard_check_(vk_space) [claro que nao ta certo o cmd mas e so pra explicar]

isso é o que checa a parte das colisões

Código:
//se colidir com o bloco obj_blocos que e parente dos blocos,da colisao
if (place_meeting(x,y+vsp,obj_blocos)){
vsp=0;
grav=0;

// aqui em baixo checa se tem algo em cima e nao deixa saltar
if(place_meeting(x,y-16,obj_blocos)){
pular=false;
grav=0;
vsp=0;
}
else{
pular=true;
}
}

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por AxeInLine em Sex 06 Mar 2015, 20:38

O problema, Isquilo, vem de vocês usar as variáveis x e y para mudar a posição do player.
Aconselho-te a usar as built-in hspeed e vspeed para mudar a posição.

Claro, pode ser outro fator que está causando isso, mas, tenta mudar apenas para teste (se lembra que tu vai ter que mudar algumas parte dos códigos para não dar problema).

AxeInLine

Número de Mensagens : 211
Idade : 14
Data de inscrição : 23/03/2014
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Isquilo_Roedor em Sab 07 Mar 2015, 11:11

Acredito que não seja essa a melhor forma de corrigir o problema já que x+=vsp
vspeed e hspeed já estão presentes de uma forma alternativa, mas obrigado pela resposta, esse problema não deveria ocorrer na verdade, porque quando o player está normal nada disso ocorre, mas quando colide com o inimigo ocorre isso:

Código:
//colisão with zumbi
//zumbi1

//normal
if place_meeting(x+1,y,obj_zumbi1){
horn=true
if image_xscale=1 and global.esquerda_inimigo=true {
motion_add(135,6);alarm[0]=8;
}
}

if place_meeting(x-1,y,obj_zumbi1){
if image_xscale=-1 and global.direita_inimigo=true {
motion_add(45,6);alarm[0]=8;
}
}
//invertido
if place_meeting(x+1,y,obj_zumbi1){
horn=true
if image_xscale=1 and global.direita_inimigo=true {
motion_add(45,6);alarm[0]=8;
}
}

if place_meeting(x-1,y,obj_zumbi1){
if image_xscale=-1 and global.esquerda_inimigo=true {
motion_add(135,6);alarm[0]=8;
}
}

da pra ter uma noção do que acontece, ele deveria colidir com o bloco, mas quando o player está em alta velocidade ele simplesmente ignora colisões, já testei isso com um debug que gera velocidade 35 ao meu player, o problema é que ele não colide perfeitamente quando está em uma velocidade alta, eu queria saber como solucionar isso, tipo realizar uma colisão mais perfeita porque quando o player está em alta velocidade ele ignora as colisões ou seja buga tudo (ja disse isso umas 5 vezes né)

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Wendryos em Sab 07 Mar 2015, 11:23

Olá Isquilo.

Porque tanto código assim?

1 - Você poderia tentar só com os dois primeiros.

2 - Você poderia controlar a velocidade: Ex.: if speed>10 {speed=10};


Isso realmente não era para acontecer, que código você usa na colisão?

Edit///

Código:
//se colidir com o bloco obj_blocos que e parente dos blocos,da colisao
if (place_meeting(x,y+1,obj_blocos)){
vsp=0;
grav=0;
}

if (place_meeting(x,y-1,obj_blocos)){
vsp=0;
}
// aqui em baixo checa se tem algo em cima e nao deixa saltar
if place_free(x,y-16){
pular=false;
grav=0;
vsp=0;
}
else{
pular=true;
}


Dei uma organizada no código para você.

Wendryos

Ranking : Nota D
Número de Mensagens : 192
Data de inscrição : 21/04/2014
Notas recebidas : D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Isquilo_Roedor em Sab 07 Mar 2015, 11:51

Cara se eu usar o código da forma que está ai não vai funcionar, e já testei sim, até porque vai contra as minhas variáveis, eu queria solucionar o problema de o player não checar a colisão quando esta em uma hspeed ou vspeed muito alta por exemplo 35 e que não seja aplicada pelo player seja utilizando outro fator.

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Wendryos em Sab 07 Mar 2015, 11:58

Cara você testou pelo menos esse código da colisão?

Wendryos

Ranking : Nota D
Número de Mensagens : 192
Data de inscrição : 21/04/2014
Notas recebidas : D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Isquilo_Roedor em Sab 07 Mar 2015, 12:07

Sim testei, mas como disse não funcionou e tentei fazer algumas adaptações, mas o meu código é o que funciona melhor com tudo, mas obrigado, eu não quis ofender com o comentário acima

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Wendryos em Sab 07 Mar 2015, 12:10

Inves de x e y você poderia tentar utilizar o hspeed, pois o x muda de posição "bruscamente".

Ex.:
Código:
hspeed=2 friction=0.8


Edit//
Isquilo usa só
Código:
if place_meeting(x+1,y+0,obj2){
horn=true
if image_xscale=1  {motion_add(135,8) friction=0;alarm[0]=8;};
}
//Esquerda
if place_meeting(x-1,y+0,obj2){
if image_xscale=-1  {motion_add(45,8) friction=0;alarm[0]=8;};
}
if horn=false{speed=0;horn=noone};

E não quatro desses...

Wendryos

Ranking : Nota D
Número de Mensagens : 192
Data de inscrição : 21/04/2014
Notas recebidas : D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Isquilo_Roedor em Sab 07 Mar 2015, 18:58

O problema é que é necessário usar 4, por que tem que checar a 4 posições para realizar a ação
ou a velocidade nao funciona corretamene, exemplo:

Player indo pra direita (>)
Player indo pra esquerda (<)
Inimigo indo pra direita ({)
Inimigo indo pra esquerda (})

ai vão as posições pra checar

> }
> {
< {
< }

é por isso os quadro, mas se nao entendeu deixa queto kkkkk é complicado mesmo e eu nao sei explicar rsrsr
o friction incomoda o player ao andar, certamente nao é a melhor escolha também, e como eu disse o negocio de hspeed e x está configurado de forma que não muda as coisas já testei e não ficou melhor, mas obrigado por tentar ajudar

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Wendryos em Sab 07 Mar 2015, 20:58

Olha cara eu fiz uma engine desde aquele tempo, e nunca deu problema eu acho que o problema ta em alguma parte do seu código.

Mas eu precisaria testar, creio que se me envia-se sua engine eu arrumaria em segundos...

Wendryos

Ranking : Nota D
Número de Mensagens : 192
Data de inscrição : 21/04/2014
Notas recebidas : D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Zero. em Dom 08 Mar 2015, 10:20

O que você pode fazer é checar a distância entra o jogador e o bloco, e se o valor da vspeed ultrapassar essa distância (se o jogador for entrar no bloc), você leva o obj_jogador até o limite do block e define vsp = 0.

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Isquilo_Roedor em Dom 08 Mar 2015, 12:36

O seu jeito de pensar parece ser algo que vai dar certo, mas o problema nisso tudo é que eu não sei como escrever esse seu pensamento em código entende
seria tipo assim

if (distance_to_object(obj_blocos)<=1){
transportar player pro limite dos blocos?
o que faço aqui?
}

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Zero. em Dom 08 Mar 2015, 14:40

Distance_to_object não, acho que ficaria melhor um collision_rectangle. Depois vc joga ele até um "point_direction" que você encontrou, onde seria uma "distância segura".

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Isquilo_Roedor em Dom 08 Mar 2015, 17:07

Eu estou entendendo o que você quer dizer, mas eu não consigo fazer este pensamento em forma de code, fica meio confuso ,porque são variáveis que nunca usei apesar do meu jogo ser complexo, será q vc poderia fazer um exemplo pra mim ou engine?

Isquilo_Roedor

Ranking : Nota D
Número de Mensagens : 334
Idade : 16
Data de inscrição : 22/03/2012
Notas recebidas : E-E-D
Reputação : 18
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug com colisão

Mensagem por Conteúdo patrocinado Hoje à(s) 07:22


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum