Ejemplo n.º 1
0
    private IEnumerator GoAlongPathCoroutine()
    {
        pathToPlayer = GridPathfinding.instance.ExecutePathfinding(mobRbody.position);
        Vector3 mobStartingPosition = mobRbody.position;

        for (int i = 0; i < pathToPlayer.Count; i++)
        {
            //Debug.Log("Current destination index: " + i);
            Vector3 currentDestination = pathToPlayer[i];
            mobAEnemy.RotateTowardsVector3Position(currentDestination);
            float cTime = 0f;
            while (Vector3.Distance(mobRbody.position, currentDestination) > minimalPathNodeSwitchDistance)
            {
                WalkToPosition(currentDestination, mobAEnemy.MovementSpeed);
                cTime += Time.deltaTime;
                if (cTime > timeToStuck)
                {
                    //mob stuck on one node
                    Debug.Log("Mob is stuck -> executing failsafe mechanism.");
                    if (i > 0)
                    {
                        currentDestination = pathToPlayer[i - 1];
                    }
                    else
                    {
                        currentDestination = mobStartingPosition;
                    }
                    mobAEnemy.RotateTowardsVector3Position(currentDestination);
                    cTime = 0f;
                }
                yield return(null);
            }
        }
        //StartCoroutine(GoAlongPathCoroutine());
    }
Ejemplo n.º 2
0
 // Update is called once per frame
 void Update()
 {
     DetectPlayerInProximity();
     if (!WalkingSuspended)
     {
         //mobAEnemy.RotateTowardsVector3Position(mobAIPath.steeringTarget);
         mobAEnemy.RotateTowardsVector3Position(PlayerCharacter.instance.transform.position);
     }
 }