Advertisement
Guest User

Untitled

a guest
Jul 26th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.10 KB | None | 0 0
  1. #pragma strict
  2.  
  3. var inativo : boolean = true;
  4. var gCheck : Transform;
  5. private var GC : GroundChecker;
  6. private var rb : Rigidbody;
  7. private var RBC : coguChifresRBD;
  8. var Player : Transform;
  9. var myAn : Animator;
  10. private var dm : AddDamageGenerico;
  11.  
  12. // status
  13.  
  14. var STATUS : String = "===============================";
  15. private var spd : float;
  16.  
  17. var chaseSpd : float = 5.0; // velocidade de perseguição
  18. var bkOffSpd : float; // velocidade de voltar
  19. var rotSpd : float = 1.0;
  20.  
  21.  
  22.  
  23. var levou : boolean;
  24. var tempoLevou : float = 0.3;
  25. var tl : float;
  26. var chasing : boolean;
  27. var patrol : boolean;
  28. var close : boolean;
  29. var attacking : boolean;
  30.  
  31.  
  32. // tempos
  33. var TEMPOS : String = "===============================";
  34. var tempoChecker : float = 0.3;
  35. private var tCheck : float; // tempo de checagem de distancia.
  36.  
  37.  
  38. // distancias
  39. var DISTANCIAS : String = "===============================";
  40. var distancia : float; // distancia do jogador.
  41. var closeDist : float = 1.0;
  42. var medDist : float = 10.0;
  43. var fardist : float = 30.0;
  44.  
  45. // orientação
  46. var ORIENTACAO : String = "===============================";
  47. var rand : boolean;
  48. private var pointpos : Vector3;
  49. private var targetRotation : Quaternion;
  50.  
  51. var ang : float;
  52. var tgt : float; // angulo desejado de rotação
  53. private var rodotime : float; // o tempo que estou rodando
  54. var rtf : float = 3.0; //quantidade de tempo que ele passa rodando
  55. var rodoPing : float = 1.5;// quantidade de tempo que eu vou mandar rodar de novo
  56. var timeStay : float = 3.0; // tempo que estou esperando pra rodar de novo.
  57. var bias : float;
  58. 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
  59. var roda : boolean;
  60.  
  61.  
  62.  
  63. //ataque
  64. var ATAQUE : String = "===============================";
  65.  
  66. var targeter : boolean;
  67. var olho : Transform; // objeto de onde sai o tiro;
  68. //private var ss : Inimigo1Shot; // script do tiro
  69. var bala : Rigidbody;
  70. var parei : boolean;
  71. var balaSpeed : float = 6.0;
  72.  
  73.  
  74. var cool : boolean;
  75.  
  76. private var tc : float; // momento que ele poderá atirar de novo
  77. var tempoCool : float = 2.0; // tempo de reload;
  78. var LM : LayerMask;
  79.  
  80.  
  81. private var td : float; // tempo doido
  82.  
  83.  
  84. private var ts : float; // tempo pra ficar são.
  85. var timeActivate : float = 1.3;
  86. var atirador : boolean;
  87.  
  88.  
  89.  
  90. InvokeRepeating("doit", 0.2, 0.05);
  91.  
  92.  
  93. function Start () {
  94.  
  95. dm = gameObject.GetComponent(AddDamageGenerico);
  96. if(!myAn){
  97. myAn = gameObject.GetComponent(Animator);
  98. }
  99. timeStay = timeStay + Random.value * 1.5;
  100. chaseSpd = chaseSpd + Random.value;
  101.  
  102.  
  103. comecar();
  104.  
  105.  
  106. }
  107.  
  108.  
  109. function comecar(){
  110.  
  111. yield WaitForSeconds(0.1);
  112. GC = gCheck.GetComponent(GroundChecker);
  113. Player = gameObject.FindWithTag("Player").transform;
  114. rb = gameObject.transform.GetComponent.<Rigidbody>();
  115. RBC = gameObject.GetComponent(coguChifresRBD);
  116.  
  117. }
  118.  
  119. function doit () {
  120.  
  121. if(inativo){
  122. myAn.SetBool("idle", true);
  123. return;
  124. }
  125. levou = dm.getLevou();
  126.  
  127. if(!RBC){
  128. return;
  129. }
  130. spd = RBC.getVel(); // pra checar a própria velocidade
  131.  
  132.  
  133. if(levou){
  134. tc = Time.time + tempoCool;
  135. myAn.SetBool("levou", true);
  136. myAn.SetBool("idle", false);
  137. if(Time.time > tl){
  138. dm.deslevou();
  139. myAn.SetBool("levou", false);
  140.  
  141. }
  142. stum();
  143. return;
  144.  
  145. }
  146.  
  147.  
  148.  
  149.  
  150. if(!levou){
  151. myAn.SetBool("levou", false);
  152. tl = Time.time + tempoLevou;
  153.  
  154. if(Time.time > tCheck){
  155. checkdist();
  156. }
  157. if(!cool){
  158.  
  159. if(Time.time > tc){
  160. cool = true;
  161. }
  162. }
  163. if(cool && atirador){
  164.  
  165. var hit : RaycastHit;
  166.  
  167. if (Physics.SphereCast (olho.position, 0.8, olho.forward, hit, 25, LM)) {
  168.  
  169.  
  170. tc = Time.time + tempoCool;
  171. var bl: Rigidbody = Instantiate (bala, olho.position, olho.rotation);
  172. if(targeter){
  173.  
  174. bl.SendMessage("seek",SendMessageOptions.DontRequireReceiver);
  175. }
  176. bl.velocity = olho.forward * balaSpeed;
  177. cool = false;
  178. return;
  179.  
  180. }
  181.  
  182.  
  183. }
  184. if(Time.time > ts){
  185. ts = Time.time + 2 + (Random.Range(0,1.3));
  186.  
  187. var rd : int = Random.Range(0,5);
  188. if(rd> 2){
  189. rand = true;
  190.  
  191. }
  192. if(rd <=2){
  193. rand = false;
  194. }
  195.  
  196.  
  197. }
  198.  
  199.  
  200. if(!rand){
  201.  
  202.  
  203. if(chasing){
  204. if(spd < chaseSpd * 0.3){
  205. jampar();
  206. }
  207. chase();
  208. }
  209. if(close){
  210. backOff();
  211. }
  212. }
  213.  
  214.  
  215. }
  216.  
  217.  
  218.  
  219. if(levou){
  220. stum();
  221. }
  222.  
  223. //==================definir a trajetória do inimigo se ele for errante
  224.  
  225. if(rand){
  226.  
  227.  
  228. if(!roda){
  229.  
  230. RBC.velo = chaseSpd;
  231. if(Time.time > timeStay){
  232. rodotime = Time.time + rtf;
  233. roda = true;
  234. // definir bias
  235.  
  236. bnum = Random.Range(0,11);
  237. // print (bnum);
  238. if(bnum >= 5){
  239. bias = 1;
  240. }
  241. if(bnum < 5){
  242. bias = -1;
  243. }
  244.  
  245. tgt = transform.eulerAngles.y + 90*bias;
  246. }
  247.  
  248.  
  249. }
  250.  
  251.  
  252. if(roda){
  253. myAn.SetBool("idle", false);
  254. RBC.velo = chaseSpd ;
  255.  
  256. if(Time.time > rodotime){
  257. roda = false;
  258. timeStay = Time.time + rodoPing;
  259. }
  260.  
  261. // ang = Mathf.MoveTowardsAngle(transform.eulerAngles.y,tgt, 30*rotSpd*Time.deltaTime);
  262. ang = transform.eulerAngles.y + rotSpd * 0.1;
  263. transform.eulerAngles.y = ang;
  264.  
  265. }
  266. }
  267.  
  268.  
  269. //=======================================================
  270.  
  271.  
  272.  
  273.  
  274.  
  275. }
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. function checkdist(){
  283.  
  284. tCheck = Time.time + tempoChecker; // se o estado não for de ataque
  285. distancia = (Player.position - transform.position).magnitude;
  286.  
  287. if( distancia <= fardist && distancia > closeDist){
  288. chasing = true ;
  289. close = false;
  290. patrol = false;
  291.  
  292.  
  293. }
  294.  
  295.  
  296. if( distancia <= closeDist ){
  297. close = true;
  298. chasing = false ;
  299. patrol = false;
  300. }
  301. if( distancia >= fardist){
  302. patrol = true;
  303. chasing = false ;
  304. close = false;
  305. }
  306.  
  307.  
  308. return;
  309.  
  310. }
  311.  
  312. function chase(){
  313.  
  314. pointpos = Vector3(Player.position.x, transform.position.y, Player.position.z);
  315. targetRotation = Quaternion.LookRotation(pointpos - transform.position);
  316.  
  317. if(!rand){
  318. transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotSpd * Time.deltaTime);
  319. }
  320. RBC.velo = chaseSpd;
  321. return;
  322.  
  323. }
  324.  
  325. function Patroll(){
  326. RBC.velo = chaseSpd * 0;
  327. return;
  328. }
  329.  
  330. function backOff(){
  331.  
  332. pointpos = Vector3(Player.position.x, transform.position.y, Player.position.z);
  333. targetRotation = Quaternion.LookRotation(pointpos - transform.position);
  334. transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotSpd*2.8 * Time.deltaTime);
  335. RBC.velo = chaseSpd * -0.3;
  336. return;
  337. }
  338.  
  339. function jampar(){
  340. yield WaitForSeconds(0.5);
  341. if(spd < chaseSpd * 0.3){
  342. RBC.doJump();
  343. }
  344. return;
  345.  
  346. }
  347.  
  348. function stum(){
  349. RBC.velo = chaseSpd * 0;
  350. }
  351.  
  352. function getChase(){
  353.  
  354. return chasing;
  355. }
  356.  
  357. function getPatrol(){
  358. return patrol;
  359. }
  360.  
  361. function ativar(){
  362. yield WaitForSeconds(timeActivate);
  363. tc = Time.time + tempoCool ;
  364. inativo = false;
  365. myAn.SetBool("idle", false);
  366. }
  367.  
  368. function desativar(){
  369.  
  370. inativo = true;
  371. myAn.SetBool("idle", true);
  372. }
  373.  
  374. function OnCollisionEnteR(Other: Collision){
  375.  
  376.  
  377. if(Other.gameObject.tag == "Player"){
  378.  
  379. print("bati " + Time.time);
  380. }
  381. }
  382.  
  383. function destruir(){
  384.  
  385. Destroy(gameObject);
  386. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement