Помогите с анимацией по клику (Решено)

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

Помогите с анимацией по клику (Решено)

Сообщение rty118 24 ноя 2010, 01:17

Здравствуйте, Форумчане. Столкнулся с проблемой. Надеюсь на Вашу помощь.
Суть проблемы: нужен запуск двух анимаций одного предмета по клику мыши. Сложность в том, что нужен клик одной и той же кнопкой, при чем после запуска второй анимации (вторым кликом), по третьему клику должна проигрываться снова первая. Пример, анимация выдвижного ящика по которому кликаешь, и он ездит туда-сюда. Варианты с таймером и разными кнопками не подходят, нужна анимация именно одной кнопкой.
Вот скрипт, который пытался использовать(предположу, что подход в корне неверен)
Синтаксис:
Используется javascript
var targetRoot : GameObject;
var grounded : boolean;

function Update(){
if ( Input.GetMouseButtonDown(0)&&grounded==false)
{var hit : RaycastHit;
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var select = GameObject.FindWithTag("Teapot001").transform;
if (Physics.Raycast (ray, hit, 100.0))
{select.tag = "Teapot001"; hit.collider.transform.tag = "Teapot001"; }
 targetRoot.animation.Play("idle");
grounded = true;
}
}
function OnMouseDown () {
if (grounded == true){
targetRoot.animation.Play("idle0");
grounded = false;   - проблема в этом не рабочем куске, строка по логике нужна,но если убрать эту строку, то проигрывается только первая анимация, с ней же не работает.
}
}
 

Спасибо за помощь.
Последний раз редактировалось rty118 24 ноя 2010, 12:52, всего редактировалось 3 раз(а).
rty118
UNец
 
Сообщения: 3
Зарегистрирован: 24 ноя 2010, 00:58

Re: Помогите с анимацией по клику

Сообщение Neodrop 24 ноя 2010, 02:54

Внимательно смотрим на кнопки в форме размещения сообщения и видим там кнопку syntax. Наводим на неё мышку и читаем всплывающую подсказку. Если всё становится понятно, то мы больше никогда не увидим так неопрятно прикреплённый к сообщению, код. За два с лишним года и 24000 сообщений, вы первый. Поздравляю. :ymsmug:
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите с анимацией по клику

Сообщение rty118 24 ноя 2010, 10:29

Виноват. Больше не повторится. И все же, вопрос в силе.
Кстати, во всплывающей подсказке не javascript, а javascrip. Вобщем ничего страшного, но я как нуб не мог сперва понять, почему у меня подсветка в коде не работает.
Последний раз редактировалось rty118 24 ноя 2010, 12:57, всего редактировалось 1 раз.
rty118
UNец
 
Сообщения: 3
Зарегистрирован: 24 ноя 2010, 00:58

Re: Помогите с анимацией по клику

Сообщение Multirezonator 24 ноя 2010, 11:43

Синтаксис:
Используется csharp
 
//...................... ваш код
bool isFirst=true;//переменная для определения какую анимацию проигрывать
void OnClic(){
   if(isFirst) animation.Play("animation1");
   else animation.Play("animation2");
   isFirst=!isFirst;
}
 
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Помогите с анимацией по клику

Сообщение rty118 24 ноя 2010, 12:30

Огромное спасибо, Multirezonator. Ниже привожу рабочий код (может кому-то пригодится):

Синтаксис:
Используется javascript
var targetRoot : GameObject;
var isFirst : boolean=true;
function Update(){
if ( Input.GetMouseButtonDown(0))
{var hit : RaycastHit;
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var select = GameObject.FindWithTag("Teapot001").transform;
if (Physics.Raycast (ray, hit, 100.0))
{select.tag = "Teapot001"; hit.collider.transform.tag = "Teapot001"; }
 OnClic();
}
}
function OnClic(){
   if(isFirst) {targetRoot.animation.Play("idle");
   }
   else {targetRoot.animation.Play("idle0");
   }
   isFirst=!isFirst;
}
 


Нашел еще один похожий способ решения, выкладываю:

Синтаксис:
Используется javascript
var targetRoot : GameObject;
var grounded : boolean;

function OnMouseDown () {
if(grounded == false){
targetRoot.animation.Play("idle");
grounded = true;
 }
else{
targetRoot.animation.Play("idle0");
 grounded = false;
}
}
 
rty118
UNец
 
Сообщения: 3
Зарегистрирован: 24 ноя 2010, 00:58


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

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

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