SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Script para cubo aparecer
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
Duvida com Animacoes
VENHAM CONTEMPLAR CUBOID! E entrem para a equipe!
Formação de equipa para o Jogo Until the last
Modelagem do braço personagem Ajudem
Resolução De Tela x 2D Mobile Game
[TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera
[Alpha Android] - Night Hunter DevLog - Action RPG (25 de julho de 2017) Baixe!
(Avaliem) Menu interativo simples
Visual Stuido Duvida SIMPLES !! ME AJUDEM !! HELP
Cursos Para Areá da Informatica
Instanciar Objeto em Distancia Certa!
Eu não consigo abrir o monodevelop
Load e Save?
Gerador de mesh procedual
Erro ao alterar variável em tempo de execução !???
Baixe grátis modelos 3D - Hospital e personagens animados com expressão facial
[ENQUETE] Modelo com normal map e diferença - Aula de Bake
Perde vida e CheckPoint?
Como posso fazer para que o braço do meu personagem siga a minha câmera?
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Opiniões para carregar prefabs pesados: Resources, Asset Bundles ou cenas?
Inimigo Em C# Seguir e Atacar o Player !
Como coloco video do youtube
Audio Player C#
Algum tutorial sobre multiplayer simples é em portugues???
Meu jogo: Cuboid (v0.1.0)
VSync ??
Quanto custa $$$ ?
[dúvida] Editar um material individual.
Duvida com o Terrain da Unity5
[TUTORIAL] Unity 5 - Botão contínuo usando UI (Manter pressionado)
clicar com o botão direito do mouse em um BOTÃO
Vagas para o Naufrágio, um jogo sobrevivência que estou desenvolvendo
Ajuda para desenvolvimentos dos jogos de vocês
Como criar a mira de armas em personagens em terceira pessoa
Sistema de Trafego de Carros e Pedestres!
[RESOLVIDO] Braço esta desaparecendo alguem pode me dizer? vejam o video
[TUTORIAL] Barra de VIDA / HP contínua
inimigo atirar no player
Update desenvolvimento do meu jogo Epic Survival (Re Survival :D)
Como retornar "false" se um objeto não existir?
Como usar o script da unity "MouseLook" em outros scripts ?
Opinião sobre modelo feito no Blender
Como faz a geração de terreno aleatório???
[TUTORIAL] Camera orbital com zoom (scroll)
Bugs na textura
O que voces esperam em um jogo onde voce e um peixe???
[Equipe] Equipe para jogo tower defense low poly
COMO FAZER UM SISTEMA DE PARKOUR (SEM ANIMACAO) IDEIAS
Arrastar um botão ao manter o mouse pressionado
[DUVIDA]Como usar o setActive no photon
como reconhecer a ''face'' de uma mesh da agua
Diminuir a velocidade do veiculo Ativa um setActive
Oque acham dessa Meia Historia para meu jogo de sobrevivencia!
PESSOAL PRA VOCÊS OQUE TEM QUE TER EM UM JOGO DE SOBREVIVENCIA?
Duvidas sobre a criação de jogos para celular
Grupo de desenvolvimento no Discord
Ajuda em Script de colisao na unity
Dúvida de Botões mobile, no c#???
[RESOLVIDO] jogo buga a textura (manchas azuis e vermelhas)
ROTACIONAR NO ÂNGULO DO GAMEOBJECT
dúvida sobre resolução para mobile
[RESOLVIDO] CAMERA NÃO VISUALIZA LENS FLARE
Ajuda com scripts de inimigo e player'' interação de zumbi e player''
como abrir o app de email a partir de um jogo unity ?
[DÚVIDA] [2D] ALTERAR SPRITE SEM PRECISAR IMPORTAR DE NOVO
Script para Câmera em primeira pessoa.
[TUTORIAL] Luz Principal,Luz de Freio,Piscas para Carro,Moto,Caminhão,Ônibus,Etc...
Bug Unity ?
Criar Cidade Para Game
(DUVIDA)PlayerPrefs
[TUTORIAL] Suspensão de carro com SLIDER
[TUTORIAL] Script de arma automatica
[_____CRONOGRAMA DO CANAL_____]
Pulo 2D
Procurar um Índice em uma lista
Alguem me recomenda uma versao estavel e atualizada da unity :C
[dúvida] Comando tranform.rotatante.x não funcionando direito.
[tutorial]Teleporte com tempo.
Laser 2D
Procuro equipe para criar jogo multiplayer online de sobrevivência.
Script não detecta certos comandos como "Input" e "GetKeyDown"
Duvida com Transform.position
Rotação apontando para um Objeto.
MS Vehicles Free em vídeo de melhores assets
Marcos Elias Proton Bus Simulator AJUDA COM SISTEMA DE MAPA CONTÍNUO
Desativar Terrain
Sistema de corrida
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Como resolver
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Dúvidas Script
problemas com rb.velocity e gravidade
[TUTORIAL] Script de pulo para jogos 3D em geral (Unity - C#)
3D, Player gruda na parede
Como puxar várias animações ao mesmo tempo
[TUTORIAL] Camera orbital para android (TOUCH)
Hoje à(s) 7:27 am
Hoje à(s) 4:54 am
Hoje à(s) 1:58 am
Hoje à(s) 1:07 am
Hoje à(s) 12:05 am
Ontem à(s) 11:51 pm
Ontem à(s) 11:21 pm
Ontem à(s) 11:13 pm
Ontem à(s) 10:10 pm
Ontem à(s) 9:37 pm
Ontem à(s) 9:37 pm
Ontem à(s) 9:01 pm
Ontem à(s) 8:45 pm
Ontem à(s) 7:40 pm
Ontem à(s) 7:12 pm
Ontem à(s) 3:58 pm
Ontem à(s) 3:21 pm
Ontem à(s) 2:40 pm
Ontem à(s) 1:48 pm
Ontem à(s) 1:12 pm
Ontem à(s) 10:51 am
Ontem à(s) 10:12 am
Ontem à(s) 9:26 am
Ontem à(s) 8:27 am
Ontem à(s) 6:38 am
Ontem à(s) 2:42 am
Ontem à(s) 2:19 am
Seg Jul 24, 2017 11:25 pm
Seg Jul 24, 2017 10:51 pm
Seg Jul 24, 2017 10:49 pm
Seg Jul 24, 2017 10:04 pm
Seg Jul 24, 2017 9:53 pm
Seg Jul 24, 2017 9:28 pm
Seg Jul 24, 2017 9:09 pm
Seg Jul 24, 2017 9:00 pm
Seg Jul 24, 2017 8:54 pm
Seg Jul 24, 2017 8:12 pm
Seg Jul 24, 2017 8:11 pm
Seg Jul 24, 2017 5:04 pm
Seg Jul 24, 2017 4:50 pm
Seg Jul 24, 2017 2:20 pm
Seg Jul 24, 2017 2:09 pm
Seg Jul 24, 2017 12:54 pm
Seg Jul 24, 2017 11:15 am
Seg Jul 24, 2017 9:18 am
Dom Jul 23, 2017 10:16 pm
Dom Jul 23, 2017 9:02 pm
Dom Jul 23, 2017 7:53 pm
Dom Jul 23, 2017 5:36 pm
Dom Jul 23, 2017 5:34 pm
Dom Jul 23, 2017 4:14 pm
Dom Jul 23, 2017 2:52 pm
Dom Jul 23, 2017 12:00 pm
Dom Jul 23, 2017 10:51 am
Dom Jul 23, 2017 10:42 am
Dom Jul 23, 2017 5:35 am
Dom Jul 23, 2017 5:32 am
Dom Jul 23, 2017 5:30 am
Dom Jul 23, 2017 1:56 am
Sab Jul 22, 2017 11:48 pm
Sab Jul 22, 2017 11:30 pm
Sab Jul 22, 2017 9:42 pm
Sab Jul 22, 2017 8:31 pm
Sab Jul 22, 2017 7:30 pm
Sab Jul 22, 2017 7:19 pm
Sab Jul 22, 2017 4:05 pm
Sab Jul 22, 2017 3:04 pm
Sab Jul 22, 2017 2:35 pm
Sab Jul 22, 2017 12:54 pm
Sab Jul 22, 2017 11:10 am
Sab Jul 22, 2017 10:49 am
Sab Jul 22, 2017 9:53 am
Sab Jul 22, 2017 8:48 am
Sab Jul 22, 2017 6:19 am
Sab Jul 22, 2017 6:17 am
Sab Jul 22, 2017 3:51 am
Sab Jul 22, 2017 1:45 am
Sex Jul 21, 2017 11:57 pm
Sex Jul 21, 2017 11:33 pm
Sex Jul 21, 2017 10:37 pm
Sex Jul 21, 2017 10:33 pm
Sex Jul 21, 2017 10:24 pm
Sex Jul 21, 2017 9:29 pm
Sex Jul 21, 2017 9:25 pm
Sex Jul 21, 2017 9:17 pm
Sex Jul 21, 2017 9:15 pm
Sex Jul 21, 2017 9:08 pm
Sex Jul 21, 2017 9:07 pm
Sex Jul 21, 2017 9:00 pm
Sex Jul 21, 2017 8:57 pm
Sex Jul 21, 2017 8:52 pm
Sex Jul 21, 2017 8:49 pm
Sex Jul 21, 2017 8:47 pm
Sex Jul 21, 2017 8:38 pm
Sex Jul 21, 2017 8:29 pm
Sex Jul 21, 2017 8:24 pm
Sex Jul 21, 2017 8:23 pm
Sex Jul 21, 2017 8:03 pm
Sex Jul 21, 2017 7:19 pm
dstaroski
nilsonnolasco
rafaelllsd
NyanHeavyBR
Willian Wii
Yagogomes
marcos4503
marcos4503
marcos4503
zMicael
ManoTrevor
Duarte
Duarte
Édipo
Callyde Jr
Huser
hamerom
Zecandy
Yagogomes
Callyde Jr
GamersBR
glauco
marcos4503
Lyexe
Madness
thiagograssi
fecirineu
cody0033
Extreme Craft
julioou
Extreme Craft
marcos4503
Madness
Joaopm1
Onagro
arthearthutr
Willian Wii
Duarte
glauco
misael pinheiro
deikson
zMicael
Joaopm1
Gaimo
dstaroski
Madness
Gregory2017
Yagogomes
IanLuan
IanLuan
rafaelllsd
ManoTrevor
fecirineu
thzin
thzin
vermelhinho
vermelhinho
vermelhinho
dimmuo
Weverton Borges da Silva
hamerom
Extreme Craft
marcos4503
marcos4503
Diego Felix
Robinsandi
marcos4503
IanLuan
Gaimo
bitgames
sidney1234
Duarte
Zecandy
Gabriel César O
Gabriel César O
Joaopm1
roger224
Joaopm1
marcos4503
arthearthutr
arthearthutr
roger224
Gaimo
xXGianlucksXx
MarcosSchultz
Annko
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
thzin
Gabriel César O

[TUTORIAL] Script de um animal!!!

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

TUTORIAL [TUTORIAL] Script de um animal!!!

Mensagem por Matrirxp em Sex Abr 21, 2017 1:20 pm

Eae galera, hoje vou colocar uma script de um animal que come,ataca,anda e morre por dano.
Ta tudo explicado na script, e só olhar:


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IAanimal : MonoBehaviour {


 /* Configuração:
 * Coloque seu animal na variavel "Animal" e seu player na variavel "Player".
 * Crie um GameObject Empty para ser a referencia e coloque ele na variavel "Referencial".
 * Troque os valores das variaveis publicas para o valor que quiser.
 * E PRONTO !!!
 */

 public GameObject Player;//Jogador.
 public GameObject Animal;//Animal.
 float campo;//Distancia.
 float Delay;//Delay para trocar o referencial de posição.
 float cdelay;
 public float velo;//Velocidade do animal.
 public float velocorrer;//Velocidade do animal correndo.
 public float vida;//Vida do animal.

 Quaternion alvoroteition;//Rotação do Referencial.
 Rigidbody rb;//Rigidbody do animal.

 bool Ataque;//Atacar
 public float DelayAtaque;//Delay para parar de atacar.
 float cdelayAtaque;

 Vector3 position;

 public GameObject Referencial;//GameObject Empty para determinar para onde o animal deve ir.
 bool indo;
 bool indoataque;
 Vector3 posi;
 bool fugir;

 float DelayComer;
 float cdelayComer;
 bool indoComer;

 float fome = 100;

 void Start(){

 rb = Animal.GetComponent<Rigidbody> ();//Pegar Rigidbody.

 posi.x = 30f + Animal.transform.position.x;
 posi.z = 30f + Animal.transform.position.z;

 position = posi + Random.insideUnitSphere * 42; //Mandar Referencial para uma posição random.

 position.y = Animal.transform.position.y;//Para manter o animal no chão.

 Referencial.transform.position = position;//Mudar posição do referencial.

 indo = true;

 Delay = Random.Range (70,120);//Dar um valor random para o delay.

 }

 void Update(){

 campo = Vector3.Distance (Animal.transform.position, Player.transform.position);//Distancia entre o animal e o player.

 posi.x = 30f + Animal.transform.position.x;
 posi.z = 30f + Animal.transform.position.z;

 if (Ataque == false) {

 if (indo == true) {

 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velo);//Seguir o referencial.

 fome -= 0.1f * Time.deltaTime;

 }

 if (fugir == false) {
 cdelay += 1 * Time.deltaTime;
 if (cdelay >= Delay) {

 position = posi + Random.insideUnitSphere * 42;//Mandar Referencial para uma posição random.

 position.y = Animal.transform.position.y;//Para manter o animal no chão.

 Referencial.transform.position = position;//Mudar posição do referencial.


 cdelay = 0;
 indo = true;
 Delay = Random.Range (70,120);//Dar um valor random para o delay
 }
 }
 }

 float distVolta = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distVolta <  {  //Se a distancia entre o referencial e o animal for menor que 8 indo = false.
 indo = false;
 }


 //Comer
 if(indo == false && fugir == false && Ataque == false){

 DelayComer = Random.Range (10,30);//Dar um valor random para o delay.

 float distComer = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distComer < 2) {  //Se a distancia entre o referencial e o animal for menor que 8 indo = false.
 indoComer = false;
 }

 if(indoComer == true){
 //Ir Para o referencial
 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velo);//Seguir o referencial.
 }


 cdelayComer += 1 * Time.deltaTime;
 if (cdelayComer >= DelayComer) {

 position = Animal.transform.position + Random.insideUnitSphere * 10; //Mandar Referencial para uma posição random.

 position.y = Animal.transform.position.y;//Para manter o animal no chão.

 Referencial.transform.position = position;//Mudar posição do referencial.


 cdelayComer = 0;
 indoComer = true;
 }

 //Aumentar fome.
 if(fome <= 100){
 fome += 0.4f * Time.deltaTime;
 }


 }




 if(Ataque == true){
 atacar(); //Atacar!!!

 float distAtaque = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distAtaque < 2) { //Se a distancia entre o referencial e o animal for menor que 2 indoataque = false.
 indoataque = false;
 } 
 if (distAtaque > 2) { //Se a distancia entre o referencial e o animal for maior que 2 indoataque = true.
 indoataque = true;
 }

 }


 float a = vida / 2;//Metade da vida.
 if(vida <= a){ // fugir se a vida estiver na metade.
 fugir = true;
 Ataque = false;
 fuga();//Fugir!!! 
 }


 if(vida <= 0){
 Destroy (Animal);//Se a vida for menor ou igual a 0 o objeto e destroido.
 }


 //Aumentar vida
 if(vida <= 100 && fome == 100){
 vida += 0.3f * Time.deltaTime;
 }

 }


 void OnCollisionEnter(Collision col){
 if(col.gameObject.tag == "Objeto"){ //Troque Objeto pela tag do objeto que o player ira jogar nele.
 Ataque = true;//Atacar Player.
 vida -= 10f;//Dano do player.
 }

 }

 void fuga(){ // Fugir.

 Vector3 LongePlayer;// Posição longe do player.
 LongePlayer.x = 60f + Player.transform.position.x; 
 LongePlayer.z = 60f + Player.transform.position.y;

 Vector3 fugaposi = new Vector3 (Random.Range(LongePlayer.x, LongePlayer.x + 20f),Animal.transform.position.y,Random.Range(LongePlayer.z,LongePlayer.z + 20f));

 Referencial.transform.position = fugaposi;//Determinar uma posição random longe do player.

 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velocorrer);//Seguir o referencial.

 fome -= 0.6f * Time.deltaTime;

 float distVolta = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distVolta <  { //se a distancia entre o animal e o referencial for menor que 8 fugir false.
 fugir = false;
 }


 }

 void atacar(){

 if(indoataque == true){

 position = Player.transform.position;
 Referencial.transform.position = position;

 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velocorrer);//Seguir o referencial.


 fome -= 0.4f * Time.deltaTime;
 }

 cdelayAtaque += 1 * Time.deltaTime;
 if (cdelayAtaque >= DelayAtaque) {
 cdelay = 0;
 Ataque = false;
 indoataque = false;

 //Ir para o referencial.
 // Fazer ele agir normalmente.
 position = posi + Random.insideUnitSphere * 42;//Gerar posição random.

 position.y = Animal.transform.position.y; //Para manter o animal no chão.

 Referencial.transform.position = position; // Mudar posição do referencial.

 indo = true;

 }

 }



}


