Пример #1
0
    protected override void Update()
    {
        timer += Time.deltaTime;

        if (timer >= _freezeTime)
        {
            sm.SendInput(TrueDummyEnemy.DummyEnemyInputs.IDLE);
            timer = 0;
        }


        //de aca para abajo es el follow normal menos un calculo al final
        if (GetMyPos() == null)
        {
            if (noObs.CurrentTarget() != null)
            {
                Vector3 dirForward     = (noObs.CurrentTarget().transform.position - root.position).normalized;
                Vector3 fowardRotation = new Vector3(dirForward.x, 0, dirForward.z);

                ObstacleAvoidance(fowardRotation);
//                    if (Vector3.Distance(noObs.CurrentTarget().transform.position, root.position) <= normalDistance)
//                        sm.SendInput(TrueDummyEnemy.DummyEnemyInputs.IDLE);
            }
        }
        else
        {
            Vector3 dir = GetMyPos().position - root.position;
            dir.Normalize();

            Vector3 dirFix = new Vector3(dir.x, 0, dir.z);

            ObstacleAvoidance(dirFix);

            float distanceX = Mathf.Abs(GetMyPos().transform.position.x - root.position.x);
            float distanceZ = Mathf.Abs(GetMyPos().transform.position.z - root.position.z);

            if (distanceX < 0.7f && distanceZ < 0.7f)
            {
                //sm.SendInput(TrueDummyEnemy.DummyEnemyInputs.IDLE);
            }
        }
    }
Пример #2
0
        protected override void Update()
        {
            base.Update();

            if (GetMyPos() == null)
            {
                if (noObs.CurrentTarget() != null)
                {
                    Vector3 dirForward     = (noObs.CurrentTarget().transform.position - root.position).normalized;
                    Vector3 fowardRotation = new Vector3(dirForward.x, 0, dirForward.z);

                    ObstacleAvoidance(fowardRotation);
                    if (Vector3.Distance(noObs.CurrentTarget().transform.position, root.position) <= normalDistance)
                    {
                        sm.SendInput(TrueDummyEnemy.DummyEnemyInputs.IDLE);
                    }
                }
            }
            else
            {
                Vector3 dir = GetMyPos().position - root.position;
                dir.Normalize();

                Vector3 dirFix = new Vector3(dir.x, 0, dir.z);

                ObstacleAvoidance(dirFix);

                float distanceX = Mathf.Abs(GetMyPos().transform.position.x - root.position.x);
                float distanceZ = Mathf.Abs(GetMyPos().transform.position.z - root.position.z);

                if (distanceX < 0.7f && distanceZ < 0.7f)
                {
                    sm.SendInput(TrueDummyEnemy.DummyEnemyInputs.IDLE);
                }
            }
        }