Entrar
Últimos assuntos
» Retorno da GMBR!!!por theguitarmester Ter 19 Mar 2024, 22:38
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05
» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55
» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39
» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28
» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01
[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
» Problema com Movimentação de Inimigo
» [AJUDA] Inimigo atirando em direções aleatorias (360º)
» [RESOLVIDO]Como fazer a room girar 360º continuamente?
» Movimentação do inimigo
» Problema com Movimentação de Inimigo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|