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

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Tiro atravessando alvo

em Sab 21 Set 2013, 22:53
Pessoal meu jogo é meio top down (nao sei dizer como é a expectativa dele) e possui armas e logo possui um tiro,eu quis dar um pouco de realidade e coloquei uma velocidade considerável no tiro,o problema é que eu axo que quando coloco
Código:
x+=100
para mover um objeto isso fazer com que acada freme ele pule 100 pixels,correto? me corrijam se estiver errado,o problema é que alem de parecer qe o tiro está se teleportando para a frente ele acaba atravesando alvos que deverião destruir ele,axo que isso ocorre quando o alvo está entre o 100 pixels que ele pula né ? então se alguem poder me ajudar eu agradeço muito Very Happy


codigo atual :

Create:
CREATE:

Código:
direcao = "none"


switch (obj_Player.direcao)
{
    case ("direita"): direcao = "direita"
    break;
    case("esquerda"): direcao = "esquerda"
    break;
    case("cima"): direcao = "cima"
    break;
    case("baixo"): direcao = "baixo"
}
alarm[0]=120;

velo = 60;

No Step:
STEP:

Código:
switch (direcao)
{
    case ("direita"): hspeed=velo
    break;
    case("esquerda"): hspeed=-velo
    break;
    case("cima"): vspeed=-velo
    break;
    case("baixo"): vspeed=velo
}

Ta vspeed e hspeed pq eu ja tava tentando outros meios mas aprincipio era x+=velo e talz

Image do ocorrido:
No caso o tiro (bolinha amarela) atravessou o alvo
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Tiro atravessando alvo

em Sab 21 Set 2013, 23:45
Ao invés de você usar:
Código:
x+=100;
Use:
Código:
repeat(100){
    x+=1;
}
O problema é justamente o que você falou. Usando repeat, o objeto vai andar 100 px, mas de 1 em 1 em apenas 1 frame.
avatar
Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Tiro atravessando alvo

em Dom 22 Set 2013, 00:42
vlw ferreiro rsrs (Rag s2) então cara amanha eu testo qe agr ja tou dormindo encima do pc kk
avatar
Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Tiro atravessando alvo

em Dom 22 Set 2013, 12:50
não funcionou muito bem Sad parece qe o numero de vezes qe atravessa dminuiu mas continua atravessando as vezes,troquei o 100 pela minha variavel velo,que no caso esta em 60
avatar
Data de inscrição : 06/03/2013
Número de Mensagens : 81
Insígnias de JAM :

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

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

Re: Tiro atravessando alvo

em Dom 22 Set 2013, 14:24
Já tentou mp_potential_step ? Ele tem uma opção de velocidade,pode funcionar.
avatar
Ranking : Nota A
Notas recebidas : A - A - A - A - A -A -C
Data de inscrição : 08/12/2011
Número de Mensagens : 1011
Insígnias de JAM :

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

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

Re: Tiro atravessando alvo

em Dom 22 Set 2013, 14:45
Tem duas soluções:
- Aumente a room_speed, mas pode dar problema com a performance em alguns pcs.

- A melhor e mais simples solução é aumentar a mask do sprite do projétil assim ele sempre vai colidir corretamente.
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Tiro atravessando alvo

em Dom 22 Set 2013, 16:28
uma boa ideia, é, colocar o objeto a ser atingido como solido, e usar isso:

Código:
move_contact_solid(direction,-1)
o movimento é rapido, usei em um projeto e deu muito certo!

Ps: você pode tentar assim:

Código:
with(object){solid=true}
with(instance_create(x,y,Bala)){move_contact_solid(direction,-1)}
with(object){solid=false}
falowzzz
avatar
Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 13:26
FAIL Sad o tiro se teleporta até o alvo,ate qe o jogo poderia ser assim,o problema qe ele chega e fica colado no alvo e não chega realmente colidir e nada qe esta dentro do colision funciona Sad
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 14:24
nesse caso, é só fazer com que a bala não pare de se mover, colocando um speed ou algo assim... e a bala não se teleporta, ela se move muito rapido, tanto que se tiver outra coisa solida ela para!
avatar
Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

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

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 15:02
Usando a ideia do Willy, faça uma checagem de colisão:

