IEnumerator RespawnTimer() { yield return(new WaitForSeconds(respawnInterval)); yield return(new WaitWhile(() => TilemapHelper.InPlayerRoom(this.gameObject))); yield return(new WaitForSeconds(0.5f)); Vector3 position = FindVacantPosition(); var obj = Instantiate(whitePowderPrefab, position, Quaternion.identity, this.transform.parent); RegisterPowder(obj.GetComponent <WhitePowder>()); }
IEnumerator Loop() { while (true) { var food = sensors.observations.Find((f) => f.CompareTag("MoleRatFood")); if (state != State.DIGGING && food != null && TilemapHelper.InPlayerRoom(this.gameObject)) { targetObj = food; target = food.transform.position; state = State.MOVING; // yield return ShowExclamation(); } switch (state) { case State.IDLE: yield return(Idle()); state = State.MOVING; break; case State.MOVING: yield return(Move(food != null)); if (food != null && Vector3.Distance(this.transform.position, food.transform.position) < 0.1f) { state = State.DIGGING; } else { state = State.IDLE; } break; case State.DIGGING: yield return(Dig()); state = State.IDLE; break; } } }