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

Esqueci minha senha

Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
1 usuário online :: Nenhum usuário registrado, Nenhum Invisível e 1 Visitante

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 65 em Sex 01 Abr 2016, 22:48
Estatísticas
Temos 255 usuários registrados
O último usuário registrado atende pelo nome de LuckN

Os nossos membros postaram um total de 5264 mensagens em 574 assuntos

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

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

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

Mensagem por Davimmf2 em Sab 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
avatar
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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum