Example #1
0
 void Start()
 {
     darknessStruggleChecks = transform.Find("DarknessStruggle");
     successCheck           = transform.Find("DarknessCheck").GetComponent <InDarkness>();
     myRigidbody            = GetComponent <Rigidbody>();
     characterScript        = GetComponent <ThirdPersonCharacter>();
     darknessNavigate       = GetComponent <DarknessNavigate>();
 }
Example #2
0
    private void Rescue()
    {
        if (struggleTime != 0 && Time.time >= stuckDelayFixTime)
        {
            Vector3 positionSum    = Vector3.zero;
            int     litChecksCount = 0;
            foreach (Transform check in darknessStruggleChecks)
            {
                InDarkness darknessCheck = check.GetComponent <InDarkness>();
                darknessCheck.CheckDarkness();
                if (!darknessCheck.IsInDarkness)
                {
                    litChecksCount++;
                    positionSum += check.position;
                    Debug.Log(check.gameObject.name);
                }
            }

            if (litChecksCount == 0)
            {
                Debug.Log("Really stuck!!");
                darknessNavigate.SetUp();
            }
            else
            {
                Debug.Log(litChecksCount + " out of 12 nearby areas lit");
                Vector3 average        = positionSum / litChecksCount;
                Vector3 lightDirection = average - transform.position;
                rescueDirection = new Vector3(
                    unstuckForce * lightDirection.x,
                    0,
                    unstuckForce * lightDirection.z);
                InvokeRepeating("CheckSuccess", 0f, successCheck.checkInterval);
                characterScript.isStuck = false;                 // force reset in case this needs to be repeated
            }
        }
    }