Трата хп по времени

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Трата хп по времени

Сообщение ShadowWarrior 10 авг 2018, 23:19

Здравствуйте. А как реализовать одну механику, например у нас есть три жизни(каждая имеет два заряда) и при истечении 10 секунд отнимался один заряд здоровья. Как я понимаю, что через дельта тайм. Я знаю как инстантиэйтить сердца и удалять их, а как удалять их последовательно и при удалении последнего "Конец игры". И само нанесение урона должно происходить если монстр есть на сцене, а при его смерти и появлении другого монстра таймер просто обновляется.
Аватара пользователя
ShadowWarrior
UNец
 
Сообщения: 22
Зарегистрирован: 22 апр 2018, 17:37

Re: Трата хп по времени

Сообщение kirya_355 11 авг 2018, 12:37

ну вот , что-то сделал с помощью корутин
Синтаксис:
Используется csharp
using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;

public class waittodie : MonoBehaviour
{
        [SerializeField] GameObject[] lives;//в инспекторе скидываешь свои префабы жизней с их позициями 0 это первая и 5(в твоём случае) это последняя
        private int n;
        public float TimeToHit;//в инспекторе пишешь 10 или сколько там тебе нужно
        private bool monster = false;
        private GameObject[] allGo;
        void Start ()
        {
                foreach (var v in lives) Instantiate (v);
                StartCoroutine (WaitToDie ());

        }
        void Update ()
        {
                n = lives.Length;//проверяется сколько жизней
                allGo = FindObjectsOfType<GameObject> ();
                foreach (GameObject go in allGo)//на сцене ищется объект с тегом монстр
                {
                        if (go.CompareTag ("monster"))//не забудь префабу монстра сделать тег monster
                                monster = true;
                        else if (!go.CompareTag ("monster"))
                        {
                                monster = false;
                                TimeToHit=0;
                        }

                }

        }

        IEnumerator WaitToDie ()
        {

                while (monster)
                {
                        yield return new WaitForSeconds (TimeToHit);
                        Destroy (lives[n].gameObject);//разрушается последняя жизнь
                        yield return null;
                }

        }
}
 
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: Трата хп по времени

Сообщение sledo 11 авг 2018, 12:57

Мне кажется что для человека который не может проводить простые вычисления вычитания, работать с корутинами будет немного сложно.

В общем скрипт примерно будет выглядеть так:
Синтаксис:
Используется csharp
float time = 10;
int количество_жизней = 3
int количество_Зарядов_Жизней = 2

time -= Time.deltaTime;

if(time <= 0)
{
    количество_Зарядов_Жизней -= 1;
time = 10;
}

if(количество_Зарядов_Жизней  == 0)
{
количество_жизней -=1;
}

if(количество_жизней == 0)
{
//кары небесные
}
 
sledo
Старожил
 
Сообщения: 831
Зарегистрирован: 05 янв 2014, 15:44


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28