Últimos assuntos
» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

» Ajuda para mecanismo do jogo
por Willy Dom 16 Jul 2017, 15:54

Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220918 mensagens em 30411 assuntos

Tiro atravessando alvo

Página 1 de 2 1, 2  Seguinte

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

Tiro atravessando alvo

Mensagem por makino 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
makino

Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Willy 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
Willy

Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1831
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por makino 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
makino

Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por makino 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
makino

Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por mleoni em Dom 22 Set 2013, 14:24

Já tentou mp_potential_step ? Ele tem uma opção de velocidade,pode funcionar.
avatar
mleoni

Data de inscrição : 06/03/2013
Número de Mensagens : 81
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por cascavelo 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
cascavelo

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 2
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Isaque Onix 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
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por makino 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
makino

Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Isaque Onix 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
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Kapoty 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
Kapoty

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por makino 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
makino

Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Rodrigo Santiago 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
Rodrigo Santiago

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 3
   : 1
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Isaque Onix em Seg 23 Set 2013, 20:21

Ainda acho que meu metodo é melhor, Olha aí como fica
avatar
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Kapoty 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
Kapoty

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Isaque Onix em Ter 24 Set 2013, 10:14

Raiva? eu? não... Cool
avatar
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Willy 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
Willy

Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1831
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Rodrigo Santiago 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
Rodrigo Santiago

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 3
   : 1
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Willy 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
Willy

Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1831
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por makino 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
makino

Data de inscrição : 19/09/2013
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Tiro atravessando alvo

Mensagem por Isaque Onix em Qua 25 Set 2013, 14:02

só fazer com que ele continue se movendo, com um speed...
avatar
Isaque Onix

Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Página 1 de 2 1, 2  Seguinte

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