avatar
Matrirxp
Programador

Masculino PONTOS : 583
REPUTAÇÃO : 58
Idade : 15
Áreas de atuação : Unity: Programação JavaScript e C#.
Programação: Python, C++, Java, HTML .

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Script de um animal!!!

Mensagem por dstaroski em Sex Abr 21, 2017 1:24 pm

Matrirxp escreveu:Eae galera, hoje vou colocar uma script de um animal que come,ataca,anda e morre por dano.
Ta tudo explicado na script, e só olhar:


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IAanimal : MonoBehaviour {


 /* Configuração:
 * Coloque seu animal na variavel "Animal" e seu player na variavel "Player".
 * Crie um GameObject Empty para ser a referencia e coloque ele na variavel "Referencial".
 * Troque os valores das variaveis publicas para o valor que quiser.
 * E PRONTO !!!
 */

 public GameObject Player;//Jogador.
 public GameObject Animal;//Animal.
 float campo;//Distancia.
 float Delay;//Delay para trocar o referencial de posição.
 float cdelay;
 public float velo;//Velocidade do animal.
 public float velocorrer;//Velocidade do animal correndo.
 public float vida;//Vida do animal.

 Quaternion alvoroteition;//Rotação do Referencial.
 Rigidbody rb;//Rigidbody do animal.

 bool Ataque;//Atacar
 public float DelayAtaque;//Delay para parar de atacar.
 float cdelayAtaque;

 Vector3 position;

 public GameObject Referencial;//GameObject Empty para determinar para onde o animal deve ir.
 bool indo;
 bool indoataque;
 Vector3 posi;
 bool fugir;

 float DelayComer;
 float cdelayComer;
 bool indoComer;

 float fome = 100;

 void Start(){

 rb = Animal.GetComponent<Rigidbody> ();//Pegar Rigidbody.

 posi.x = 30f + Animal.transform.position.x;
 posi.z = 30f + Animal.transform.position.z;

 position = posi + Random.insideUnitSphere * 42; //Mandar Referencial para uma posição random.

 position.y = Animal.transform.position.y;//Para manter o animal no chão.

 Referencial.transform.position = position;//Mudar posição do referencial.

 indo = true;

 Delay = Random.Range (70,120);//Dar um valor random para o delay.

 }

 void Update(){

 campo = Vector3.Distance (Animal.transform.position, Player.transform.position);//Distancia entre o animal e o player.

 posi.x = 30f + Animal.transform.position.x;
 posi.z = 30f + Animal.transform.position.z;

 if (Ataque == false) {

 if (indo == true) {

 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velo);//Seguir o referencial.

 fome -= 0.1f * Time.deltaTime;

 }

 if (fugir == false) {
 cdelay += 1 * Time.deltaTime;
 if (cdelay >= Delay) {

 position = posi + Random.insideUnitSphere * 42;//Mandar Referencial para uma posição random.

 position.y = Animal.transform.position.y;//Para manter o animal no chão.

 Referencial.transform.position = position;//Mudar posição do referencial.


 cdelay = 0;
 indo = true;
 Delay = Random.Range (70,120);//Dar um valor random para o delay
 }
 }
 }

 float distVolta = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distVolta <  {  //Se a distancia entre o referencial e o animal for menor que 8 indo = false.
 indo = false;
 }


 //Comer
 if(indo == false && fugir == false && Ataque == false){

 DelayComer = Random.Range (10,30);//Dar um valor random para o delay.

 float distComer = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distComer < 2) {  //Se a distancia entre o referencial e o animal for menor que 8 indo = false.
 indoComer = false;
 }

 if(indoComer == true){
 //Ir Para o referencial
 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velo);//Seguir o referencial.
 }


 cdelayComer += 1 * Time.deltaTime;
 if (cdelayComer >= DelayComer) {

 position = Animal.transform.position + Random.insideUnitSphere * 10; //Mandar Referencial para uma posição random.

 position.y = Animal.transform.position.y;//Para manter o animal no chão.

 Referencial.transform.position = position;//Mudar posição do referencial.


 cdelayComer = 0;
 indoComer = true;
 }

 //Aumentar fome.
 if(fome <= 100){
 fome += 0.4f * Time.deltaTime;
 }


 }




 if(Ataque == true){
 atacar(); //Atacar!!!

 float distAtaque = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distAtaque < 2) { //Se a distancia entre o referencial e o animal for menor que 2 indoataque = false.
 indoataque = false;
 } 
 if (distAtaque > 2) { //Se a distancia entre o referencial e o animal for maior que 2 indoataque = true.
 indoataque = true;
 }

 }


 float a = vida / 2;//Metade da vida.
 if(vida <= a){ // fugir se a vida estiver na metade.
 fugir = true;
 Ataque = false;
 fuga();//Fugir!!! 
 }


 if(vida <= 0){
 Destroy (Animal);//Se a vida for menor ou igual a 0 o objeto e destroido.
 }


 //Aumentar vida
 if(vida <= 100 && fome == 100){
 vida += 0.3f * Time.deltaTime;
 }

 }


 void OnCollisionEnter(Collision col){
 if(col.gameObject.tag == "Objeto"){ //Troque Objeto pela tag do objeto que o player ira jogar nele.
 Ataque = true;//Atacar Player.
 vida -= 10f;//Dano do player.
 }

 }

 void fuga(){ // Fugir.

 Vector3 LongePlayer;// Posição longe do player.
 LongePlayer.x = 60f + Player.transform.position.x; 
 LongePlayer.z = 60f + Player.transform.position.y;

 Vector3 fugaposi = new Vector3 (Random.Range(LongePlayer.x, LongePlayer.x + 20f),Animal.transform.position.y,Random.Range(LongePlayer.z,LongePlayer.z + 20f));

 Referencial.transform.position = fugaposi;//Determinar uma posição random longe do player.

 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velocorrer);//Seguir o referencial.

 fome -= 0.6f * Time.deltaTime;

 float distVolta = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
 if (distVolta <  { //se a distancia entre o animal e o referencial for menor que 8 fugir false.
 fugir = false;
 }


 }

 void atacar(){

 if(indoataque == true){

 position = Player.transform.position;
 Referencial.transform.position = position;

 alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
 Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

 rb.AddRelativeForce (Vector3.forward * velocorrer);//Seguir o referencial.


 fome -= 0.4f * Time.deltaTime;
 }

 cdelayAtaque += 1 * Time.deltaTime;
 if (cdelayAtaque >= DelayAtaque) {
 cdelay = 0;
 Ataque = false;
 indoataque = false;

 //Ir para o referencial.
 // Fazer ele agir normalmente.
 position = posi + Random.insideUnitSphere * 42;//Gerar posição random.

 position.y = Animal.transform.position.y; //Para manter o animal no chão.

 Referencial.transform.position = position; // Mudar posição do referencial.

 indo = true;

 }

 }



}


