[TUTORIAL] IA Simples
4 participantes
Página 1 de 1
[TUTORIAL] IA Simples
Eae galera.
Resolvi fazer um tutorial bem simples e rápido aqui para vocês.
Como ja esta no titulo vou ensinar a fazer uma ia simples de um inimigo.
Então Vamos la:
Primeira passo:
Vamos criar um terreno,depois coloque um FirstPersonalControler (Nosso Player) e crie um inimigo no meu caso o inimigo vai ser um cubo.
Segundo passo:
Crie uma script C#, essa é a script do inimigo IA.
Vamos criar 3 variáveis
Primeira coisa a fazer e setar um alvo para o inimigo e fazer ele mirar na direção dele;
Vamos usar um Quaternion para isso:
Crie uma variável tipo Transform com o nome alvo e uma tipo Quaternion:
Isso vai fazer nosso inimigo mirar no nosso player, mas ficaria melhor se agente limita-se o campo de visão dele, vamos fazer assim:
Crie uma variável: float campo;
Proto agora nosso inimigo só vai mirar no player se a distancia entre eles for menor que 10.
Terceiro passo:
Seguir o player.
vamos usar um AddRelativeForce, assim:
Crie uma variável: Rigidbody rb;
No Void Start vamos pegar o componente Rigidbody:
Dentro do nosso Void Update:
Script inteira:
Nossa IA ja pode mirar e seguir o player mas na segunda parte desse tutorial vamos fazer ela atirar também.
É isso galera espero que tenham gostado.
Referencias:
https://docs.unity3d.com/ScriptReference/Rigidbody.AddRelativeForce.html
https://docs.unity3d.com/ScriptReference/Rigidbody.html
https://docs.unity3d.com/ScriptReference/Quaternion.html
https://docs.unity3d.com/ScriptReference/Vector3.html
https://docs.unity3d.com/ScriptReference/Transform.html
Resolvi fazer um tutorial bem simples e rápido aqui para vocês.
Como ja esta no titulo vou ensinar a fazer uma ia simples de um inimigo.
Então Vamos la:
Primeira passo:
Vamos criar um terreno,depois coloque um FirstPersonalControler (Nosso Player) e crie um inimigo no meu caso o inimigo vai ser um cubo.
Segundo passo:
Crie uma script C#, essa é a script do inimigo IA.
Vamos criar 3 variáveis
- Código:
using UnityEngine;
using System.Collections;
public class Inimigo : MonoBehaviour {
public float vida;//Vida do inimigo
public float dano;//Dano do inimigo
public float velo;//Velocidade do inimigo
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Primeira coisa a fazer e setar um alvo para o inimigo e fazer ele mirar na direção dele;
Vamos usar um Quaternion para isso:
Crie uma variável tipo Transform com o nome alvo e uma tipo Quaternion:
- Código:
public Transform alvo;//Mira
Quaternion alvoroteition;
- Código:
void Update () {
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
}
Isso vai fazer nosso inimigo mirar no nosso player, mas ficaria melhor se agente limita-se o campo de visão dele, vamos fazer assim:
Crie uma variável: float campo;
- Código:
void Update () {
campo = Vector3.Distance (transform.position, alvo.transform.position);
//O inimigo vai atras do player se a distancia entre eles for menor que 10 e maior que 2
if(campo > 2 & campo < 10){
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
}
}
Proto agora nosso inimigo só vai mirar no player se a distancia entre eles for menor que 10.
Terceiro passo:
Seguir o player.
vamos usar um AddRelativeForce, assim:
Crie uma variável: Rigidbody rb;
No Void Start vamos pegar o componente Rigidbody:
- Código:
Rigidbody rb;
void Start(){
rb = GetComponent<Rigidbody> ();
}
Dentro do nosso Void Update:
- Código:
void Update () {
campo = Vector3.Distance (transform.position, alvo.transform.position);
//O inimigo vai atras do player se a distancia entre eles for menor que 10 e maior que 2
if(campo > 2 & campo < 10){
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
//isso vai fazer ele seguir o player
rb.AddRelativeForce(Vector3.forward * velo);
}
}
Script inteira:
- Código:
using UnityEngine;
using System.Collections;
public class Inimigo : MonoBehaviour {
public float vida;//Vida do inimigo
public float dano;//Dano do inimigo
public float velo;//Velocidade do inimigo
public Transform alvo;
Rigidbody rb;
Quaternion alvoroteition;
float campo;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody> ();
}
// Update is called once per frame
void Update () {
campo = Vector3.Distance (transform.position, alvo.transform.position);
//O inimigo vai atras do player se a distancia entre eles for menor que 10 e maior que 2
if(campo > 2 & campo < 10){
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
//isso vai fazer ele seguir o player
rb.AddRelativeForce(Vector3.forward * velo);
}
}
}
Nossa IA ja pode mirar e seguir o player mas na segunda parte desse tutorial vamos fazer ela atirar também.
É isso galera espero que tenham gostado.
Referencias:
https://docs.unity3d.com/ScriptReference/Rigidbody.AddRelativeForce.html
https://docs.unity3d.com/ScriptReference/Rigidbody.html
https://docs.unity3d.com/ScriptReference/Quaternion.html
https://docs.unity3d.com/ScriptReference/Vector3.html
https://docs.unity3d.com/ScriptReference/Transform.html
Zecandy- Mestre
- PONTOS : 3496
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: [TUTORIAL] IA Simples
Muito bem explicado, dá pra entender bem o que cada linha faz. Vou acompanhar e ver como usar no meu no meu jogo.
Re: [TUTORIAL] IA Simples
também tem esse vídeo!Matrirxp escreveu:Eae galera.
Resolvi fazer um tutorial bem simples e rápido aqui para vocês.
Como ja esta no titulo vou ensinar a fazer uma ia simples de um inimigo.
Então Vamos la:
Primeira passo:
Vamos criar um terreno,depois coloque um FirstPersonalControler (Nosso Player) e crie um inimigo no meu caso o inimigo vai ser um cubo.
Segundo passo:
Crie uma script C#, essa é a script do inimigo IA.
Vamos criar 3 variáveis
- Código:
using UnityEngine;
using System.Collections;
public class Inimigo : MonoBehaviour {
public float vida;//Vida do inimigo
public float dano;//Dano do inimigo
public float velo;//Velocidade do inimigo
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Primeira coisa a fazer e setar um alvo para o inimigo e fazer ele mirar na direção dele;
Vamos usar um Quaternion para isso:
Crie uma variável tipo Transform com o nome alvo e uma tipo Quaternion:agora no nosso Void update coloque:
- Código:
public Transform alvo;//Mira
Quaternion alvoroteition;
- Código:
void Update () {
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
}
Isso vai fazer nosso inimigo mirar no nosso player, mas ficaria melhor se agente limita-se o campo de visão dele, vamos fazer assim:
Crie uma variável: float campo;
- Código:
void Update () {
campo = Vector3.Distance (transform.position, alvo.transform.position);
//O inimigo vai atras do player se a distancia entre eles for menor que 10 e maior que 2
if(campo > 2 & campo < 10){
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
}
}
Proto agora nosso inimigo só vai mirar no player se a distancia entre eles for menor que 10.
Terceiro passo:
Seguir o player.
vamos usar um AddRelativeForce, assim:
Crie uma variável: Rigidbody rb;
No Void Start vamos pegar o componente Rigidbody:
- Código:
Rigidbody rb;
void Start(){
rb = GetComponent<Rigidbody> ();
}
Dentro do nosso Void Update:
- Código:
void Update () {
campo = Vector3.Distance (transform.position, alvo.transform.position);
//O inimigo vai atras do player se a distancia entre eles for menor que 10 e maior que 2
if(campo > 2 & campo < 10){
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
//isso vai fazer ele seguir o player
rb.AddRelativeForce(Vector3.forward * velo);
}
}
Script inteira:
- Código:
using UnityEngine;
using System.Collections;
public class Inimigo : MonoBehaviour {
public float vida;//Vida do inimigo
public float dano;//Dano do inimigo
public float velo;//Velocidade do inimigo
public Transform alvo;
Rigidbody rb;
Quaternion alvoroteition;
float campo;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody> ();
}
// Update is called once per frame
void Update () {
campo = Vector3.Distance (transform.position, alvo.transform.position);
//O inimigo vai atras do player se a distancia entre eles for menor que 10 e maior que 2
if(campo > 2 & campo < 10){
alvoroteition = Quaternion.LookRotation(alvo.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, alvoroteition , Time.deltaTime * 4);
//isso vai fazer ele seguir o player
rb.AddRelativeForce(Vector3.forward * velo);
}
}
}
Nossa IA ja pode mirar e seguir o player mas na segunda parte desse tutorial vamos fazer ela atirar também.
É isso galera espero que tenham gostado.
Referencias:
https://docs.unity3d.com/ScriptReference/Rigidbody.AddRelativeForce.html
https://docs.unity3d.com/ScriptReference/Rigidbody.html
https://docs.unity3d.com/ScriptReference/Quaternion.html
https://docs.unity3d.com/ScriptReference/Vector3.html
https://docs.unity3d.com/ScriptReference/Transform.html
Gabriel César O- Profissional
- PONTOS : 3976
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» [TUTORIAL] Sistema Simples de Falas
» [TUTORIAL] AI Points SIMPLES
» [TUTORIAL] Demolidor Simples
» [TUTORIAL] Lanterna Simples.
» [TUTORIAL] Sistema Simples de Falas
» [TUTORIAL] AI Points SIMPLES
» [TUTORIAL] Demolidor Simples
» [TUTORIAL] Lanterna Simples.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos