Enemy.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Enemy : MonoBehaviour
  5. {
  6. [SerializeField]
  7. private GameObject powerDrop;
  8. [SerializeField]
  9. private PowerLevels powerLevel;
  10. private float power = 1.0f;
  11. private enum PowerLevels { VeryLow, Low, Medium, High, Full}
  12. private EnemyAI.BehaviorController behaviorController;
  13. private DayTimeManager dayTimeManager;
  14. private bool dead = false;
  15. private DayTimeLabel lastCharging;
  16. void OnCollisionEnter(Collision collision)
  17. {
  18. if(!dead)
  19. {
  20. if (collision.collider.tag == "Bullet")
  21. {
  22. Death();
  23. }
  24. }
  25. }
  26. // Use this for initialization
  27. void Start ()
  28. {
  29. dayTimeManager = GameObject.FindObjectOfType<DayTimeManager>();
  30. behaviorController = new EnemyAI.BehaviorController();
  31. behaviorController.blackboard.navMeshAgent = GetComponent<UnityEngine.AI.NavMeshAgent>();
  32. }
  33. // Update is called once per frame
  34. void Update ()
  35. {
  36. if (!dead)
  37. {
  38. // AI
  39. EnemyAI.Blackboard blackboard = behaviorController.blackboard;
  40. if (dayTimeManager.dayTimeLabel == DayTimeLabel.Night)
  41. {
  42. blackboard.Night = true;
  43. }
  44. else
  45. {
  46. blackboard.Night = false;
  47. }
  48. blackboard.PlayerPosition = GameObject.FindGameObjectWithTag("Player").transform.position;
  49. blackboard.EnemyPosition = transform.position;
  50. behaviorController.Update();
  51. // Energy collection
  52. if (dayTimeManager.dayTimeLabel != lastCharging)
  53. {
  54. switch (dayTimeManager.dayTimeLabel)
  55. {
  56. case (DayTimeLabel.Night):
  57. powerLevel = PowerLevels.Full;
  58. power = 16;
  59. lastCharging = dayTimeManager.dayTimeLabel;
  60. break;
  61. case (DayTimeLabel.Morning):
  62. powerLevel = PowerLevels.VeryLow;
  63. power = 1;
  64. lastCharging = dayTimeManager.dayTimeLabel;
  65. break;
  66. case (DayTimeLabel.Noon):
  67. powerLevel = PowerLevels.Low;
  68. power = 2;
  69. lastCharging = dayTimeManager.dayTimeLabel;
  70. break;
  71. case (DayTimeLabel.Evening):
  72. powerLevel = PowerLevels.Medium;
  73. power = 4;
  74. lastCharging = dayTimeManager.dayTimeLabel;
  75. break;
  76. }
  77. }
  78. }
  79. }
  80. private void Death()
  81. {
  82. dead = true;
  83. GetComponent<UnityEngine.AI.NavMeshAgent>().isStopped = true;
  84. GameObject go = GameObject.Instantiate(powerDrop);
  85. go.GetComponent<PowerDrop>().powerAmount = power;
  86. go.transform.position = gameObject.transform.position;
  87. GameObject.Destroy(gameObject);
  88. }
  89. }