Conectar-se
Quem está conectado
19 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 19 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Bug com colisão

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;
}
}
avatar
Data de inscrição : 23/03/2014
Número de Mensagens : 211
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 40

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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).
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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é)
avatar
Ranking : Nota D
Notas recebidas : D
Data de inscrição : 21/04/2014
Número de Mensagens : 192
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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ê.
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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.
avatar
Ranking : Nota D
Notas recebidas : D
Data de inscrição : 21/04/2014
Número de Mensagens : 192
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

em Sab 07 Mar 2015, 11:58
Reputação da mensagem: 100% (1 votos)
Cara você testou pelo menos esse código da colisão?
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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
avatar
Ranking : Nota D
Notas recebidas : D
Data de inscrição : 21/04/2014
Número de Mensagens : 192
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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...
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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
avatar
Ranking : Nota D
Notas recebidas : D
Data de inscrição : 21/04/2014
Número de Mensagens : 192
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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...
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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.
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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?
}
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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".
avatar
Ranking : Nota D
Notas recebidas : E-E-D
Data de inscrição : 22/03/2012
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 18

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Bug com colisão

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?
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum