SoldierAI.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public class SoldierAI : NormalAI
  5. {
  6. public Craft hero;
  7. // Update is called once per frame
  8. override protected void FixedUpdate ()
  9. {
  10. if(!CanSendMessage())
  11. {
  12. return;
  13. }
  14. if(CheckDead())
  15. {
  16. return;
  17. }
  18. if(GameTime.time-lastCheckTime >= checkTimeInterval)
  19. {
  20. lastCheckTime = GameTime.time;
  21. }
  22. else
  23. {
  24. return;
  25. }
  26. if(owner.target == null || !owner.target.CanShoot())
  27. {
  28. owner.target = null;
  29. FindTarget();
  30. }
  31. else
  32. {
  33. FindMaxThreatTarget();
  34. float targetDistance = NumberUtil.distanceVector3(owner.position, owner.target.position);
  35. if(targetDistance > owner.viewRange)
  36. {
  37. owner.target = null;
  38. }
  39. else
  40. {
  41. Action();
  42. }
  43. }
  44. if(owner.target == null && hero != null)
  45. {
  46. if(!owner.isMoving)
  47. {
  48. if(NumberUtil.distanceVector3(owner.transform.position, hero.transform.position) > 2f)
  49. {
  50. AStarNode node = map.GetAStarNodeByPosition(hero.transform.position);
  51. battleController.GetMessageManager().Move(owner, node.X, node.Y);
  52. }
  53. }
  54. else if(owner.isMoving)
  55. {
  56. }
  57. }
  58. }
  59. protected override void FindTarget ()
  60. {
  61. FindMaxThreatTarget();
  62. if(owner.target == null)
  63. {
  64. base.FindTarget ();
  65. }
  66. }
  67. }