public override Type Tick() { if (movement.currentTarget) { return(typeof(AttackState)); } if (movement.ReachedDestination()) { if (walking) { walking = false; nextWalk = Time.time + waitTime.GenerateRandom(); } else if (nextWalk < Time.time) { walking = true; movement.useSpeed = 0.6f; movement.agent.SetDestination( AIMovement.RandomNavSphere( movement.transform.position, walkRange.GenerateRandom(), -1)); } } return(GetType()); }
public override Type Tick() { if (!movement.currentTarget) { //return investigate state return(null); } movement.agent.SetDestination(movement.currentTarget.transform.position); if (movement.agent.remainingDistance < attackRange) { if (nextSwitch < Time.time) { if (attacking) { nextSwitch = Time.time + blockTime.GenerateRandom(); } else { nextSwitch = Time.time + attackTime.GenerateRandom(); movement.SetBlock(false); } attacking = !attacking; } if (attacking) { movement.SetLightCut(); } else { movement.SetBlock(true); } } return(GetType()); }