[RESOLVIDO] Enemy IA e Portas
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Enemy IA e Portas
Olá, estou desenvolvendo um jogo estilo Top-Down, e estou usando NavMesh no meu inimigo, porém no meu cenario possuo portas, meu inimigo atravessa a porta, eu queria saber um meio de fazer ele identificar a porta, e caso ele esteja patrulhando evitar ela, ou abrir e fechar ela, caso ele esteja perseguindo meu jogador, ele possa destruir a porta se estiver no caminho, obrigado pela atenção <3
Script do meu inimigo:
Script para interagir com a porta:
Script do meu inimigo:
- Código:
public class KillerIA : MonoBehaviour {
Animator anim;
public GameObject player;
public float hideDistance = 5;
private float distanciaDoJogador;
public float DistanciaDeObservacao = 30;
public float interactionDistance = 5f;
public GameObject GetPlayer() {
return player;
}
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
Vector3 targetDir = player.transform.position - transform.position;
float angle = Vector3.Angle (targetDir, transform.forward);
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraOnde = player.transform.position;
Vector3 direction = paraOnde - deOnde;
anim.SetFloat ("distance", Vector3.Distance (transform.position, player.transform.position));
if (anim.GetFloat ("distance") > hideDistance)
anim.SetBool ("hide", GameObject.Find ("Player").GetComponent<Controller> ().hide);
if (angle <= 90 && Physics.Raycast(transform.position, direction, out hit, 1000) && distanciaDoJogador < DistanciaDeObservacao && player.GetComponent<Controller>().hide == false) {
if (hit.collider.gameObject.CompareTag ("Player")) {
Debug.Log ("Can see you");
anim.SetBool ("canSee", true);
} else {
anim.SetBool ("canSee", false);
}
}
}
}
Script para interagir com a porta:
- Código:
public class Interaction : MonoBehaviour {
public float interactionDistance = 1f;
void Update () {
if (Input.GetKeyDown (KeyCode.E)) {
Ray ray = new Ray (transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast (ray, out hit, interactionDistance)) {
if (hit.collider.CompareTag ("Door")) {
Door doorScript = hit.collider.transform.parent.GetComponent<Door>();
if (doorScript == null) return;
if (Inventory.keys [doorScript.index] == true) {
doorScript.ChangeDoorState ();
Debug.Log ("Interagiu com a porta");
}
} else if(hit.collider.CompareTag("Key")) {
Debug.Log ("Coletou a chave");
Inventory.keys [hit.collider.GetComponent<Key> ().index] = true;
Destroy (hit.collider.gameObject);
}
}
}
}
}
Gwiisk- Membro
- PONTOS : 3264
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] Enemy IA e Portas
O que você pode fazer é um OnTriggerEnter, e caso seja o inimigo, ele faz uma animação de destruir a porta e da um Destroy no object... isto vai facilitar a sua vida.
Já se você quer fazer ele abrir a porta, ai vai complicar um pouco.
Já se você quer fazer ele abrir a porta, ai vai complicar um pouco.
Re: [RESOLVIDO] Enemy IA e Portas
Eu consegui fazer algo aqui, mas não consigo bloquear meu inimigo caso a porta esteja trancada, não consigo achar um jeito de setar areaMask para a navmesh ou algum outro jeito.MarcosSchultz escreveu:O que você pode fazer é um OnTriggerEnter, e caso seja o inimigo, ele faz uma animação de destruir a porta e da um Destroy no object... isto vai facilitar a sua vida.
Já se você quer fazer ele abrir a porta, ai vai complicar um pouco.
Gwiisk- Membro
- PONTOS : 3264
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] Enemy IA e Portas
De uma olhada nesse asset da Unity, do novo NavMeshSurface, onde você pode criar os caminhos ingame e colocar a porta como obstáculo:
https://github.com/Unity-Technologies/NavMeshComponents
https://github.com/Unity-Technologies/NavMeshComponents
Re: [RESOLVIDO] Enemy IA e Portas
Já Tentou usar NavMeshObstacle?Gwiisk escreveu:mas não consigo bloquear meu inimigo caso a porta esteja trancada, não consigo achar um jeito de setar areaMask para a navmesh ou algum outro jeito.
Tente pesquisar aqui no forum;
Já vi tópicos sobre o assunto;
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [RESOLVIDO] Enemy IA e Portas
Tentei sim, me virei ontem e consegui fazer funcionar, obrigado!Phph09 escreveu:Já Tentou usar NavMeshObstacle?Gwiisk escreveu:mas não consigo bloquear meu inimigo caso a porta esteja trancada, não consigo achar um jeito de setar areaMask para a navmesh ou algum outro jeito.
Tente pesquisar aqui no forum;
Já vi tópicos sobre o assunto;
Gwiisk- Membro
- PONTOS : 3264
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] Enemy IA e Portas
Poderia por gentileza mostrar-nos a solução, isso pode ajudar a outros... Abraços!
Re: [RESOLVIDO] Enemy IA e Portas
Eu adicionei um NavMesh Obstacle na minha porta, que caso esteja trancada deixa o componente ativado, quando eu destranco, automaticamente já desativa e habilida para meu inimigo pode passar por ela, e só coloquei um RayCast para ele identificar a porta e abrir ela ao entrar em um trigger que eu encaixei na portarecagonlei escreveu:Poderia por gentileza mostrar-nos a solução, isso pode ajudar a outros... Abraços!
Gwiisk- Membro
- PONTOS : 3264
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] Enemy IA e Portas
Obrigado por compartilhar... Tópico fechado e movido para a área resolvidos, caso o autor do tópico necessite, será reaberto!
Tópicos semelhantes
» [RESOLVIDO] Sistema de chaves para abrir portas
» TEM COMO EU ALMENTAR O TEMPO DO SOM DAS PORTAS (SISTEMA DE PORTAS)
» [RESOLVIDO]Software para abrir portas para o Unity
» Problemas com a AI/ENEMY
» Ajuda Enemy AI
» TEM COMO EU ALMENTAR O TEMPO DO SOM DAS PORTAS (SISTEMA DE PORTAS)
» [RESOLVIDO]Software para abrir portas para o Unity
» Problemas com a AI/ENEMY
» Ajuda Enemy AI
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos