SoldierAI.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. battleController.GetMessageManager().Move(owner, hero.transform.position);
  51. }
  52. }
  53. else if(owner.isMoving)
  54. {
  55. }
  56. }
  57. }
  58. protected override void FindTarget ()
  59. {
  60. FindMaxThreatTarget();
  61. if(owner.target == null)
  62. {
  63. base.FindTarget ();
  64. }
  65. }
  66. }