IEnumerator SnailWaitRepeat(AVR_Snail snail) { int moveAmount = (int)Random.Range(1f, 30.0f); snail.Move(moveAmount); float waitTime = Random.Range(0.2f, 3f); yield return(new WaitForSecondsRealtime(waitTime)); StartCoroutine(SnailWaitRepeat(snail)); }
// Update is called once per frame void Update() { if (isFlip) { Flip(); isFlip = false; } if (Input.GetKeyUp(KeyCode.Space)) { Flip(); } if (!_isTesting && isTesting) { // Turn on Testing StartTesting(); _isTesting = isTesting; } if (_isTesting && !isTesting) { // Turn off Testing StopTesting(); _isTesting = isTesting; } // Get Leader float leaderX = float.PositiveInfinity; foreach (AVR_Snail snail in snails) { //Bounds b = item.bodyGeo.GetComponent<Renderer>().bounds; //if (b.center.x < leaderX) if (snail.bodyGeo.position.x < leaderX) { leaderX = snail.bodyGeo.position.x; leader = snail.name; bottomText.text = "Heart to Snail\n" + snail.name + " Leads"; leadSnail = snail; camera.target = leadSnail.bodyGeo.transform; } } // Make sure trailing snails catch up to leader foreach (AVR_Snail snail in snails) { if (snail.bodyGeo.position.x > leadSnail.bodyGeo.position.x + maxLead && !isFlipped) { snail.MoveFixedAmount((leadSnail.bodyGeo.position.x - snail.bodyGeo.position.x) / 30); } } }