Mathf.PingPong для реакции на клик

Программирование на Юнити.

Mathf.PingPong для реакции на клик

Сообщение lokenpoken 08 фев 2017, 01:51

Здравствуйте, есть объект, когда на него кликаешь он должен немного увеличится, а потом уменьшится до исходного размера. На этом объекте уже висит анимация ,поэтому я хочу реализовать это скриптом.
Собственно, если я пихаю

transform.localScale = new Vector2(Mathf.PingPong(Time.time, maximum - minimum) + minimum, Mathf.PingPong(Time.time, maximum - minimum) + minimum);

в update, то он естественно увеличивается/уменьшается все время, если же я вставляю его в метод или ввожу bool, условия или циклы, то он делает примерно 1/10 от того изменения размера, который должен был и останавливается.

Как сделать так, чтобы объект только 1 раз увеличился/уменьшился?
lokenpoken
UNец
 
Сообщения: 19
Зарегистрирован: 01 фев 2017, 03:11

Re: Mathf.PingPong для реакции на клик

Сообщение Albeoris 27 фев 2017, 00:12

Если ты хочешь, чтобы какое-то событие случилось лишь раз, значит нужно ввести признак того, что оно случилось или убрать из игрового цикла обработчик.

Например, ты можешь ввести флажок, который будет определять - должно выполняться это событие или нет:

Синтаксис:
Используется csharp
private bool _canScale;

void Update()
{
  if (canScale)
  {
    transform.localScale = ...;
   
    if (transform.localScale > ...)
        canScale = false;
  }
}


Или ты можешь реализовать это на основе событий или делегатов:

Синтаксис:
Используется csharp
private event Action UpdateEvent;

void Start()
{
  UpdateEvent += ScaleOnUpdate;
}

void Update()
{
  UpdateEvent?.Invoke();
}

void ScaleOnUpdate()
{
  transform.localScale = ...;
 
  if (transform.localScale > ...)
    UpdateEvent -= ScaleOnUpdate;
}


Или последовать парадигме, которую предлагает нам Unity - прицепить к объекту компонент, который будет заниматься его масштабированием, а после отключить его или уничтожить.
Albeoris
UNIт
 
Сообщения: 146
Зарегистрирован: 19 окт 2013, 13:12


Вернуться в Скрипты

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

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