Tiro atravessando alvo

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

20% 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

makino

Número de Mensagens : 16
Data de inscrição : 19/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

20% 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.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

20% 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

makino

Número de Mensagens : 16
Data de inscrição : 19/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

20% 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

makino

Número de Mensagens : 16
Data de inscrição : 19/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

20% 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.

mleoni

Número de Mensagens : 81
Idade : 21
Data de inscrição : 06/03/2013
Reputação : 23
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

20% 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.

cascavelo

Ranking : Nota A
Número de Mensagens : 1011
Idade : 46
Data de inscrição : 08/12/2011
Notas recebidas : A - A - A - A - A -A -C
Reputação : 71
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 1

Voltar ao Topo Ir em baixo

20% 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

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% 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

makino

Número de Mensagens : 16
Data de inscrição : 19/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

20% 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!

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% 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.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

20% 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

makino

Número de Mensagens : 16
Data de inscrição : 19/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

20% 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...

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

20% 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

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% 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.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

20% Re: Tiro atravessando alvo

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

Raiva? eu? não... Cool

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% 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...

Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

20% 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.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

20% 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...

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

20% 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

makino

Número de Mensagens : 16
Data de inscrição : 19/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

20% 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...

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% Re: Tiro atravessando alvo

Mensagem por Willy em Qua 25 Set 2013, 14:18

Se os tiros são disparados apenas em linha reta (4 ângulos), o sistema de repeat que eu apresentei deveria funcionar normalmente. Porém, se o tiro tiver 360 ângulos possíveis, ai já não será útil.

Em todo caso, fiz uma engine. O projétil só é disparado pra direita, justamente pra facilitar o entendimento da mesma. Download

[Edit] Nota: Fiz um teste com centenas de projéteis na room ao mesmo tempo. Não apresentou nenhum problema de desempenho.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

20% Re: Tiro atravessando alvo

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

Na verdade Willy, mesmo que fosse 360º daria pra trabalhar com seu metodo (só explicando)
só teria que definir a direção antes...

Código:
direction=irandom(360)
repeat(100){
    x+=lengthdir_x(1,direction);
    y+=lengthdir_y(1,direction);
}

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% Re: Tiro atravessando alvo

Mensagem por Willy em Qua 25 Set 2013, 14:33

Isaque, seu lindo! *-*
Me poupou uma boa dor de cabeça...
Até pensei em usar isso, mas pensei que não daria certo... Vivendo e aprendendo...
Vou aplicar na engine movimento limpo.
Vlw! blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

20% Re: Tiro atravessando alvo

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

kkkkkkkkkkkkkkk

precisando.. tamo aí Razz geek 

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

20% Re: Tiro atravessando alvo

Mensagem por Conteúdo patrocinado Hoje à(s) 01:03


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