Fusion Makers
Faça login para usufruir de todos nossos recursos. Ainda não tem uma conta? Inscreva-se já!

Participe do fórum, é rápido e fácil

Fusion Makers
Faça login para usufruir de todos nossos recursos. Ainda não tem uma conta? Inscreva-se já!
Fusion Makers
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Tópicos semelhantes
Procurar
 
 

Resultados por:
 


Rechercher Pesquisa avançada

Últimos assuntos
» Ideia: MMFMakers, do zero
por 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?
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 registrados
O ú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)

Ir para baixo

IA de um inimigo - parte 1 (tutorial por Hazael) Empty IA de um inimigo - parte 1 (tutorial por Hazael)

Mensagem por Davimmf2 Sáb 21 Jun 2014, 11:40

Bom, resolvi postar um tutorial que ensina a fazer uma IA básica, como de um goomba.

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:


X "inimigo" is overlapping a backdrop >>
Add 1 to alterable value C "inimigo"
+ Alterable value B "inimigo" < 8
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.


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.


On loop "1" >>
Set Y position "inimigo" to Y "inimigo" - 1
+ "inimigo" is overlapping a backdrop
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.

Terminamos a gravidade  Very Happy 

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

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos