Entrar
Tópicos semelhantes
Procurar
Últimos assuntos
» Ideia: MMFMakers, do zeropor mediamaker Qua 26 maio 2021, 12:28
» [Flash] Haunt the house
por mediamaker Sáb 19 Set 2020, 16:47
» Como a criar passo a passo engine de Movimento Grid com colisão (tipo Bomberman) completo usadno extensão Array?
por mediamaker Sex 15 Set 2017, 14:19
» CF2.5 -> 26 reais na steam
por Matheus290 Ter 22 Dez 2015, 17:52
» Aplicação com Editbox não tá rodando online
por Matheus290 Sáb 19 Set 2015, 01:38
» A Guilda continua!!!! "Âncora Team" (novo nome)
por weliowl7 Qua 16 Set 2015, 01:52
» Sub-application e Inventario
por majorcorps Dom 23 Ago 2015, 13:11
» Efeito de string
por majorcorps Sáb 22 Ago 2015, 19:55
» [PC] Pitiri 1997
por Matheus290 Sáb 20 Jun 2015, 17:10
» Teclado virtual com Edit Box
por mediamaker Sáb 20 Jun 2015, 14:10
Quem está conectado?
Há 12 usuários online :: 0 registrados, 0 invisíveis e 12 visitantes Nenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 251 em Ter 26 Out 2021, 22:21
Estatísticas
Temos 256 usuários registradosO último membro registrado é Sitydistta
Os nossos membros postaram um total de 5268 mensagens em 575 assuntos
IA de um inimigo - parte 1 (tutorial por Hazael)
Fusion Makers :: Geral :: Matérias
Página 1 de 1
IA de um inimigo - parte 1 (tutorial por Hazael)
Bom, resolvi postar um tutorial que ensina a fazer uma IA básica, como de um goomba.
Você vai precisar de:
Você precisa entender:
Agora vamos aos eventos:
O primeiro evento vai fazer com que a posição X e Y do nosso inimigo seja baseada nos valores A e B dele, como no movimento customizado, e o segundo evento vai fazer com que ele comece a andar. Sem o segundo evento ele não andará, ou seja, ele ficará parado... pra sempre lol
Agora vamos fazer a gravidade:
O evento anterior agirá junto com esse para a gravidade ficar perfeita.
Agora vamos fazer ele parar quando encostar no chão:
Isso fará com que ele pare. Mas tem um bug. Aquele, que atravessa o chão, que nem no mov. custom! Aquela praga não larga do nosso pé, então é pra isso que temos o fast loop! Observe que eu zerei o valor C e B. Com isso, eu anulei totalmente a gravidade. Lembre-se de zerar os dois, senão vai estragar sua gravidade perfeita.
Terminamos a gravidade
Agora o movimento X
Primeiro observe a largura e onde se localiza o hot spot do seu inimigo. Por exemplo, o meu tem 18 pixels de largura e o hot spot fica nos 9 pixels de largura (no meio). Então, os lados do inimigo vão ser +10 e -10, pois ele tem 9 pixels pra cada lado (a partir do hot spot), e deve ser o quanto tem pra cada lado + ou - 1.
Se tivesse 40 de largura e o hot spot tivesse na posição 25, sobraria 25 pra esquerda e 15 pra direita, então os lados seriam -26 e +16 (- é esquerda e + é direita)
Agora vamos mecher com collision masks, lembrando de fazer como expliquei acima. Como disse antes, meu hot spot fica na posição 9 e meu inimigo tem 18 de largura. Como sobra 9 pixels pra cada lado (a partir do hot spot), os lados do inimigo no meu caso vão ser +10 e -10.
O primeiro é pra direita e o segundo é pra esquerda. O * (-1) é pro valor inverter e ele começar a caminhar pro outro lado. Se você não fizer direito, ele pode dar bug e seu inimigo vai sair subindo pelas paredes, então faça certo ou veja uma cena muito
Terminamos!
Espere, e as direções?
Isso, as direções. Elas estão aqui:
Ta aí, tudo explicadinho.
Se usar já sabe né? Créditos a hazael2, Silas, Skilo, Alves e Matheus29001.
hazael2 - Matéria
Silas - Collision masks
Skilo - Tutorial de movimento custom
Alves - Fast loops
Matheus29001 - Engine de movimento custom
Você vai precisar de:
- 3 alterable values
- 1 active pra ser o inimigo
- Backdrops
Você precisa entender:
- Movimento custom
- Hot spot
- Fast loops
- Collision masks
Agora vamos aos eventos:
Always >>
Set X position "inimigo" to X "inimigo" + alterable value A "inimigo"
Set Y position "inimigo" to Y "inimigo" + alterable value B "inimigo"
Start of frame >>
Set alterable value "inimigo" to 1
O primeiro evento vai fazer com que a posição X e Y do nosso inimigo seja baseada nos valores A e B dele, como no movimento customizado, e o segundo evento vai fazer com que ele comece a andar. Sem o segundo evento ele não andará, ou seja, ele ficará parado... pra sempre lol
Agora vamos fazer a gravidade:
Esse X é o negate, para fazê-lo clique com o botão direito no evento e selecione "negate". Esse evento vai fazer com que o contador de gravidade inicie.
X "inimigo" is overlapping a backdrop >>
Add 1 to alterable value C "inimigo"
+ Alterable value B "inimigo" < 8
Alterable value C "inimigo" = 3 >>
Set alterable value C "inimigo" to 0
Add 1 to alterable value B "inimigo"
O evento anterior agirá junto com esse para a gravidade ficar perfeita.
Agora vamos fazer ele parar quando encostar no chão:
"inimigo" is overlapping a backdrop >> Set alterable value C "inimigo" to 0
Set alterable value B "inimigo" to 0
Start loop "1" 50 times
Isso fará com que ele pare. Mas tem um bug. Aquele, que atravessa o chão, que nem no mov. custom! Aquela praga não larga do nosso pé, então é pra isso que temos o fast loop! Observe que eu zerei o valor C e B. Com isso, eu anulei totalmente a gravidade. Lembre-se de zerar os dois, senão vai estragar sua gravidade perfeita.
No evento anterior eu ativei o loop, e nesse daqui nós estamos utilizando o loop. Quando ele estiver encostando no chão, ele vai subir 1 pixel.
On loop "1" >>
Set Y position "inimigo" to Y "inimigo" - 1
+ "inimigo" is overlapping a backdrop
Terminamos a gravidade
Agora o movimento X
Primeiro observe a largura e onde se localiza o hot spot do seu inimigo. Por exemplo, o meu tem 18 pixels de largura e o hot spot fica nos 9 pixels de largura (no meio). Então, os lados do inimigo vão ser +10 e -10, pois ele tem 9 pixels pra cada lado (a partir do hot spot), e deve ser o quanto tem pra cada lado + ou - 1.
Se tivesse 40 de largura e o hot spot tivesse na posição 25, sobraria 25 pra esquerda e 15 pra direita, então os lados seriam -26 e +16 (- é esquerda e + é direita)
Agora vamos mecher com collision masks, lembrando de fazer como expliquei acima. Como disse antes, meu hot spot fica na posição 9 e meu inimigo tem 18 de largura. Como sobra 9 pixels pra cada lado (a partir do hot spot), os lados do inimigo no meu caso vão ser +10 e -10.
X "inimigo" + 10,Y "inimigo" is an obstacle >>
Set alterable value A "inimigo" to alterable value A "inimigo" * (-1)
X "inimigo" - 10,Y "inimigo" is an obstacle >>
Set alterable value A "inimigo" to alterable value A "inimigo" * (-1)
O primeiro é pra direita e o segundo é pra esquerda. O * (-1) é pro valor inverter e ele começar a caminhar pro outro lado. Se você não fizer direito, ele pode dar bug e seu inimigo vai sair subindo pelas paredes, então faça certo ou veja uma cena muito
Terminamos!
Espere, e as direções?
Isso, as direções. Elas estão aqui:
Alterable value A "inimigo" > 0 >>
Set direction to --->
Alterable value A "inimigo" < 0 >>
Set direction to <---
Ta aí, tudo explicadinho.
Se usar já sabe né? Créditos a hazael2, Silas, Skilo, Alves e Matheus29001.
hazael2 - Matéria
Silas - Collision masks
Skilo - Tutorial de movimento custom
Alves - Fast loops
Matheus29001 - Engine de movimento custom
Davimmf2- Usuário
- Mensagens : 155
Data de inscrição : 19/03/2014
Localização : Num planeta Muuuito distante, a 360 milhões de km da Terra: Marte
Tópicos semelhantes
» IA de um inimigo - Parte 3
» IA de um inimigo - Parte 2
» Como fazer que o Sonic destrua um inimigo com animação Falling e Jumping
» IA de um inimigo - Parte 2
» Como fazer que o Sonic destrua um inimigo com animação Falling e Jumping
Fusion Makers :: Geral :: Matérias
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|