// SEARCHING STATE void SearchState() { sprite.color = new Color(0, 1, 0); // Move the bee toward a random nectar spot transform.position = Vector2.MoveTowards(transform.position, foodSpots[randomSpot].position, moveSpeed * Time.deltaTime); energy = 0.1f; energyAmt -= energy; // Check the distance between the bee and the nectar, if within range // Change state to Gather nectar if (Vector2.Distance(transform.position, foodSpots[randomSpot].position) < 0.2f) { state = BeeStates.Gather; } // Keep looking for Birds if (CheckBirds()) { state = BeeStates.Flee; } if (!HasEnergy()) { state = BeeStates.Rest; } }
// GATHERING STATE void GatherState() { sprite.color = new Color(1, 1, 1); nectarGathered += 0.1f; if (nectarGathered >= beeMaxNectar) { state = BeeStates.Rest; } else { state = BeeStates.Search; } // Keep looking for Birds if (CheckBirds()) { state = BeeStates.Flee; } if (!HasEnergy()) { state = BeeStates.Rest; } }
// FLEEING STATE void FleeState() { sprite.color = new Color(1, 0, 0); transform.position = Vector2.MoveTowards(transform.position, hive.position, moveSpeed * Time.deltaTime); energy = 0.8f; energyAmt -= energy; // Check for energy if (!HasEnergy()) { state = BeeStates.Rest; } }
// RESTING STATE void RestState() { sprite.color = new Color(1, 0, 1); transform.position = Vector2.MoveTowards(transform.position, hive.position, moveSpeed * Time.deltaTime); if (Vector2.Distance(transform.position, hive.position) < 0.2f) { energyAmt += 0.3f; nectarGathered -= nectarUnloaded; if (nectarGathered <= 0f) { if (energyAmt >= 500f) { state = BeeStates.Search; } } } }
void Start() { state = BeeStates.Search; sprite = GetComponent <SpriteRenderer>(); randomSpot = Random.Range(0, foodSpots.Length); }