Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma strict
- var inativo : boolean = true;
- var gCheck : Transform;
- private var GC : GroundChecker;
- private var rb : Rigidbody;
- private var RBC : coguChifresRBD;
- var Player : Transform;
- var myAn : Animator;
- private var dm : AddDamageGenerico;
- // status
- var STATUS : String = "===============================";
- private var spd : float;
- var chaseSpd : float = 5.0; // velocidade de perseguição
- var bkOffSpd : float; // velocidade de voltar
- var rotSpd : float = 1.0;
- var levou : boolean;
- var tempoLevou : float = 0.3;
- var tl : float;
- var chasing : boolean;
- var patrol : boolean;
- var close : boolean;
- var attacking : boolean;
- // tempos
- var TEMPOS : String = "===============================";
- var tempoChecker : float = 0.3;
- private var tCheck : float; // tempo de checagem de distancia.
- // distancias
- var DISTANCIAS : String = "===============================";
- var distancia : float; // distancia do jogador.
- var closeDist : float = 1.0;
- var medDist : float = 10.0;
- var fardist : float = 30.0;
- // orientação
- var ORIENTACAO : String = "===============================";
- var rand : boolean;
- private var pointpos : Vector3;
- private var targetRotation : Quaternion;
- var ang : float;
- var tgt : float; // angulo desejado de rotação
- private var rodotime : float; // o tempo que estou rodando
- var rtf : float = 3.0; //quantidade de tempo que ele passa rodando
- var rodoPing : float = 1.5;// quantidade de tempo que eu vou mandar rodar de novo
- var timeStay : float = 3.0; // tempo que estou esperando pra rodar de novo.
- var bias : float;
- private var bnum : float;//numero randomico a ser gerado, se for menor que 0.5 o bias é -1, se maior que 0.5 o bias é =1
- var roda : boolean;
- //ataque
- var ATAQUE : String = "===============================";
- var targeter : boolean;
- var olho : Transform; // objeto de onde sai o tiro;
- //private var ss : Inimigo1Shot; // script do tiro
- var bala : Rigidbody;
- var parei : boolean;
- var balaSpeed : float = 6.0;
- var cool : boolean;
- private var tc : float; // momento que ele poderá atirar de novo
- var tempoCool : float = 2.0; // tempo de reload;
- var LM : LayerMask;
- private var td : float; // tempo doido
- private var ts : float; // tempo pra ficar são.
- var timeActivate : float = 1.3;
- var atirador : boolean;
- InvokeRepeating("doit", 0.2, 0.05);
- function Start () {
- dm = gameObject.GetComponent(AddDamageGenerico);
- if(!myAn){
- myAn = gameObject.GetComponent(Animator);
- }
- timeStay = timeStay + Random.value * 1.5;
- chaseSpd = chaseSpd + Random.value;
- comecar();
- }
- function comecar(){
- yield WaitForSeconds(0.1);
- GC = gCheck.GetComponent(GroundChecker);
- Player = gameObject.FindWithTag("Player").transform;
- rb = gameObject.transform.GetComponent.<Rigidbody>();
- RBC = gameObject.GetComponent(coguChifresRBD);
- }
- function doit () {
- if(inativo){
- myAn.SetBool("idle", true);
- return;
- }
- levou = dm.getLevou();
- if(!RBC){
- return;
- }
- spd = RBC.getVel(); // pra checar a própria velocidade
- if(levou){
- tc = Time.time + tempoCool;
- myAn.SetBool("levou", true);
- myAn.SetBool("idle", false);
- if(Time.time > tl){
- dm.deslevou();
- myAn.SetBool("levou", false);
- }
- stum();
- return;
- }
- if(!levou){
- myAn.SetBool("levou", false);
- tl = Time.time + tempoLevou;
- if(Time.time > tCheck){
- checkdist();
- }
- if(!cool){
- if(Time.time > tc){
- cool = true;
- }
- }
- if(cool && atirador){
- var hit : RaycastHit;
- if (Physics.SphereCast (olho.position, 0.8, olho.forward, hit, 25, LM)) {
- tc = Time.time + tempoCool;
- var bl: Rigidbody = Instantiate (bala, olho.position, olho.rotation);
- if(targeter){
- bl.SendMessage("seek",SendMessageOptions.DontRequireReceiver);
- }
- bl.velocity = olho.forward * balaSpeed;
- cool = false;
- return;
- }
- }
- if(Time.time > ts){
- ts = Time.time + 2 + (Random.Range(0,1.3));
- var rd : int = Random.Range(0,5);
- if(rd> 2){
- rand = true;
- }
- if(rd <=2){
- rand = false;
- }
- }
- if(!rand){
- if(chasing){
- if(spd < chaseSpd * 0.3){
- jampar();
- }
- chase();
- }
- if(close){
- backOff();
- }
- }
- }
- if(levou){
- stum();
- }
- //==================definir a trajetória do inimigo se ele for errante
- if(rand){
- if(!roda){
- RBC.velo = chaseSpd;
- if(Time.time > timeStay){
- rodotime = Time.time + rtf;
- roda = true;
- // definir bias
- bnum = Random.Range(0,11);
- // print (bnum);
- if(bnum >= 5){
- bias = 1;
- }
- if(bnum < 5){
- bias = -1;
- }
- tgt = transform.eulerAngles.y + 90*bias;
- }
- }
- if(roda){
- myAn.SetBool("idle", false);
- RBC.velo = chaseSpd ;
- if(Time.time > rodotime){
- roda = false;
- timeStay = Time.time + rodoPing;
- }
- // ang = Mathf.MoveTowardsAngle(transform.eulerAngles.y,tgt, 30*rotSpd*Time.deltaTime);
- ang = transform.eulerAngles.y + rotSpd * 0.1;
- transform.eulerAngles.y = ang;
- }
- }
- //=======================================================
- }
- function checkdist(){
- tCheck = Time.time + tempoChecker; // se o estado não for de ataque
- distancia = (Player.position - transform.position).magnitude;
- if( distancia <= fardist && distancia > closeDist){
- chasing = true ;
- close = false;
- patrol = false;
- }
- if( distancia <= closeDist ){
- close = true;
- chasing = false ;
- patrol = false;
- }
- if( distancia >= fardist){
- patrol = true;
- chasing = false ;
- close = false;
- }
- return;
- }
- function chase(){
- pointpos = Vector3(Player.position.x, transform.position.y, Player.position.z);
- targetRotation = Quaternion.LookRotation(pointpos - transform.position);
- if(!rand){
- transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotSpd * Time.deltaTime);
- }
- RBC.velo = chaseSpd;
- return;
- }
- function Patroll(){
- RBC.velo = chaseSpd * 0;
- return;
- }
- function backOff(){
- pointpos = Vector3(Player.position.x, transform.position.y, Player.position.z);
- targetRotation = Quaternion.LookRotation(pointpos - transform.position);
- transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotSpd*2.8 * Time.deltaTime);
- RBC.velo = chaseSpd * -0.3;
- return;
- }
- function jampar(){
- yield WaitForSeconds(0.5);
- if(spd < chaseSpd * 0.3){
- RBC.doJump();
- }
- return;
- }
- function stum(){
- RBC.velo = chaseSpd * 0;
- }
- function getChase(){
- return chasing;
- }
- function getPatrol(){
- return patrol;
- }
- function ativar(){
- yield WaitForSeconds(timeActivate);
- tc = Time.time + tempoCool ;
- inativo = false;
- myAn.SetBool("idle", false);
- }
- function desativar(){
- inativo = true;
- myAn.SetBool("idle", true);
- }
- function OnCollisionEnteR(Other: Collision){
- if(Other.gameObject.tag == "Player"){
- print("bati " + Time.time);
- }
- }
- function destruir(){
- Destroy(gameObject);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement