so seguir quando ver
2 participantes
Página 1 de 1
so seguir quando ver
Galera queria saber como faz o seguinte, quando o inimigo tiver de costas para o player o inimigo não seguir o player so seguir se ele tiver de frente e claro,eu consegui fazer isso so uma vez,foi assim que comecei a criar jogos desde 2015 mas não me lembro muito bem :D.
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
Me ajudem por favor
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
Bom dia, usa o OnTriggerStay, assim o inimigo so segue se estiver dentro do collider.
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: so seguir quando ver
Obriagado,mas eu queria que quando tivesse uma parede na frente ele não var o player.
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
Tbm da mas tbm pode se usar o RayCastHit
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: so seguir quando ver
- Código:
#pragma strict
var Player : GameObject;
var AuxPlayer : Transform;
var DistanciaMin : float;
var DistanciaMed : float;
var DistanciaMax : float;
var DistanciaAle : float;
var Seguir = false;
var TMPS : float;
var TMPAT : float;
var Forca : float;
var Velocidade : float = 1.3;
var Rotacao : Quaternion;
var AuxRota : Vector3;
var OlharPlayer : boolean = false;
var ViuPlayer = false;
var Distancia : float;
var ScrIA : Will_IA;
var TempoParaSeguir : float;
var VidaAra = 100;
var ParaTraz : float;
var TempoParaAtacar : float;
function Start () {
Player.GetComponent.<Dialogos>().Falar = true;
Player.GetComponent.<Dialogos>().Falas = 1;
Player = GameObject.FindGameObjectWithTag("Player");
Player.transform.LookAt (gameObject.transform);
if (Seguir == false){
GetComponent.<Animation>().CrossFade("Raiva");
}
}
function Update () {
if (Seguir == false){
TempoParaSeguir += Time.deltaTime;
if (TempoParaSeguir >= TMPS){
Seguir = true;
}
}
if (Seguir == true){
Player = GameObject.FindGameObjectWithTag("Player");
AuxPlayer = Player.transform;
DistanciaMin = 0.5;
DistanciaMed = 1.5;
DistanciaMax = 1000;
GetComponent(UnityEngine.AI.NavMeshAgent).destination = AuxPlayer.position;
Debug.Log(GetComponent(UnityEngine.AI.NavMeshAgent).destination+" "+GetComponent(UnityEngine.AI.NavMeshAgent).pathStatus+" "+AuxPlayer.position);
Distancia = Vector3.Distance(transform.position,AuxPlayer.position);
AuxRota = transform.position - AuxPlayer.position;
if (OlharPlayer == true){
Rotacao = Quaternion.LookRotation(AuxRota);
transform.rotation.eulerAngles.y = Rotacao.eulerAngles.y -180;
}
if (Distancia <= DistanciaMin){
OlharPlayer = true;
gameObject.GetComponent(UnityEngine.AI.NavMeshAgent).enabled = false;
transform.Translate(0,0,-Velocidade*Time.deltaTime);
GetComponent.<Animation>().CrossFade("Andando");
} else
if (Distancia <= DistanciaMed){
OlharPlayer = true;
gameObject.GetComponent(UnityEngine.AI.NavMeshAgent).enabled = false;
GetComponent.<Animation>().CrossFade("Matando");
Destroy(Player);
} else
if (Distancia <= DistanciaMax){
OlharPlayer = false;
GetComponent.<Animation>().CrossFade("Andando");
gameObject.GetComponent(UnityEngine.AI.NavMeshAgent).enabled = true;
}
}
}
essa IA que eu uso da para você fazer um tutorial modificadando para min :D fazendo ele ver so quando o player tiver na frente do inimigo e quando tiver uma parede ele não ver o player.
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
Tenho este de um inimigo da uma olhada
- Código:
using System.Collections.Generic;
using UnityEngine;
public class LeaoController : MonoBehaviour {
private AudioSource som;
public bool voltando = false,vendoPlayer = false;
private Vector3 direcaoWay,direcaoJogador;
private int nextPoint;
private float distancia;
private GameObject jogador;
[SerializeField]private Transform visao;
[SerializeField]private Transform[] wayPoints;
[SerializeField]private float vida,vidaMax,velocidadeMove,velocidadeRotacao,distanciaOlhar,distanciaSeguir,distanciaAtacar;
[SerializeField]private float tempoRugido;
[SerializeField]private AudioClip rugido,seguindo;
void Start ()
{
som = GetComponent<AudioSource>();
vida = vidaMax;
jogador = GameObject.FindWithTag("Player1");
}
void Update ()
{
direcaoJogador = transform.position - jogador.transform.position;
distancia = Vector3.Distance(transform.position,jogador.transform.position);
VerPlayer();
if(!vendoPlayer)
{
Passear();
}
if(vendoPlayer && distancia <= distanciaOlhar)
{
Olhar();
}
if(vendoPlayer && distancia <= distanciaSeguir)
{
Seguir();
}
if(distancia<=distanciaAtacar)
{
Atacar();
}
}
void OnTriggerEnter(Collider col)
{
if(col.CompareTag("Player"))
Player_Controller.vida -=20;
}
public void Passear()
{
velocidadeMove = 1.8f;
velocidadeRotacao =1.5f;
transform.GetChild(0).GetComponent<Animator>().SetBool("run",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("atack",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("rugir",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("walk",true);
direcaoWay = transform.position - wayPoints[nextPoint].position;
transform.position = Vector3.MoveTowards(transform.position,wayPoints[nextPoint].position,velocidadeMove*Time.deltaTime);
if(direcaoWay != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoWay), velocidadeRotacao*Time.deltaTime);
}
if(nextPoint >= wayPoints.Length-1)
{
voltando = true;
}
if(transform.position == wayPoints[nextPoint].position && nextPoint < wayPoints.Length-1 && !voltando)
{
nextPoint++;
}
if(transform.position == wayPoints[nextPoint].position && voltando && nextPoint>0)
{
nextPoint--;
}
if(transform.position == wayPoints[0].position)
voltando = false;
}
public void Olhar()
{
transform.GetChild(0).GetComponent<Animator>().SetBool("walk",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("run",false);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoJogador), velocidadeRotacao*Time.deltaTime);
tempoRugido +=Time.deltaTime;
if(tempoRugido >=2)
{
if(!som.isPlaying)
{
som.PlayOneShot(rugido);
}
transform.GetChild(0).GetComponent<Animator>().SetBool("rugir",true);
tempoRugido =0;
}
}
public void Seguir()
{
velocidadeRotacao =3;
som.Stop();
velocidadeMove = 6;
transform.GetChild(0).GetComponent<Animator>().SetBool("run",true);
transform.GetChild(0).GetComponent<Animator>().SetBool("rugir",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("walk",false);
transform.position = Vector3.MoveTowards(transform.position,jogador.transform.position,velocidadeMove*Time.deltaTime);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoJogador), velocidadeRotacao*Time.deltaTime);
}
public void Atacar()
{
velocidadeRotacao =3;
transform.GetChild(0).GetComponent<Animator>().SetBool("atack",true);
transform.position = Vector3.MoveTowards(transform.position,jogador.transform.position,velocidadeMove*Time.deltaTime);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoJogador), velocidadeRotacao*Time.deltaTime);
}
public void VerPlayer()
{
RaycastHit hit;
if(Physics.Raycast(visao.position,visao.forward, out hit,50))
{
if(hit.collider.CompareTag("Player"))
{
vendoPlayer = true;
Debug.DrawLine(visao.position, hit.point);
}
else if(!hit.collider.CompareTag("Player"))
{
vendoPlayer = false;
}
}
}
}
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: so seguir quando ver
Vou testar aqui obriagado
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
Essa animação de Rugir e quando ele chega perto do player?Porque naquele minha IA quando o Inimigo chega perto do player ele finaliza matando o player e dar gameover,tipo no OutLast quando um inimigo pegava o player ele matava o player.Zecandy escreveu:Tenho este de um inimigo da uma olhada
- Código:
using System.Collections.Generic;
using UnityEngine;
public class LeaoController : MonoBehaviour {
private AudioSource som;
public bool voltando = false,vendoPlayer = false;
private Vector3 direcaoWay,direcaoJogador;
private int nextPoint;
private float distancia;
private GameObject jogador;
[SerializeField]private Transform visao;
[SerializeField]private Transform[] wayPoints;
[SerializeField]private float vida,vidaMax,velocidadeMove,velocidadeRotacao,distanciaOlhar,distanciaSeguir,distanciaAtacar;
[SerializeField]private float tempoRugido;
[SerializeField]private AudioClip rugido,seguindo;
void Start ()
{
som = GetComponent<AudioSource>();
vida = vidaMax;
jogador = GameObject.FindWithTag("Player1");
}
void Update ()
{
direcaoJogador = transform.position - jogador.transform.position;
distancia = Vector3.Distance(transform.position,jogador.transform.position);
VerPlayer();
if(!vendoPlayer)
{
Passear();
}
if(vendoPlayer && distancia <= distanciaOlhar)
{
Olhar();
}
if(vendoPlayer && distancia <= distanciaSeguir)
{
Seguir();
}
if(distancia<=distanciaAtacar)
{
Atacar();
}
}
void OnTriggerEnter(Collider col)
{
if(col.CompareTag("Player"))
Player_Controller.vida -=20;
}
public void Passear()
{
velocidadeMove = 1.8f;
velocidadeRotacao =1.5f;
transform.GetChild(0).GetComponent<Animator>().SetBool("run",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("atack",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("rugir",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("walk",true);
direcaoWay = transform.position - wayPoints[nextPoint].position;
transform.position = Vector3.MoveTowards(transform.position,wayPoints[nextPoint].position,velocidadeMove*Time.deltaTime);
if(direcaoWay != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoWay), velocidadeRotacao*Time.deltaTime);
}
if(nextPoint >= wayPoints.Length-1)
{
voltando = true;
}
if(transform.position == wayPoints[nextPoint].position && nextPoint < wayPoints.Length-1 && !voltando)
{
nextPoint++;
}
if(transform.position == wayPoints[nextPoint].position && voltando && nextPoint>0)
{
nextPoint--;
}
if(transform.position == wayPoints[0].position)
voltando = false;
}
public void Olhar()
{
transform.GetChild(0).GetComponent<Animator>().SetBool("walk",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("run",false);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoJogador), velocidadeRotacao*Time.deltaTime);
tempoRugido +=Time.deltaTime;
if(tempoRugido >=2)
{
if(!som.isPlaying)
{
som.PlayOneShot(rugido);
}
transform.GetChild(0).GetComponent<Animator>().SetBool("rugir",true);
tempoRugido =0;
}
}
public void Seguir()
{
velocidadeRotacao =3;
som.Stop();
velocidadeMove = 6;
transform.GetChild(0).GetComponent<Animator>().SetBool("run",true);
transform.GetChild(0).GetComponent<Animator>().SetBool("rugir",false);
transform.GetChild(0).GetComponent<Animator>().SetBool("walk",false);
transform.position = Vector3.MoveTowards(transform.position,jogador.transform.position,velocidadeMove*Time.deltaTime);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoJogador), velocidadeRotacao*Time.deltaTime);
}
public void Atacar()
{
velocidadeRotacao =3;
transform.GetChild(0).GetComponent<Animator>().SetBool("atack",true);
transform.position = Vector3.MoveTowards(transform.position,jogador.transform.position,velocidadeMove*Time.deltaTime);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direcaoJogador), velocidadeRotacao*Time.deltaTime);
}
public void VerPlayer()
{
RaycastHit hit;
if(Physics.Raycast(visao.position,visao.forward, out hit,50))
{
if(hit.collider.CompareTag("Player"))
{
vendoPlayer = true;
Debug.DrawLine(visao.position, hit.point);
}
else if(!hit.collider.CompareTag("Player"))
{
vendoPlayer = false;
}
}
}
}
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
A nao o rugido é de longe ele segue e ataca tbm;
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: so seguir quando ver
Acabei de ver a animação de ataque ali Desculpa kkkkkk.
Cara muito obrigado,mas vou testar mais tarde porque agora vou compilar e publicar meu Rpg que estou criando esta IA que lhe pedi e para o jogo de terror :affraid:
Cara muito obrigado,mas vou testar mais tarde porque agora vou compilar e publicar meu Rpg que estou criando esta IA que lhe pedi e para o jogo de terror :affraid:
MarceloYBP- Avançado
- PONTOS : 2911
REPUTAÇÃO : 33
Respeito as regras :
Re: so seguir quando ver
\Ok boa Sorte;
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Tópicos semelhantes
» Inimigo seguir quando ver o player
» Inimigo seguir só quando olharmos para ele.
» Fazer a camera seguir o personagem porem quando ela chegar na parede ela pare de se movimenta
» Unity2D - Como fazer a IA do inimigo patrulhar e quando chegar perto do player, seguir ele
» Trigger Abre a Porta quando Entra mas nao Fecha quando Sai!
» Inimigo seguir só quando olharmos para ele.
» Fazer a camera seguir o personagem porem quando ela chegar na parede ela pare de se movimenta
» Unity2D - Como fazer a IA do inimigo patrulhar e quando chegar perto do player, seguir ele
» Trigger Abre a Porta quando Entra mas nao Fecha quando Sai!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos