void Start() { darknessStruggleChecks = transform.Find("DarknessStruggle"); successCheck = transform.Find("DarknessCheck").GetComponent <InDarkness>(); myRigidbody = GetComponent <Rigidbody>(); characterScript = GetComponent <ThirdPersonCharacter>(); darknessNavigate = GetComponent <DarknessNavigate>(); }
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 } } }