Parabéns cara! Excelente!
avatar
dstaroski
Instrutor

Masculino PONTOS : 1722
REPUTAÇÃO : 455
Idade : 28
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Daz3D and Gimp

Respeito as regras :

Ver perfil do usuário https://www.daz3d.com/gallery/users/1575361

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Script de um animal!!!

Mensagem por zZAndersonZz em Sex Abr 21, 2017 1:41 pm

Matrirxp escreveu:Eae galera, hoje vou colocar uma script de um animal que come,ataca,anda e morre por dano.
Ta tudo explicado na script, e só olhar:
Code:




[list=linenums]
[*]using System.Collections;
[*]using System.Collections.Generic;
[*]using UnityEngine;

[*]public class IAanimal : MonoBehaviour {


[*] /* Configuração:
[*] * Coloque seu animal na variavel "Animal" e seu player na variavel "Player".
[*] * Crie um GameObject Empty para ser a referencia e coloque ele na variavel "Referencial".
[*] * Troque os valores das variaveis publicas para o valor que quiser.
[*] * E PRONTO !!!
[*] */

[*] public GameObject Player;//Jogador.
[*] public GameObject Animal;//Animal.
[*] float campo;//Distancia.
[*] float Delay;//Delay para trocar o referencial de posição.
[*] float cdelay;
[*] public float velo;//Velocidade do animal.
[*] public float velocorrer;//Velocidade do animal correndo.
[*] public float vida;//Vida do animal.

[*] Quaternion alvoroteition;//Rotação do Referencial.
[*] Rigidbody rb;//Rigidbody do animal.

[*] bool Ataque;//Atacar
[*] public float DelayAtaque;//Delay para parar de atacar.
[*] float cdelayAtaque;

[*] Vector3 position;

[*] public GameObject Referencial;//GameObject Empty para determinar para onde o animal deve ir.
[*] bool indo;
[*] bool indoataque;
[*] Vector3 posi;
[*] bool fugir;

[*] float DelayComer;
[*] float cdelayComer;
[*] bool indoComer;

[*] float fome = 100;

[*] void Start(){

[*] rb = Animal.GetComponent ();//Pegar Rigidbody.

[*] posi.x = 30f + Animal.transform.position.x;
[*] posi.z = 30f + Animal.transform.position.z;

[*] position = posi + Random.insideUnitSphere * 42; //Mandar Referencial para uma posição random.

[*] position.y = Animal.transform.position.y;//Para manter o animal no chão.

[*] Referencial.transform.position = position;//Mudar posição do referencial.

[*] indo = true;

[*] Delay = Random.Range (70,120);//Dar um valor random para o delay.

[*] }

[*] void Update(){

[*] campo = Vector3.Distance (Animal.transform.position, Player.transform.position);//Distancia entre o animal e o player.

[*] posi.x = 30f + Animal.transform.position.x;
[*] posi.z = 30f + Animal.transform.position.z;

[*] if (Ataque == false) {

[*] if (indo == true) {

[*] alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
[*] Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

[*] rb.AddRelativeForce (Vector3.forward * velo);//Seguir o referencial.

[*] fome -= 0.1f * Time.deltaTime;

[*] }

[*] if (fugir == false) {
[*] cdelay += 1 * Time.deltaTime;
[*] if (cdelay >= Delay) {

[*] position = posi + Random.insideUnitSphere * 42;//Mandar Referencial para uma posição random.

[*] position.y = Animal.transform.position.y;//Para manter o animal no chão.

[*] Referencial.transform.position = position;//Mudar posição do referencial.


[*] cdelay = 0;
[*] indo = true;
[*] Delay = Random.Range (70,120);//Dar um valor random para o delay
[*] }
[*] }
[*] }

[*] float distVolta = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
[*] if (distVolta <  {  //Se a distancia entre o referencial e o animal for menor que 8 indo = false.
[*] indo = false;
[*] }


[*] //Comer
[*] if(indo == false && fugir == false && Ataque == false){

[*] DelayComer = Random.Range (10,30);//Dar um valor random para o delay.

[*] float distComer = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
[*] if (distComer < 2) {  //Se a distancia entre o referencial e o animal for menor que 8 indo = false.
[*] indoComer = false;
[*] }

[*] if(indoComer == true){
[*] //Ir Para o referencial
[*] alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
[*] Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

[*] rb.AddRelativeForce (Vector3.forward * velo);//Seguir o referencial.
[*] }


[*] cdelayComer += 1 * Time.deltaTime;
[*] if (cdelayComer >= DelayComer) {

[*] position = Animal.transform.position + Random.insideUnitSphere * 10; //Mandar Referencial para uma posição random.

[*] position.y = Animal.transform.position.y;//Para manter o animal no chão.

[*] Referencial.transform.position = position;//Mudar posição do referencial.


[*] cdelayComer = 0;
[*] indoComer = true;
[*] }

[*] //Aumentar fome.
[*] if(fome <= 100){
[*] fome += 0.4f * Time.deltaTime;
[*] }


[*] }




[*] if(Ataque == true){
[*] atacar(); //Atacar!!!

[*] float distAtaque = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
[*] if (distAtaque < 2) { //Se a distancia entre o referencial e o animal for menor que 2 indoataque = false.
[*] indoataque = false;
[*] }
[*] if (distAtaque > 2) { //Se a distancia entre o referencial e o animal for maior que 2 indoataque = true.
[*] indoataque = true;
[*] }

[*] }


[*] float a = vida / 2;//Metade da vida.
[*] if(vida <= a){ // fugir se a vida estiver na metade.
[*] fugir = true;
[*] Ataque = false;
[*] fuga();//Fugir!!!
[*] }


[*] if(vida <= 0){
[*] Destroy (Animal);//Se a vida for menor ou igual a 0 o objeto e destroido.
[*] }


[*] //Aumentar vida
[*] if(vida <= 100 && fome == 100){
[*] vida += 0.3f * Time.deltaTime;
[*] }

[*] }


[*] void OnCollisionEnter(Collision col){
[*] if(col.gameObject.tag == "Objeto"){ //Troque Objeto pela tag do objeto que o player ira jogar nele.
[*] Ataque = true;//Atacar Player.
[*] vida -= 10f;//Dano do player.
[*] }

[*] }

[*] void fuga(){ // Fugir.

[*] Vector3 LongePlayer;// Posição longe do player.
[*] LongePlayer.x = 60f + Player.transform.position.x;
[*] LongePlayer.z = 60f + Player.transform.position.y;

[*] Vector3 fugaposi = new Vector3 (Random.Range(LongePlayer.x, LongePlayer.x + 20f),Animal.transform.position.y,Random.Range(LongePlayer.z,LongePlayer.z + 20f));

[*] Referencial.transform.position = fugaposi;//Determinar uma posição random longe do player.

[*] alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
[*] Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

[*] rb.AddRelativeForce (Vector3.forward * velocorrer);//Seguir o referencial.

[*] fome -= 0.6f * Time.deltaTime;

[*] float distVolta = Vector3.Distance(Referencial.transform.position, Animal.transform.position);//Distancia entre o referencial e o animal.
[*] if (distVolta <  { //se a distancia entre o animal e o referencial for menor que 8 fugir false.
[*] fugir = false;
[*] }


[*] }

[*] void atacar(){

[*] if(indoataque == true){

[*] position = Player.transform.position;
[*] Referencial.transform.position = position;

[*] alvoroteition = Quaternion.LookRotation (Referencial.transform.position - Animal.transform.position, Vector3.up);
[*] Animal.transform.rotation = Quaternion.Slerp (Animal.transform.rotation, alvoroteition, Time.deltaTime * 4);

[*] rb.AddRelativeForce (Vector3.forward * velocorrer);//Seguir o referencial.


[*] fome -= 0.4f * Time.deltaTime;
[*] }

[*] cdelayAtaque += 1 * Time.deltaTime;
[*] if (cdelayAtaque >= DelayAtaque) {
[*] cdelay = 0;
[*] Ataque = false;
[*] indoataque = false;

[*] //Ir para o referencial.
[*] // Fazer ele agir normalmente.
[*] position = posi + Random.insideUnitSphere * 42;//Gerar posição random.

[*] position.y = Animal.transform.position.y; //Para manter o animal no chão.

[*] Referencial.transform.position = position; // Mudar posição do referencial.

[*] indo = true;

[*] }

[*] }



[*]}
[/list]


Só tenho como responder com uma imagem!
avatar
zZAndersonZz
Avançado
Avançado

Masculino PONTOS : 418
REPUTAÇÃO : 87
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Script de um animal!!!

Mensagem por DuViDoSo em Sex Abr 21, 2017 2:41 pm

Very good my friend.
avatar
DuViDoSo
Modelador

Masculino PONTOS : 935
REPUTAÇÃO : 140
Idade : 18
Áreas de atuação : Modelagem LowPoly, Cozinha Daqui de Casa.
Respeito as regras :

Ver perfil do usuário http://www.naotenho.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Script de um animal!!!

Mensagem por sabbath em Sex Abr 21, 2017 6:17 pm

Muito bom!

sabbath
MembroAvançado

PONTOS : 641
REPUTAÇÃO : 14
Respeito as regras :

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