Возможно ли в скрипте прибавлять секунды к анимации?

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

Возможно ли в скрипте прибавлять секунды к анимации?

Сообщение Zelderon 19 сен 2021, 13:18

Здравствуйте, вероятнее всего мой вопрос слишком глупый, так как в гугле никто его еще не задавал. В общем у меня был старый TimeBar, реализовал я его очень просто вот скрипт, но здесь мне не нравится, что сам таймбар работает только с 1 картинкой, как бы не вырвиглазно, но и не сказать, что прям супер красиво.

Синтаксис:
Используется csharp
public void SetTime(int bonusTime)
    {
        timeRemaining += bonusTime;
    }

    private void Start()
    {
        timeRemaining = max_time;
    }
    private void Update()
    {    
        if (timeRemaining > 0)
        {
            timeRemaining -= Time.deltaTime;
            timer_liner_image.fillAmount = timeRemaining / max_time;
        }


Собственно я нашел красивый спрайт ProgressBar там много слоев имейдж, двигается анимацией, я в игре все сделал, но не знаю как сделать так, чтобы когда ползунок анимации в прогресс баре уменьшается, чтобы я мог подбирать бонусное время и это бонусное время прибавлялось к тайм бару как это сделано выше в старом варианте? Если это невозможно, можно ли сделать через Слайдер TimeBar нескольких слоев картинок? Там я уже смогу работать через slider.value-= Time.deltaTime самый самый первый вариант TimeBar такой был, по моему я от него избавился, так как не смог добиться хорошей плавности, но это не точно.
Zelderon
UNIт
 
Сообщения: 133
Зарегистрирован: 14 дек 2020, 12:11

Re: Возможно ли в скрипте прибавлять секунды к анимации?

Сообщение samana 19 сен 2021, 14:00

Если я правильно понимаю, то вы хотите чтобы показ прогресса некой анимации зависел от значения переменной timeRemaining?
Если да, то вы можете напрямую указывать текущий процент анимации для клипа. Например в этой теме показаны несколько способов (https://answers.unity.com/questions/1002400/how-do-i-set-the-time-of-an-animation-playing-in-t.html)
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Возможно ли в скрипте прибавлять секунды к анимации?

Сообщение Zelderon 20 сен 2021, 10:33

samana писал(а):Если я правильно понимаю, то вы хотите чтобы показ прогресса некой анимации зависел от значения переменной timeRemaining?
Если да, то вы можете напрямую указывать текущий процент анимации для клипа. Например в этой теме показаны несколько способов (https://answers.unity.com/questions/1002400/how-do-i-set-the-time-of-an-animation-playing-in-t.html)


Спасибо большое. А вы случайно не знаете, почему мой персонаж находясь в триггере не всегда выполняет условие триггера? У меня есть обычная платформа, на поверхности этой платформы у меня тоненькая полоса бокс коллайдера. У этой платформы есть ребенок, у которого есть триггер и внутри этого триггера как раз родительский коллайдер. Так вот иногда, если прям очень быстро кликать мышкой или тачем на телефоне у меня триггер не срабатывает и персонаж прыгает в сторону, то есть триггер не срабатывает. Я сделал триггер таким тоненьким именно для того, чтобы уменьшить вероятность боковых прыжков, теперь 1 случай из 100 только срабатывает, но это ломает механику :( Или мне отдельную тему надо создать? Я просто подумал, может у этой проблемы тоже есть простое решение?
P.s. У меня не срабатывает триггер тогда, когда я несколько раз подряд прыгаю от одной платформы к другой наверх, снизу вверх используя Platform Effector 2d там еще и скорость увеличивается, полагаю это из-за скалярного произведения векторов, и вот в какой-то момент персонаж прыгает в бок.
Вот ссылка на скрин, прикрепить не получается
https://ibb.co/s6L5bPy

Синтаксис:
Используется csharp
Vector2 leftJump = new Vector2(-1, 1);
    Vector2 rightJump = new Vector2(1, 1);

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("LeftTrigger"))
        {
            leftJump = Vector2.up;
        }
        else if (collision.CompareTag("RightTrigger"))
        {
            rightJump = Vector2.up;
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        leftJump = new Vector2(-1, 1);
        rightJump = new Vector2(1, 1);
        jump_pos = transform.position.y;
    }
Zelderon
UNIт
 
Сообщения: 133
Зарегистрирован: 14 дек 2020, 12:11

Re: Возможно ли в скрипте прибавлять секунды к анимации?

Сообщение samana 20 сен 2021, 18:52

На счёт этого я вряд ли подскажу, очень трудно ловить физические тонкости, ещё и со стороны.
А вы уверены что триггер не срабатывает, расставляли Debug.Log внутри этих методов? Может получается так, что срабатывает вход в триггер, но в следующем кадре происходит выход из триггера.. Это лишь догадки.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


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

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

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