Ejemplo n.º 1
0
        public override void Update()
        {
            if (target == null || target.IsAlive == false)
            {
                chaseState?.StopState(false);
                chaseState = null;
                StopState();
                return;
            }

            var targetPosition = targetRadius == null ? target.transform.position : targetRadius.GetClosestPoint(target.transform.position);
            var distance       = Vector3.Distance(unit.transform.position, targetPosition);

            if (distance > unit.CurrentJob.attackRange)
            {
                PushChaseState();
                return;
            }

            if (attackTimer >= unit.CurrentJob.attackCooldown)
            {
                unit.ShootProjectile(target);
                attackTimer = 0;
            }
            attackTimer += Time.deltaTime;
        }
Ejemplo n.º 2
0
        protected MoveState PushMoveState(Unit unit, Vector3 moveDestination, float stopDistance, ObjectRadius objectRadius = null)
        {
            if (objectRadius != null)
            {
                moveDestination = objectRadius.GetClosestPoint(moveDestination);
            }
            var moveState = new MoveState(unit, moveDestination, stopDistance);

            PushState(moveState);
            return(moveState);
        }
Ejemplo n.º 3
0
        public override void Update()
        {
            var targetPosition = targetRadius == null ? target.transform.position : targetRadius.GetClosestPoint(target.transform.position);

            if (target.IsAlive && Vector3.Distance(agent.transform.position, targetPosition) <= stopDistance)
            {
                agent.ResetPath();
                Finish();
                return;
            }

            UpdatePath(targetPosition);
        }