Código:
repeat(100){
x+=1;
if (place_meeting(x,y,obj_alvo)) {
//Colidiu    
}
}
O código do Willy andava de 1px por 1px, mas não checava colisão e continuava pulando o alvo.
avatar
Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 19:36
vou tentar quando chegar em casa,ainda bem qe eu ja queria tirar esse colision msm muito amador kk
avatar
Ranking : Nota B
Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Número de Mensagens : 1281
Insígnias de JAM :

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

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

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 20:12
NÃO FAÇA ISSO!
VAI CONSUMIR A VELOCIDADE DO JOGO
KAPOTY! VOCÊ JA DEVIA SABER ISSO!study 
Sempre lembre de colocar a velocidade máxima menor ou igual ao número de pixeis da sprite que serve de colisão(mask).

x+=100 é o mesmo que:
Código:

repeat(100){
x+=1
}
Usando o método do Kapoty você vai fazer seu jogo desabar em frames! 100 verificações de colisão por step em cada bala!
Você pode fazer assim:
Código:

var xpre,ypre, xx,yy;
xpre=x;
ypre=y;
x+=legthdir_x(100,dir)
y+=legthdir_y(100,dir)
if collision_line(xpre,ypre,x,y,all,1,-1) {
x=xpre;y=ypre;
for(i=1;i<=100;i+=8){//SENDO 8 o tamanho da sprite, pra economizar
 xx=x+legthdir_x(i,dir)
 yy=y+legthdir_y(i,dir)
   if (place_meeting(xx,yy,obj_alvo)) {
    //Colidiu    
    }//repita else if para mais outros objetos
 }
}
Desse modo você economizará 'verificação de colosão', almentando a velocidade , DRASTICAMENTE VIU KAPOTY...
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 20:21
Ainda acho que meu metodo é melhor, Olha aí como fica
avatar
Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

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

Re: Tiro atravessando alvo

em Seg 23 Set 2013, 23:16
Quanta raiva, na verdade eu já sabia disso, mas sempre fiz assim e nunca perdi FPS.
Mas gostei do seu método, é melhor mesmo.
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Tiro atravessando alvo

em Ter 24 Set 2013, 10:14
Raiva? eu? não... Cool
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Tiro atravessando alvo

em Ter 24 Set 2013, 13:11
Isaque, acho que o Kapoty tava falando do Rodrigo...sorrindo 
Enfim...

Rodrigo escreveu:Usando o método do Kapoty você vai fazer seu jogo desabar em frames! 100 verificações de colisão por step em cada bala!
De certo modo você está certo, realmente vai ter uma quantidade de verificações a cada step, entretanto, o consumo de memória é minimo e não apresenta risco ao desempenho do jogo. Quem sabe se tiver uma centena de objetos...
avatar
Ranking : Nota B
Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Número de Mensagens : 1281
Insígnias de JAM :

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

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

Re: Tiro atravessando alvo

em Ter 24 Set 2013, 21:43
Programando no GameMaker você tem que aproveitar ao máximo as frames.
Talvez seu jogo não tem problemas agora, pois ainda não esta pronto, mais quando tiver todos os menus, npc, objetos de controle e paredes , ai sim você notará a diferença.
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: Tiro atravessando alvo

em Qua 25 Set 2013, 00:57
Bom, eu nunca fiz um teste "real" de desempenho, mas posso te afirmar que durante toda minha carreira com GM eu usei esse método e nunca tive problemas, e olha que meu computador é beeeem modesto. --\'
Mas enfim, desempenho não é o foco deste tópico, usar ou não fica a critério do autor.
Flws...
avatar
Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Tiro atravessando alvo

em Qua 25 Set 2013, 12:29
onix to testando com o seu msm,pq com o do rodrigo o tiro vai dps qe o personagem desencosta dele,o problema é qe com o seu quando o alvo esta junto a min (proximo,colidido) o tiro simplesmente n o afeta,aguardo resposta e obrigado a todos os outros qe tentaram me ajudar Very Happy
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1598
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: Tiro atravessando alvo

em Qua 25 Set 2013, 14:02
só fazer com que ele continue se movendo, com um speed...
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