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
[Resolvido]Movimentação inimigo 360º
3 participantes
Página 1 de 1
[Resolvido]Movimentação inimigo 360º
Meu Player se movimenta em 8 direções, porém usando sprites diferentes a cada 45º (8 sprites cima, baixo, direita, esquerda e diagonais)
Criei um inimigo que mira sempre no objeto player porém as sprites de todas as direções do inimigo estção em uma só sprite.
1 - Preciso que o inimigo use sprites diferentes pra cada uma das 8 direções e não uma das sprites dentro de um arquivo só.
2 - o tiro inimigo segue o obj.player muito diretamente ...preciso que esses tiros se tornem um pouco menos precisos.....
3 - o obj inimigo quando estiver em movimento deverá desviar de obstáculos porém obedecendo as sprites em 8 direções.
Desculpem se não fui claro em algum pedido. Desde já obrigado.
Criei um inimigo que mira sempre no objeto player porém as sprites de todas as direções do inimigo estção em uma só sprite.
1 - Preciso que o inimigo use sprites diferentes pra cada uma das 8 direções e não uma das sprites dentro de um arquivo só.
2 - o tiro inimigo segue o obj.player muito diretamente ...preciso que esses tiros se tornem um pouco menos precisos.....
3 - o obj inimigo quando estiver em movimento deverá desviar de obstáculos porém obedecendo as sprites em 8 direções.
Desculpem se não fui claro em algum pedido. Desde já obrigado.
marcin_w_- Data de inscrição : 25/11/2012
Reputação : 4
Número de Mensagens : 90
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
1 - Acho que você quer imagens diferentes na mesma sprite.
direction / resultado_acima: redução da divisão (do círculo) em 360 graus pra uma divisão (do círculo) no número de imagens da sprite
2 - Você precisa acrescentar um erro ao ângulo. acrescente essas linhas ao criar o tiro:
3 - aí, já é mais comlpicado. Pesquise no manual por "motion planning". Deve te dar uma luz. Depois volte a perguntar, com mais detalhes.
- Código:
image_index := direction / (360 / image_number);
direction / resultado_acima: redução da divisão (do círculo) em 360 graus pra uma divisão (do círculo) no número de imagens da sprite
2 - Você precisa acrescentar um erro ao ângulo. acrescente essas linhas ao criar o tiro:
- Código:
erro := 10; //máximo de erro, em graus
direction += -erro + random(2 * erro); // vai de -erro a +erro
3 - aí, já é mais comlpicado. Pesquise no manual por "motion planning". Deve te dar uma luz. Depois volte a perguntar, com mais detalhes.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
Obrigado pela ajuda porém acho que me expressei mal
no tópico
1- quero exatamente o contrário....quero poder usar um arquivo de sprite pra cada direção...e nao todos num arquivo soh....
2- queria nao precisar usar o point_direction para que o tiro inimigo acertasse o player.....pq isso faz com que o player nao tenha chance de desviar ...nem correndo....msmo com o random...
no tópico
1- quero exatamente o contrário....quero poder usar um arquivo de sprite pra cada direção...e nao todos num arquivo soh....
2- queria nao precisar usar o point_direction para que o tiro inimigo acertasse o player.....pq isso faz com que o player nao tenha chance de desviar ...nem correndo....msmo com o random...
marcin_w_- Data de inscrição : 25/11/2012
Reputação : 4
Número de Mensagens : 90
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
1 - use um switch
2 - você vai usar o point_direction AO CRIAR a bala, não no step. Uma vez criada, ela não pode mudar de direção.
Se você definir direction e speed, pode deixar o step em branco.
- Código:
var sprite_a_usar;
sprite_a_usar := direction / (360 / numero_de_sprites); //numero_de_sprites=8
switch(sprite_a_usar ){
case 0: sprite_index := sprite_zero; break;
case 1: sprite_index := sprite_um; break;
// etc;
}
2 - você vai usar o point_direction AO CRIAR a bala, não no step. Uma vez criada, ela não pode mudar de direção.
Se você definir direction e speed, pode deixar o step em branco.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
Valeu Saim, a dúvida 2 era algo muito simples e eu sequer pensei nisso, muito obrigado problema resolviso.
decidi que na duvida 1 vou permanecer usando apenas uma sprite com todas as direções
mas no caso a sprite fica pesada....pq faço 360 imagens...uma pra cada grau....nao sei como definir isso usando apenas as 8 sprites necessárias....
decidi que na duvida 1 vou permanecer usando apenas uma sprite com todas as direções
mas no caso a sprite fica pesada....pq faço 360 imagens...uma pra cada grau....nao sei como definir isso usando apenas as 8 sprites necessárias....
marcin_w_- Data de inscrição : 25/11/2012
Reputação : 4
Número de Mensagens : 90
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
Vou tentar explicar melhor o meu maior problema.
Eu tenho o objEnemy baseado num movimento de rotação 360º.
Porém ele não é uma sprite circular como a maioria dos jogos TDS, a sprite tem 360 imagens (gostaria que fossem só as 8 necessárias) apontando para (direita, esquerda, cima, baixo e diagonais).
O objEnemy aponta para o lado em q o player está.
1º possibilidade - Que me ajudem a criar um objEnemy que tenha sprites independentes para cada um dos 8 lados que aponta.
2º possibilidade - Caso não exista um jeito funcional de criar sprites independentes..como posso usar apenas 8 imagens ao invés das 360 na sprite do inimigo. ....
Eu tenho o objEnemy baseado num movimento de rotação 360º.
Porém ele não é uma sprite circular como a maioria dos jogos TDS, a sprite tem 360 imagens (gostaria que fossem só as 8 necessárias) apontando para (direita, esquerda, cima, baixo e diagonais).
O objEnemy aponta para o lado em q o player está.
1º possibilidade - Que me ajudem a criar um objEnemy que tenha sprites independentes para cada um dos 8 lados que aponta.
2º possibilidade - Caso não exista um jeito funcional de criar sprites independentes..como posso usar apenas 8 imagens ao invés das 360 na sprite do inimigo. ....
marcin_w_- Data de inscrição : 25/11/2012
Reputação : 4
Número de Mensagens : 90
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
Tente isso:
- Código:
angle=round(point_direction(x,y,mouse_x,mouse_y)/45)*45
image_speed=0
switch(angle){
case 0: image_index=0; break;
case 45: image_index=1; break;
case 90: image_index=2; break;
case 135: image_index=3; break;
case 180: image_index=4; break;
case 225: image_index=5; break;
case 270: image_index=6; break;
case 315: image_index=7; break;
default: ;break;
}
Re: [Resolvido]Movimentação inimigo 360º
Isaque funcionou perfeitamente!!!
Era um problema que estava me deixando louco!...valeuu!!
Mas como minha inexperiência sempre traz dúvidas....agora gostaria de saber como usar sprites animadas para cada direção...pro caso de quando o inimigo andar......tp umas 4 sprites pra cada uma das 8 direções com ele mechendo os pés....
Era um problema que estava me deixando louco!...valeuu!!
Mas como minha inexperiência sempre traz dúvidas....agora gostaria de saber como usar sprites animadas para cada direção...pro caso de quando o inimigo andar......tp umas 4 sprites pra cada uma das 8 direções com ele mechendo os pés....
marcin_w_- Data de inscrição : 25/11/2012
Reputação : 4
Número de Mensagens : 90
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
é só colocar ao invez de image index você colocar o sprite_index = nome do sprite
depois quando você for mover o enemy, player sei la, vc coloca:
pra mover: image_speed=1
pra parar: image_speed=0
acho que dá certo...
depois quando você for mover o enemy, player sei la, vc coloca:
pra mover: image_speed=1
pra parar: image_speed=0
acho que dá certo...
Re: [Resolvido]Movimentação inimigo 360º
Cara, você não tem noção do quanto vc facilitou meu projeto, não mecho muito aqui no fórum...mas se puder ajudar em algo é só pedir...valeu!
marcin_w_- Data de inscrição : 25/11/2012
Reputação : 4
Número de Mensagens : 90
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
de boua, precisando tamo aí, eu tive alguma facilidade porque tenho um projeto top-down que acho que dave ser tipo o seu... Zoombies... hehe
Flw, precisando..
Flw, precisando..
Re: [Resolvido]Movimentação inimigo 360º
Só um comentário no código do isaque...
Você notou que, em todos os casos, image_index é igual a "angle" / 45?
Outra coisa, o image_index pode usar valores não-inteiros, o que dispensa o uso de "floor".
É isso o que eu fazia no primeiro código que postei. Só que de forma mais direta.
O post dele ficou bem mais didático, mas o resultado é o mesmo.
Você notou que, em todos os casos, image_index é igual a "angle" / 45?
Outra coisa, o image_index pode usar valores não-inteiros, o que dispensa o uso de "floor".
É isso o que eu fazia no primeiro código que postei. Só que de forma mais direta.
O post dele ficou bem mais didático, mas o resultado é o mesmo.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
Sain sempre reparando nos minimos detalhes... (Não é uma critica!)
não percebi...
saim escreveu:Você notou que, em todos os casos, image_index é igual a "angle" / 45?
não percebi...
??saim escreveu:Outra coisa, o image_index pode usar valores não-inteiros, o que dispensa o uso de "floor".
valeu!saim escreveu:Só um comentário no código do isaque...
Re: [Resolvido]Movimentação inimigo 360º
É o seguinte... Você usou o floor porque precisa de valores inteiros pra usar o switch. Se a gente definir o image_index diretamente em função do ângulo, não vamos precisar de usar o switch, o que dispensa o uso do "floor".Isaque Onix escreveu:??saim escreveu:Outra coisa, o image_index pode usar valores não-inteiros, o que dispensa o uso de "floor".
Mas image_index também precisa de um valor inteiro, certo? Não. Se jogarmos uma conta e o resultado de image_index for 2.554413, a imagem na tela será a imagem 2 - exatamente a mesma que será apresentada COM o uso da função "floor". Com uma função a menos, a gente dá um refresco pro computador.
Por isso que eu disse que o meu primeiro código faz a mesma coisa que o seu. A gente pega o ângulo e reduz pro número de imagens da sprite. No final, o resultado é igual.
Nesse caso, não é importante dar esse refresco pro computador, o seu código é rápido o suficiente, mas é bom cultivar esse hábito de procurar soluções mais leves, desde que não se perca qualidade do jogo com elas.
Muitas vezes, a qualidade do jogo até diminui, mas de uma forma tão pequena que vale a pena.
Por exemplo, eu sei de uma séria de jogos muito famosa que começou aproveitando sprites dos inimigos pra compor cenários e itens, pra economizar espaço nos cartuchos. Num contexto completamente diferente, o jogador era capaz de jurar que não havia semelhança nenhuma, ali.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Resolvido]Movimentação inimigo 360º
agora eu intendi, na verdade eu uso o floor/round porque ainda não intendi a logica dessa sequencia: "Ex: round(X*32)/32" eu vi esse código aqui no fórum a muito tempo, mais não parei para estuda-lo, apenas o adaptei as minhas necessidades... mais agora que me toquei que o switch só lê números inteiros (puts)...
Valeu aê de novo!
Como o tópico ja foi resolvido, ele sera trancado.
Caso o autor deseje inserir mais alguma informação, contacte um moderador.
Att: CRP-Max.
Valeu aê de novo!
Como o tópico ja foi resolvido, ele sera trancado.
Caso o autor deseje inserir mais alguma informação, contacte um moderador.
Att: CRP-Max.
Tópicos semelhantes
» Movimentação 360º
» [AJUDA] Inimigo atirando em direções aleatorias (360º)
» [RESOLVIDO]Como fazer a room girar 360º continuamente?
» Movimentação do inimigo
» Ajuda com movimentação do inimigo??
» [AJUDA] Inimigo atirando em direções aleatorias (360º)
» [RESOLVIDO]Como fazer a room girar 360º continuamente?
» Movimentação do inimigo
» Ajuda com movimentação do inimigo??
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos