/Assets/Scripts/enemy/enemy.cs

https://bitbucket.org/ericsanchezverges/spacebrawl · C# · 144 lines · 113 code · 18 blank · 13 comment · 18 complexity · e42e522fa5f15e99e919cfb846d0ce2a MD5 · raw file

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement;
  5. using UnityEngine.UI;
  6. public class enemy : MonoBehaviour {
  7. //public Transform target;
  8. public GameObject wall;
  9. int speed = 0;
  10. public int enemyHP = 50;
  11. Transform SpawnPoint;
  12. public GameObject enemyBulletPrefab;
  13. float cooldownAbility = 0.0f;
  14. private Vector3 posPlayer;
  15. public GameObject enemyPrefab;
  16. public float distance;
  17. public Text enemyHPtext;
  18. public bool shielded = false;
  19. //enemyType
  20. public int enemyType = 1; //0-shooter 1-bomb 2-divide
  21. int distanceByType;
  22. public Sprite enemyShootSpr, enemyBombSpr, enemyDivideSpr;
  23. //enemyBomb
  24. public GameObject bombPrefab;
  25. //enemyDivide
  26. public GameObject dividePrefab;
  27. Vector3 randpos1;
  28. Vector3 randpos2;
  29. // Use this for initialization
  30. void Start () {
  31. }
  32. // Update is called once per frame
  33. void Update () {
  34. posPlayer = GameObject.FindWithTag("Player").transform.position;
  35. enemyTypeFunct();
  36. getInvisible();
  37. UpdateCooldown();
  38. enemyDead();
  39. enemyHPtext.text = "" + enemyHP.ToString("f0");
  40. }
  41. //enemy movement
  42. void MoveEnemy(){
  43. distance = Vector3.Distance(transform.position,posPlayer);
  44. if(distance > distanceByType){
  45. transform.position = Vector3.MoveTowards(transform.position, posPlayer, speed*Time.deltaTime);
  46. }
  47. }
  48. //enemy shooting
  49. void ShootEnemy(){
  50. if(distance < 10){
  51. if(cooldownAbility <= 0){
  52. enemyBullet enemyBullet = (Instantiate (enemyBulletPrefab, new Vector3 (transform.position.x, transform.position.y, transform.position.z),transform.rotation) as GameObject).GetComponent<enemyBullet>();
  53. cooldownAbility = 2.0f;
  54. }
  55. }
  56. }
  57. //enemy dying
  58. void enemyDead(){
  59. if(enemyHP <= 0){
  60. Destroy(this.gameObject);
  61. if(enemyType == 1){
  62. GameObject bomb = Instantiate (bombPrefab, new Vector3 (transform.position.x, transform.position.y, transform.position.z), transform.rotation) as GameObject;
  63. }if(enemyType==2){
  64. randpos1 = new Vector3(Random.Range(transform.position.x-5, transform.position.x+5), Random.Range(transform.position.y-5,transform.position.y+5),0);
  65. GameObject divide = Instantiate (dividePrefab, randpos1, transform.rotation) as GameObject;
  66. randpos2 = new Vector3(Random.Range(transform.position.x-5, transform.position.x+5), Random.Range(transform.position.y-5,transform.position.y+5),0);
  67. divide = Instantiate (dividePrefab, randpos2, transform.rotation) as GameObject;
  68. }
  69. }
  70. if(distance<=2 && enemyType==1){
  71. Destroy(gameObject);
  72. GameObject bomb = Instantiate (bombPrefab, new Vector3 (transform.position.x, transform.position.y, transform.position.z), transform.rotation) as GameObject;
  73. }
  74. }
  75. //colliders
  76. void OnTriggerEnter2D (Collider2D col) {
  77. if(col.gameObject.tag == "playerBullet"){
  78. enemyHP = enemyHP - 10;
  79. Destroy(col.gameObject);
  80. }
  81. }
  82. void OnTriggerStay2D (Collider2D col) {
  83. if(col.gameObject.tag == "Poison"){
  84. enemyHP = enemyHP - 1;
  85. }
  86. }
  87. bool CheckCollision(Vector2 newVect, Vector2 newDir){
  88. RaycastHit2D hit = Physics2D.Raycast(newVect,newDir,0.001f);
  89. return hit;
  90. }
  91. //get if player is invisible
  92. void getInvisible(){
  93. GameObject player = GameObject.FindWithTag("Player");
  94. sc_Objects invisibleState = player.GetComponent<sc_Objects>();
  95. if(!invisibleState.invisibleON){
  96. MoveEnemy();
  97. if(enemyType==0){
  98. ShootEnemy();
  99. }
  100. }
  101. }
  102. //defines the type of the enemy
  103. void enemyTypeFunct(){
  104. if(enemyType==0){ //shooter
  105. distanceByType = 10;
  106. speed = 5;
  107. this.gameObject.GetComponent<SpriteRenderer> ().sprite = enemyShootSpr;
  108. }
  109. if(enemyType==1){ //bomber
  110. speed = 10;
  111. distanceByType = 1;
  112. this.gameObject.GetComponent<SpriteRenderer> ().sprite = enemyBombSpr;
  113. }
  114. if(enemyType==2){ //divide
  115. speed = 3;
  116. distanceByType = 5;
  117. this.gameObject.GetComponent<SpriteRenderer> ().sprite = enemyDivideSpr;
  118. }
  119. }
  120. //cooldown
  121. void UpdateCooldown(){
  122. if(cooldownAbility >= 0){
  123. cooldownAbility -= Time.deltaTime;
  124. }
  125. }
  126. }