Exemple #1
0
 // Start is called before the first frame update
 void Start()
 {
     _npcPursuitController = GetComponent <NPCPursuitController>();
     NPCAnimation          = GetComponent <Animator>();
     couroutineOn          = true;
     StartCoroutine(Patroling());
 }
 void Start()
 {
     _overheadStatus       = transform.Find("OverheadStatus").gameObject;
     _visionDetector       = transform.Find("VisionDetector").gameObject;
     visionController      = _visionDetector.GetComponent <VisionController>();
     npcBodyCollider       = GetComponent <BoxCollider2D>();
     _npcPursuitController = GetComponent <NPCPursuitController>();
     _status = _overheadStatus.GetComponent <SpriteRenderer>();
     hasGonePastCheckpoint        = false;
     _brokenPursuitPauseTimer     = _npcPursuitController.BrokenPursuitPauseTime;
     randomDirChangeTimerNeedsSet = true;
     dirChangePauseTimer          = SetDirChangePauseTimer();
 }
    void Update()
    {
        _npcPursuitController = GetComponent <NPCPursuitController>();
        _isInPursuit          = _npcPursuitController.IsInPursuit;
        _hasBrokenPursuit     = _npcPursuitController.HasBrokenPursuit;

        if (!_hasBrokenPursuit && !visionController.IsPlayerDetected)
        {
            if (EnableRandomPatrol)
            {
                randomDirChangeTimer -= Time.deltaTime;

                if (DoRandomDirectionChange() && !hasGonePastCheckpoint)
                {
                    if (dirChangePauseTimer > 0)
                    {
                        PauseMovement();
                        dirChangePauseTimer -= Time.deltaTime;
                    }
                    else
                    {
                        randomDirChangeTimerNeedsSet = true;
                        dirChangePauseTimer          = SetDirChangePauseTimer();
                        RotateNPCAndChildren();
                    }
                }
                else
                {
                    MoveNormally();
                }
            }
            else
            {
                MoveNormally();
            }
        }
        else if (_hasBrokenPursuit)
        {
            _brokenPursuitPauseTimer -= Time.deltaTime;

            if (_brokenPursuitPauseTimer > 0)
            {
                if (!visionController.IsPlayerDetected)
                {
                    PauseMovement();
                    _status.sprite = visionController.SearchingSprite;
                }
                else
                {
                    _npcPursuitController.HasBrokenPursuit = false;
                    _brokenPursuitPauseTimer = _npcPursuitController.BrokenPursuitPauseTime;
                }
            }
            else if (_brokenPursuitPauseTimer < 0)
            {
                _npcPursuitController.HasBrokenPursuit = false;
                _brokenPursuitPauseTimer = _npcPursuitController.BrokenPursuitPauseTime;

                RotateNPCAndChildren();
                MoveNormally();
            }
        }
    }