ANIMAÇÃO INIMIGO AI
5 participantes
Página 1 de 1
ANIMAÇÃO INIMIGO AI
Boa noite galera, estou com uma duvida e preciso muito de ajuda...
Recentemente vi um video do Marcos que ele coloca um AI inimigo que segue o personagem e ataca. Coloquei as linhas de código, porem meu inimigo não ataca, apenas anda...
Outra duvida é a seguinte, baixei um 3D na asset store de um humanoide, e estou tentando colocar uma serra elétrica e uma mascara nele, porem não consigo de jeito nenhum, a serra elétrica e a mascara não acompanham a animação... tem algum jeito de fazer com que elas acompanhem? mas da forma certa com o personagem segurando ela na mão ?
RESUMINDO: eu gostaria de um comando em que o inimigo andasse aleatoriamente pelo mapa e quando me visse, viesse correndo atras de mim para me atacar com a serra elétrica. O boneco 3D que eu baixei é esse
"Modern Zombie FREE"
estou tentando colocar uma mascara nele e uma serra elétrica, mas não consigo...
Se alguém puder me ajudar por favor !
Recentemente vi um video do Marcos que ele coloca um AI inimigo que segue o personagem e ataca. Coloquei as linhas de código, porem meu inimigo não ataca, apenas anda...
Outra duvida é a seguinte, baixei um 3D na asset store de um humanoide, e estou tentando colocar uma serra elétrica e uma mascara nele, porem não consigo de jeito nenhum, a serra elétrica e a mascara não acompanham a animação... tem algum jeito de fazer com que elas acompanhem? mas da forma certa com o personagem segurando ela na mão ?
RESUMINDO: eu gostaria de um comando em que o inimigo andasse aleatoriamente pelo mapa e quando me visse, viesse correndo atras de mim para me atacar com a serra elétrica. O boneco 3D que eu baixei é esse
"Modern Zombie FREE"
estou tentando colocar uma mascara nele e uma serra elétrica, mas não consigo...
Se alguém puder me ajudar por favor !
bertarele- Avançado
- PONTOS : 2922
REPUTAÇÃO : 30
Respeito as regras :
Re: ANIMAÇÃO INIMIGO AI
Saudações!
Vamos começar pela primeira duvida...
Poderia nos mostrar como está anexado as variáveis aí no seu inspector? Se puder mande um print. Muitas vezes esses erros são devidos a variáveis que não tem nada linkado ou foram linkadas com os objetos errados
Vamos começar pela primeira duvida...
Poderia nos mostrar como está anexado as variáveis aí no seu inspector? Se puder mande um print. Muitas vezes esses erros são devidos a variáveis que não tem nada linkado ou foram linkadas com os objetos errados
JohnRambo- Moderador
- PONTOS : 5174
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: ANIMAÇÃO INIMIGO AI
Olá a sua duvida:1-estou tentando colocar uma mascara nele e uma serra elétrica, mas não consigo...
R: é muito simples de resolver vc deve colocar a mascara no osso da cabeça este osso é responsavel por movel a mesh da cabeça, vc deve achar ele, e colocar a mascara dentro desse osso, e o mesmo da serra eletrica mas nesse caso vc deve colocar no osso da mão.
2- é complicado pakas velho, sugiro que vc se preocupe com outras coisas antes disso, pois a parte de ai envolve programação de peso, não é algo para iniciantes, faça primeiro outras coisas do seu game como o controle do personagem e tal abraço
R: é muito simples de resolver vc deve colocar a mascara no osso da cabeça este osso é responsavel por movel a mesh da cabeça, vc deve achar ele, e colocar a mascara dentro desse osso, e o mesmo da serra eletrica mas nesse caso vc deve colocar no osso da mão.
2- é complicado pakas velho, sugiro que vc se preocupe com outras coisas antes disso, pois a parte de ai envolve programação de peso, não é algo para iniciantes, faça primeiro outras coisas do seu game como o controle do personagem e tal abraço
Re: ANIMAÇÃO INIMIGO AI
Primeiro, eu crio uma capsula chamada " Inimigo " ai coloco uma NAVMESHAGENT nela e esse script...
using UnityEngine;
using System.Collections;
public class INTELIGENCIA2 : MonoBehaviour {
public Transform Player;
private UnityEngine.AI.NavMeshAgent naveMesh;
public float DistanciaDoPlayer, DistanciaDoAIPoint;
public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
private bool VendoOPlayer;
public Transform[] DestinosAleatorios;
private int AIPointAtual;
private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
public bool BPassear, BOlhar, BPerseguir, BAtacar;
void Start (){
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
naveMesh = transform.GetComponent<UnityEngine.AI.NavMeshAgent> ();
}
void Update (){
DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
//============================== RAYCAST ===================================//
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraOnde = Player.transform.position;
Vector3 direction = paraOnde - deOnde;
if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
if(hit.collider.gameObject.CompareTag("Player")){
VendoOPlayer = true;
}else{
VendoOPlayer = false;
}
}
//================ CHECHAGENS E DECISOES DO INIMIGO ================//
if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
PerseguindoAlgo = false;
BPassear = true;
Passear();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
if(VendoOPlayer == true){
BOlhar = true;
Olhar ();
}else{
BPassear = true;
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
if(VendoOPlayer == true){
BPerseguir = true;
Perseguir();
PerseguindoAlgo = true;
}else{
BPassear = true;
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
BAtacar = true;
Atacar();
}
//COMANDOS DE PASSEAR
if (DistanciaDoAIPoint <= 2) {
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
BPassear = true;
Passear();
}
//CONTADORES DE OLHAR
if (contadorOlhar == true) {
cronometroOlhar += Time.deltaTime;
}
if (cronometroOlhar >= 5 ) {
Perseguir();
}
if (cronometroOlhar >= 8 ) {
contadorOlhar = false;
cronometroOlhar = 0;
Perseguir();
}
//CONTADORES DE PERSEGUICAO
if (contadorPerseguindoAlgo == true) {
cronometroDaPerseguicao += Time.deltaTime;
}
if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
contadorPerseguindoAlgo = false;
cronometroDaPerseguicao = 0;
PerseguindoAlgo = false;
}
// Freio do ATAQUE
if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
naveMesh.destination = gameObject.transform.position;
}
// CONTADOR DE ATAQUE
if (atacandoAlgo == true) {
transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
cronometroAtaque += Time.deltaTime;
}
if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
atacandoAlgo = true;
cronometroAtaque = 0;
http://PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
Debug.Log ("recebeuAtaque");
} else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
atacandoAlgo = false;
cronometroAtaque = 0;
Debug.Log ("errou");
}
}
void Passear (){
BOlhar = false;
BPerseguir = false;
BAtacar = false;
if (PerseguindoAlgo == false) {
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
} else if (PerseguindoAlgo == true) {
contadorPerseguindoAlgo = true;
}
}
void Olhar(){
contadorOlhar = true;
BPassear = false;
BPerseguir = false;
BAtacar = false;
naveMesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
BPassear = false;
BOlhar = false;
BAtacar = false;
naveMesh.acceleration = 8;
naveMesh.speed = VelocidadeDePerseguicao;
naveMesh.destination = Player.position;
}
void Atacar (){
BPassear = false;
BOlhar = false;
BPerseguir = false;
atacandoAlgo = true;
}
}
depois disso eu coloco meu monstro dentro dela, e coloco esse script nele
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(AudioSource))]
public class AninINTELIGENCIA : MonoBehaviour {
public INTELIGENCIA2 Navgador;
public AudioClip Atacar, Olhar, Passear, Perseguir;
public bool AldioTocando;
public float AldioDuracao;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
AldioDuracao += Time.deltaTime;
if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
AldioTocando = false;
AldioDuracao = 0;
}
}//----------------------------------------------------------------------------------------------------
if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Atacar", true);
GetComponent<AudioSource> ().clip = Atacar;
GetComponent<AudioSource> ().PlayOneShot (Atacar);
} else {
GetComponent<Animator> ().SetBool ("Atacar", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Olhar", true);
if (GetComponent<AudioSource> ().clip != Olhar) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Olhar;
GetComponent<AudioSource> ().PlayOneShot (Olhar);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Olhar", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Passear", true);
if (GetComponent<AudioSource> ().clip != Passear) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Passear;
GetComponent<AudioSource> ().PlayOneShot (Passear);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Passear", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Perseguir", true);
if (GetComponent<AudioSource> ().clip != Perseguir) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Perseguir;
GetComponent<AudioSource> ().PlayOneShot (Perseguir);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Perseguir", false);
}//----------------------------------------------------------------------------------------------------
}
}
using UnityEngine;
using System.Collections;
public class INTELIGENCIA2 : MonoBehaviour {
public Transform Player;
private UnityEngine.AI.NavMeshAgent naveMesh;
public float DistanciaDoPlayer, DistanciaDoAIPoint;
public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
private bool VendoOPlayer;
public Transform[] DestinosAleatorios;
private int AIPointAtual;
private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
public bool BPassear, BOlhar, BPerseguir, BAtacar;
void Start (){
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
naveMesh = transform.GetComponent<UnityEngine.AI.NavMeshAgent> ();
}
void Update (){
DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
//============================== RAYCAST ===================================//
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraOnde = Player.transform.position;
Vector3 direction = paraOnde - deOnde;
if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
if(hit.collider.gameObject.CompareTag("Player")){
VendoOPlayer = true;
}else{
VendoOPlayer = false;
}
}
//================ CHECHAGENS E DECISOES DO INIMIGO ================//
if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
PerseguindoAlgo = false;
BPassear = true;
Passear();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
if(VendoOPlayer == true){
BOlhar = true;
Olhar ();
}else{
BPassear = true;
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
if(VendoOPlayer == true){
BPerseguir = true;
Perseguir();
PerseguindoAlgo = true;
}else{
BPassear = true;
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
BAtacar = true;
Atacar();
}
//COMANDOS DE PASSEAR
if (DistanciaDoAIPoint <= 2) {
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
BPassear = true;
Passear();
}
//CONTADORES DE OLHAR
if (contadorOlhar == true) {
cronometroOlhar += Time.deltaTime;
}
if (cronometroOlhar >= 5 ) {
Perseguir();
}
if (cronometroOlhar >= 8 ) {
contadorOlhar = false;
cronometroOlhar = 0;
Perseguir();
}
//CONTADORES DE PERSEGUICAO
if (contadorPerseguindoAlgo == true) {
cronometroDaPerseguicao += Time.deltaTime;
}
if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
contadorPerseguindoAlgo = false;
cronometroDaPerseguicao = 0;
PerseguindoAlgo = false;
}
// Freio do ATAQUE
if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
naveMesh.destination = gameObject.transform.position;
}
// CONTADOR DE ATAQUE
if (atacandoAlgo == true) {
transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
cronometroAtaque += Time.deltaTime;
}
if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
atacandoAlgo = true;
cronometroAtaque = 0;
http://PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
Debug.Log ("recebeuAtaque");
} else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
atacandoAlgo = false;
cronometroAtaque = 0;
Debug.Log ("errou");
}
}
void Passear (){
BOlhar = false;
BPerseguir = false;
BAtacar = false;
if (PerseguindoAlgo == false) {
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
} else if (PerseguindoAlgo == true) {
contadorPerseguindoAlgo = true;
}
}
void Olhar(){
contadorOlhar = true;
BPassear = false;
BPerseguir = false;
BAtacar = false;
naveMesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
BPassear = false;
BOlhar = false;
BAtacar = false;
naveMesh.acceleration = 8;
naveMesh.speed = VelocidadeDePerseguicao;
naveMesh.destination = Player.position;
}
void Atacar (){
BPassear = false;
BOlhar = false;
BPerseguir = false;
atacandoAlgo = true;
}
}
depois disso eu coloco meu monstro dentro dela, e coloco esse script nele
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(AudioSource))]
public class AninINTELIGENCIA : MonoBehaviour {
public INTELIGENCIA2 Navgador;
public AudioClip Atacar, Olhar, Passear, Perseguir;
public bool AldioTocando;
public float AldioDuracao;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
AldioDuracao += Time.deltaTime;
if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
AldioTocando = false;
AldioDuracao = 0;
}
}//----------------------------------------------------------------------------------------------------
if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Atacar", true);
GetComponent<AudioSource> ().clip = Atacar;
GetComponent<AudioSource> ().PlayOneShot (Atacar);
} else {
GetComponent<Animator> ().SetBool ("Atacar", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Olhar", true);
if (GetComponent<AudioSource> ().clip != Olhar) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Olhar;
GetComponent<AudioSource> ().PlayOneShot (Olhar);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Olhar", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Passear", true);
if (GetComponent<AudioSource> ().clip != Passear) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Passear;
GetComponent<AudioSource> ().PlayOneShot (Passear);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Passear", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Perseguir", true);
if (GetComponent<AudioSource> ().clip != Perseguir) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Perseguir;
GetComponent<AudioSource> ().PlayOneShot (Perseguir);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Perseguir", false);
}//----------------------------------------------------------------------------------------------------
}
}
bertarele- Avançado
- PONTOS : 2922
REPUTAÇÃO : 30
Respeito as regras :
Re: ANIMAÇÃO INIMIGO AI
Galera, consegui resolver em relação ao inimigo seguir o player ! ele esta seguindo porem tem alguns errinhos que preciso da ajuda de vocês...bertarele escreveu:Primeiro, eu crio uma capsula chamada " Inimigo " ai coloco uma NAVMESHAGENT nela e esse script...
using UnityEngine;
using System.Collections;
public class INTELIGENCIA2 : MonoBehaviour {
public Transform Player;
private UnityEngine.AI.NavMeshAgent naveMesh;
public float DistanciaDoPlayer, DistanciaDoAIPoint;
public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
private bool VendoOPlayer;
public Transform[] DestinosAleatorios;
private int AIPointAtual;
private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
public bool BPassear, BOlhar, BPerseguir, BAtacar;
void Start (){
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
naveMesh = transform.GetComponent<UnityEngine.AI.NavMeshAgent> ();
}
void Update (){
DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
//============================== RAYCAST ===================================//
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraOnde = Player.transform.position;
Vector3 direction = paraOnde - deOnde;
if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
if(hit.collider.gameObject.CompareTag("Player")){
VendoOPlayer = true;
}else{
VendoOPlayer = false;
}
}
//================ CHECHAGENS E DECISOES DO INIMIGO ================//
if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
PerseguindoAlgo = false;
BPassear = true;
Passear();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
if(VendoOPlayer == true){
BOlhar = true;
Olhar ();
}else{
BPassear = true;
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
if(VendoOPlayer == true){
BPerseguir = true;
Perseguir();
PerseguindoAlgo = true;
}else{
BPassear = true;
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
BAtacar = true;
Atacar();
}
//COMANDOS DE PASSEAR
if (DistanciaDoAIPoint <= 2) {
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
BPassear = true;
Passear();
}
//CONTADORES DE OLHAR
if (contadorOlhar == true) {
cronometroOlhar += Time.deltaTime;
}
if (cronometroOlhar >= 5 ) {
Perseguir();
}
if (cronometroOlhar >= 8 ) {
contadorOlhar = false;
cronometroOlhar = 0;
Perseguir();
}
//CONTADORES DE PERSEGUICAO
if (contadorPerseguindoAlgo == true) {
cronometroDaPerseguicao += Time.deltaTime;
}
if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
contadorPerseguindoAlgo = false;
cronometroDaPerseguicao = 0;
PerseguindoAlgo = false;
}
// Freio do ATAQUE
if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
naveMesh.destination = gameObject.transform.position;
}
// CONTADOR DE ATAQUE
if (atacandoAlgo == true) {
transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
cronometroAtaque += Time.deltaTime;
}
if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
atacandoAlgo = true;
cronometroAtaque = 0;
http://PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
Debug.Log ("recebeuAtaque");
} else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
atacandoAlgo = false;
cronometroAtaque = 0;
Debug.Log ("errou");
}
}
void Passear (){
BOlhar = false;
BPerseguir = false;
BAtacar = false;
if (PerseguindoAlgo == false) {
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
} else if (PerseguindoAlgo == true) {
contadorPerseguindoAlgo = true;
}
}
void Olhar(){
contadorOlhar = true;
BPassear = false;
BPerseguir = false;
BAtacar = false;
naveMesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
BPassear = false;
BOlhar = false;
BAtacar = false;
naveMesh.acceleration = 8;
naveMesh.speed = VelocidadeDePerseguicao;
naveMesh.destination = Player.position;
}
void Atacar (){
BPassear = false;
BOlhar = false;
BPerseguir = false;
atacandoAlgo = true;
}
}
depois disso eu coloco meu monstro dentro dela, e coloco esse script nele
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(AudioSource))]
public class AninINTELIGENCIA : MonoBehaviour {
public INTELIGENCIA2 Navgador;
public AudioClip Atacar, Olhar, Passear, Perseguir;
public bool AldioTocando;
public float AldioDuracao;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
AldioDuracao += Time.deltaTime;
if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
AldioTocando = false;
AldioDuracao = 0;
}
}//----------------------------------------------------------------------------------------------------
if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Atacar", true);
GetComponent<AudioSource> ().clip = Atacar;
GetComponent<AudioSource> ().PlayOneShot (Atacar);
} else {
GetComponent<Animator> ().SetBool ("Atacar", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Olhar", true);
if (GetComponent<AudioSource> ().clip != Olhar) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Olhar;
GetComponent<AudioSource> ().PlayOneShot (Olhar);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Olhar", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Passear", true);
if (GetComponent<AudioSource> ().clip != Passear) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Passear;
GetComponent<AudioSource> ().PlayOneShot (Passear);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Passear", false);
}//----------------------------------------------------------------------------------------------------
if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
GetComponent<Animator> ().SetBool ("Perseguir", true);
if (GetComponent<AudioSource> ().clip != Perseguir) {
AldioTocando = false;
AldioDuracao = 0;
Debug.Log ("Aldio Trocado");
}
if (AldioTocando == false) {
GetComponent<AudioSource> ().clip = Perseguir;
GetComponent<AudioSource> ().PlayOneShot (Perseguir);
AldioTocando = true;
}
} else {
GetComponent<Animator> ().SetBool ("Perseguir", false);
}//----------------------------------------------------------------------------------------------------
}
}
Seguinte:
1- independente do lugar que eu esteja, longe ou perto, ele segue... eu gostaria que ele seguisse apenas quando eu chegasse a uma determinada distancia.
2- Não estou conseguindo sincronizar a animação... são 4 tipos, ( Andando"inicial", Olhar, Perseguir e atacar ), ele apenas anda em direção ao player e quando chegar perto fica me rodando. Ele nao " Olha " nem "Persegue" e nem "Ataca"
vocês podem me ajudar por favor ! eu só preciso disso para terminar o jogo... Segue o Codigo...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class chase : MonoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction,this.transform.forward);
if (Vector3.Distance(player.position,this.transform.position) < 10 && angle < 30);
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp (this.transform.rotation,
Quaternion.LookRotation (direction), 0.1f);
anim.SetBool ("Passear", false);
if (direction.magnitude > 5) {
this.transform.Translate (0, 0, 0.5f);
anim.SetBool ("Perseguir", true);
anim.SetBool ("Atacar", false);
} else {
anim.SetBool ("Atacar", true);
anim.SetBool ("Perseguir", false);
}
} {
anim.SetBool ("Passear", true);
anim.SetBool ("Perseguir", false);
anim.SetBool ("Atacar", false);
}
}
}
Minha animator esta assim
Atacar
Passear Perseguir
Olhar
Todas ligadas umas nas outras,
- Passear para atacar ( Atacar = verdadeiro )
- Atacar para passear ( Passear = Verdadeiro )
- Passear para olhar ( Olhar = verdadeiro )
- Olhar para passear ( Passear = verdadeiro )
- Passear para perseguir ( perseguir = verdadeiro )
- Perseguir para passear (passear = verdadeiro )
- Olhar para perseguir (perseguir = verdadeiro)
- Perseguir para olhar ( olhar = verdadeiro)
- Atacar para Perseguir ( Perseguir = verdadeiro )
- Perseguir para atacar ( atacar = verdadeiro)
Não sei se deu para entender... preciso muito de ajuda nessa parte, estou a uns 4 dias parado por conta disso... se alguém puder me ajudar ficarei grato ! Obrigado.
bertarele- Avançado
- PONTOS : 2922
REPUTAÇÃO : 30
Respeito as regras :
Re: ANIMAÇÃO INIMIGO AI
- Código:
//1- Coloque os seus códigos sempre nessa caixa
Acredito que esteja faltando algumas transiçoes!
Qual é o problema?
Phph09- Profissional
- PONTOS : 3791
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: ANIMAÇÃO INIMIGO AI
Então cara é que o código eu copiei e colei de uma programadora americana... na verdade eu não entendo muito sobre o código... precisaria de um script para dar um jeito nisso...
bertarele- Avançado
- PONTOS : 2922
REPUTAÇÃO : 30
Respeito as regras :
Re: ANIMAÇÃO INIMIGO AI
Tudo verdadeiro? acho q tem umas que sao falsa e no meu caso o inimigo nao ta olhando e nem perseguindo só passeando e atacando :/
francisco barroso- Programador
- PONTOS : 2615
REPUTAÇÃO : 59
Respeito as regras :
Tópicos semelhantes
» Inimigo mudar de animação
» Animação de inimigo não funciona
» inimigo não anda após animação
» ANIMAÇÃO INIMIGO ESTÁ INDO PRA TUDO QUANTO É LADO
» Quando o inimigo ataca todos os inimigos ativam a animação
» Animação de inimigo não funciona
» inimigo não anda após animação
» ANIMAÇÃO INIMIGO ESTÁ INDO PRA TUDO QUANTO É LADO
» Quando o inimigo ataca todos os inimigos ativam a animação
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos