Exemple #1
0
    void Update()
    {
        //*** Look back at player?
        {
            if (lookAtPlayerDeadTime > 0)
            {
                lookAtPlayerDeadTime -= Time.deltaTime;
            }

            if (lookAtPlayerDeadTime <= 0)
            {
                float playerLookingAtMeAngle = GetStareAngleTargetAtMe();
                bool  isPlayerLookingAtMe    = playerLookingAtMeAngle < 30;
                playerLookingAtMeTime = isPlayerLookingAtMe             ? Mathf.Min(10, playerLookingAtMeTime + Mathf.Cos(Mathf.Deg2Rad * playerLookingAtMeAngle) * Time.deltaTime)
                                                                                                                                                                                        : Mathf.Max(0, playerLookingAtMeTime - Time.deltaTime);
                if (playerLookingAtMeTime > 5)
                {
                    float lookTime01 = (Mathf.Min(10, playerLookingAtMeTime) - 5) / 5.0f;
                    bool  lookBack   = Random.value > lookTime01 * (isSocrates ? 0.05f : 0.001f);
                    if (lookBack)
                    {
                        StartLookingAtPlayer(lookTime01);
                    }
                }
            }
        }

        //*** Finished looking at current target?
        {
            currentTargetLookRestTime -= Time.deltaTime;
            if (currentTargetLookRestTime <= 0)
            {
                StartLookingAtSomePOI();
            }
        }

        //*** Update head and eye targets depending on current look target
        {
            Vector3 lookTargetPos = targetIsPlayer  ? cameraControlTwoPerspectives.GetLookTarget()
                                                                                                                                                        : lookTargetTransform.position;
            headLookTarget = Vector3.Lerp(headLookTarget, lookTargetPos, Time.deltaTime * GetHeadTurnSpeed());
            eyeLookTarget  = Vector3.Lerp(eyeLookTarget, lookTargetPos, Time.deltaTime * GetEyeTurnSpeed());
        }

        UpdateEyesToLookAtTarget();
    }