Exemple #1
0
 private void DoNpcActions(NPCStateController controller)
 {
     foreach (NPCActions_SO nPCAction in nPCActions)
     {
         nPCAction.Act(controller);
     }
 }
 private bool WayPointChange(NPCStateController controller)
 {
     //Patrol Action
     if (controller.NavMeshAgent.remainingDistance <= controller.NavMeshAgent.stoppingDistance && !controller.NavMeshAgent.pathPending)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
    private bool TimeDone(NPCStateController controller)
    {
        if (controller.checkCountDownElapsed(controller.enemyStats.idleTime))
        {
            // Debug.Log("Time is up");

            return(true);
        }
        else
        {
            return(false);
        }
    }
 private bool TargetInRange(NPCStateController controller)
 {
     if (controller.ChaseTarget != null)
     {
         if (Vector3.Distance(controller.transform.position, controller.ChaseTarget.transform.position) <= 3.5f)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     return(false);
 }
Exemple #5
0
    private void Chase(NPCStateController controller)
    {
        if (controller.ChaseTarget != null)
        {
            controller.NavMeshAgent.destination = controller.ChaseTarget.position;

            if (Vector3.Distance(controller.NavMeshAgent.transform.position, controller.ChaseTarget.position) <= 3.5f)
            {
                controller.NavMeshAgent.isStopped = true;
            }
            else
            {
                controller.NavMeshAgent.isStopped = false;
            }
        }
    }
Exemple #6
0
    private void Attack(NPCStateController controller)
    {
        if (controller.ChaseTarget != null)
        {
            controller.NavMeshAgent.destination = controller.ChaseTarget.position;

            if (Vector3.Distance(controller.NavMeshAgent.transform.position, controller.ChaseTarget.position) <= 3.5f)
            {
                if (controller.TimerAttack(controller.enemyStats.attackRate))
                {
                    Debug.Log("Attack");
                    Instantiate(controller.AttackObj, controller.Eyes.transform);
                }
            }
        }
    }
Exemple #7
0
    private void CheckTransistions(NPCStateController controller)
    {
        //Checking for every decision from the translation
        foreach (NPCTransition transistion in transitions)
        {
            bool decisionSucceeded = transistion.decision.Decide(controller);

            if (decisionSucceeded)
            {
                controller.TransistionToState(transistion.trueState);
            }
            else
            {
                controller.TransistionToState(transistion.falseState);
            }
        }
    }
Exemple #8
0
    private void Patrol(NPCStateController controller)
    {
        //randomMode should be inside controller

        controller.WayPointIndex = pointIndex;
        // Debug.unityLogger.Log("Entered Patrol Action");
        controller.NavMeshAgent.destination = controller.WayPoints[pointIndex].position;
        controller.NavMeshAgent.isStopped   = false;

        if (controller.NavMeshAgent.remainingDistance <= controller.NavMeshAgent.stoppingDistance && !controller.NavMeshAgent.pathPending)
        {
            if (randomMode)
            {
                pointIndex = UnityEngine.Random.Range(0, controller.WayPoints.Count);
            }
            pointIndex = (pointIndex + 1) % controller.WayPoints.Count;
        }
    }
    private bool Look(NPCStateController controller)
    {
        //CHANGE THIS BASED ON ENEMYSTATS COLLISIONSPHERE
        RaycastHit hit;

        Debug.DrawRay(controller.Eyes.position, controller.Eyes.forward.normalized * controller.enemyStats.lookRange, Color.green);


        if (Physics.SphereCast(controller.Eyes.position, controller.enemyStats.lookSphereCastRadius, controller.Eyes.forward, out hit, controller.enemyStats.lookRange) &&
            hit.collider.CompareTag("Player"))
        {
            controller.ChaseTarget = hit.transform;
            return(true);
        }
        else
        {
            return(false);
        }
    }
    public override bool Decide(NPCStateController controller)
    {
        bool chaseTargetIsActive = controller.ChaseTarget.gameObject.activeSelf;

        return(chaseTargetIsActive);
    }
    public override bool Decide(NPCStateController controller)
    {
        bool timerIsDone = TimeDone(controller);

        return(timerIsDone);
    }
Exemple #12
0
 public override void Act(NPCStateController controller)
 {
     Patrol(controller);
 }
    //Edit this later for using a gameobject that has collision sphere

    public override bool Decide(NPCStateController controller)
    {
        bool targetVisible = Look(controller);

        return(targetVisible);
    }
 private void OnEnable()
 {
     controller = GetComponentInParent <NPCStateController>();
 }
Exemple #15
0
 public override void Act(NPCStateController controller)
 {
     Chase(controller);
 }
    public override bool Decide(NPCStateController controller)
    {
        bool wayPointChange = WayPointChange(controller);

        return(wayPointChange);
    }
    public override bool Decide(NPCStateController controller)
    {
        bool targetDetected = controller.IsplayerIn;

        return(targetDetected);
    }
Exemple #18
0
 public void UpdateState(NPCStateController controller)
 {
     DoNpcActions(controller);
     CheckTransistions(controller);
 }
 public abstract bool Decide(NPCStateController controller);
 private bool Scan(NPCStateController controller)
 {
     controller.NavMeshAgent.isStopped = true;
     controller.transform.Rotate(0, controller.enemyStats.searchingTurnSpeed * Time.deltaTime, 0);
     return(controller.checkCountDownElapsed(controller.enemyStats.searchDuration));
 }
    public override bool Decide(NPCStateController controller)
    {
        bool noEnemyInSight = Scan(controller);

        return(noEnemyInSight);
    }
 public NPCStateTalking(NPCStateController controller)
 {
     this.controller = controller;
 }
 public NPCStateIdle(NPCStateController controller)
 {
     this.controller = controller;
 }
Exemple #24
0
 public override void Act(NPCStateController controller)
 {
     Attack(controller);
 }
 public abstract void Act(NPCStateController controller);
    public override bool Decide(NPCStateController controller)
    {
        bool targetInRange = TargetInRange(controller);

        return(targetInRange);
    }
 private void Idle(NPCStateController controller)
 {
     Debug.Log("Idle");
     controller.NavMeshAgent.isStopped = true;
 }