Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Colisao com o mesmo objeto(encontrar outra rota)
2 participantes
Página 1 de 1
Colisao com o mesmo objeto(encontrar outra rota)
ola pessoal , to precisando de uma ajudinha, vamos la!
tenho uma have de zombies todos sao o mesmo objeto, quando sao criados eles
seguem o jogador até ai tranquilo, o problema que nao consigo resolver a colisao entre eles , tentei fazer e eles travam e param , gostaria que quando eles enconstarem procurem outra rota pra chegar ao jogador , mas nao ficar se amontoando depois de alguns segundos mesmo correndo eles acabam virando um so (um em cima do outro)
alguem pode me dar uma luz , agradeço!
tenho uma have de zombies todos sao o mesmo objeto, quando sao criados eles
seguem o jogador até ai tranquilo, o problema que nao consigo resolver a colisao entre eles , tentei fazer e eles travam e param , gostaria que quando eles enconstarem procurem outra rota pra chegar ao jogador , mas nao ficar se amontoando depois de alguns segundos mesmo correndo eles acabam virando um so (um em cima do outro)
alguem pode me dar uma luz , agradeço!
macedoboka- Data de inscrição : 02/03/2014
Reputação : 0
Número de Mensagens : 63
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Colisao com o mesmo objeto(encontrar outra rota)
A função move_towards_point é simples demais. O ideal é você criar seu próprio script, calculando px por px, principalmente quando se tenta evita muitos obstáculos. Um exemplo de script com o movimento limpo (de Willy):
- Código:
/* ::: Arguments:::
0 = Velocidade
1 = Direo
[opcional]2 = modo (0 = solidos, 1 = objeto especifico, 2 = solidos e objeto especifico);
[opcional]3 = Objeto ( obrigatrio se 2 for especificado)
*/
arg2 = max(0, argument2 mod 3); //limita a um valor entre 0 e 2
/*calcula quanto deve andar na horizontal e na vertical baseado na direo
Obs: a velocidade total 1, pois vamos px por px
Ex: speed = 1 e direction = 30
ento, velocidadade vertical = 1 * sin(30) = 0.5
a velocidade horizontal = 1 * cos(30) ~= 0.86
ou seja, ele vai andar 0.5px para cima e 0.86px para a direita
lengthdir_x e lengthdir_y fazem o 'trabalho sujo' (cos e sin)
supondo que a velocidade total seja 10, no final das contas ele vai andar 5px pra
cima e 8.6px para a direita
*/
hmove = lengthdir_x(1, argument1);
vmove = lengthdir_y(1, argument1);
repeat(abs(argument0)){ //Repete o o codigo abaixo de acordo com o valor absoluto de argument0
//Condies::::::::::::::::::::::
switch(arg2){
case 0:
if (place_free(x+hmove,y)) x+=hmove; //se puder andar na horizontal, anda
if (place_free(x,y+vmove)) y+=vmove; //se puder andar na vertical, anda
break;
case 1:
if(!place_meeting(x+hmove,y,argument3)) x+=hmove; //se no colidir com o objeto na horizontal, anda
if(!place_meeting(x,y+vmove,argument3)) y+=hmove; //se no colidir com o objeto na vertical, anda
break;
case 2:
if (place_free(x+hmove,y) && (!place_meeting(x+hmove,y,argument3)))x+=hmove;//testa os dois anteriores e, se possivel, anda
if (place_free(x,y+vmove) && !place_meeting(x,y+vmove,argument3))y+=vmove;//testa os dois anteriores e, se possivel, anda
break;
}
}
return (point_distance(xprevious, yprevious, x, y)>0); // retorna true se andou ou false se no andou.
- Código:
scr_speed(Speed,point_direction(x,y,player.x,player.y),2,zombies);
Tópicos semelhantes
» colisão de queda após outra colisão dando problema
» como abrir outra room ao mesmo tempo???
» Outra duvida aki '-' Com colisão
» [BUG] erro de colisão ou bug mesmo?
» Movimentar mesmo em colisão (top-down)
» como abrir outra room ao mesmo tempo???
» Outra duvida aki '-' Com colisão
» [BUG] erro de colisão ou bug mesmo?
» Movimentar mesmo em colisão (top-down)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos