Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class Cat : MonoBehaviour {
- // Рівень насичення їжею
- [Range(0f, 100f)] public float Feed = 50;
- // Трата їжі за 1 секунду
- public float FeedLostInSecond = 0.1f;
- // Мінімальний рівень ієі, коли кішка стає голодною
- public float HungerLevel = 40;
- // Швидкість руху кішки
- public float moveSpeed = 5f;
- // миска, до якої кішка йде
- FoodBowl currentBowl;
- // Таймер активності кішки
- float timer;
- private void Update() {
- // Тут ми рахуємо таймер голоду
- if (timer >= 0) {
- timer -= Time.deltaTime;
- if (timer < 0) {
- timer = 1f;
- // Вираховуємо скільки їжі повинно залишитись
- // Але не менше 0 та не більше 100
- Feed = Mathf.Clamp(Feed - FeedLostInSecond, 0, 100);
- }
- }
- // Якщо кішка хоче їсти
- if (Feed <= HungerLevel) {
- // Якщо вона ще не знайшла собі миску з їжею
- // Або обрана миска вже пуста
- if (currentBowl == null || currentBowl.AmountOfFood == 0) {
- currentBowl = null;
- // Вона перевіряє всі миски на мапі
- FoodBowl[] bowls = FindObjectsOfType<FoodBowl>();
- for (int i = 0; i < bowls.Length; i++) {
- // У кожної дивиться чи є там їжа
- if (bowls[i].AmountOfFood > 0) {
- // Як знаходить, обирає цю миску
- currentBowl = bowls[i];
- break;
- }
- }
- }
- // Якщо у неї є миска з їжею
- if (currentBowl != null) {
- // Якщо вона ще не дійшла до миски
- if (Vector3.Distance(transform.position, currentBowl.Waypoint.position) > 0.2f) {
- // Йде до миски
- transform.position = Vector3.MoveTowards(transform.position,
- currentBowl.Waypoint.position, moveSpeed * Time.deltaTime);
- } else { // Дійшла до миски
- // Вона дивиться скільки хоче з'їсти
- int wantToEatCount = 100 - (int) Feed;
- // Та скільки миска може дати
- int canGiveFoodCount = currentBowl.AmountOfFood;
- // Рахує скільки зможе з'їсти
- int countToEat = Mathf.Min(wantToEatCount, canGiveFoodCount);
- // Їсть
- Feed += countToEat;
- // З миски їжа теж зникає
- currentBowl.TakeFood(countToEat);
- // Кішка губить інтерес до цієї миски
- currentBowl = null;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement