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) { if(!owner.rotateTargetAngle.Equals(owner.rotateMoveTargetAngle)) { owner.setRotateTargetAngle(owner.rotateMoveTargetAngle); } } } } protected override void FindTarget () { FindMaxThreatTarget(); if(owner.target == null) { base.FindTarget (); } } }