123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class SoldierAI : NormalAI
- {
- public Craft hero;
- // Update is called once per frame
- override protected void FixedUpdate ()
- {
- if(!CanSendMessage())
- {
- return;
- }
- if(CheckDead())
- {
- return;
- }
- if(GameTime.time-lastCheckTime >= checkTimeInterval)
- {
- lastCheckTime = GameTime.time;
- }
- else
- {
- return;
- }
- if(owner.target == null || !owner.target.CanShoot())
- {
- owner.target = null;
- FindTarget();
- }
- else
- {
- FindMaxThreatTarget();
- float targetDistance = NumberUtil.distanceVector3(owner.position, owner.target.position);
- if(targetDistance > owner.viewRange)
- {
- owner.target = null;
- }
- else
- {
- Action();
- }
- }
- if(owner.target == null && hero != null)
- {
- if(!owner.isMoving)
- {
- if(NumberUtil.distanceVector3(owner.transform.position, hero.transform.position) > 2f)
- {
- AStarNode node = map.GetAStarNodeByPosition(hero.transform.position);
- battleController.GetMessageManager().Move(owner, node.X, node.Y);
- }
- }
- else if(owner.isMoving)
- {
-
- }
- }
- }
- protected override void FindTarget ()
- {
- FindMaxThreatTarget();
- if(owner.target == null)
- {
- base.FindTarget ();
- }
- }
- }
|