Сделал 2 анимации TreeDance.anim и Fall.anim. По моей задумке при первых двух кликах на дерево(мой объект) должна воспроизводиться анимация TreeDance.anim, а на третий Fall.anim.
Так вот, TreeDance.anim воспроизводится, а Fall.anim нет.
Объясните пожалуйста как сделать так чтобы при уничтожении дерева появлялись брёвна (ещё мои объекты).
Моя версия скрипта:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TreeDestroy : MonoBehaviour {
private int td;
public GameObject Log;
void Start () {
}
void Update () {
if (td == 3) {
Destroy (gameObject);
Instantiate (Log);
Instantiate (Log);
Instantiate (Log);
}
}
void OnMouseDown () {
td = td + 1;
if (td <= 2) {
GetComponent<Animator> ().SetTrigger ("Dance");
}
else
GetComponent<Animator> ().SetTrigger ("Fall");
}
}
Заранее спасибо за ответ!
Попробуй это:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Destroyable : MonoBehaviour
{
private int _td;
public GameObject[] ObjectsToDrop;
void OnMouseDown()
{
_td += 1;
if (_td <= 2)
{
GetComponent<Animator>().SetTrigger("Dance");
}
else
{
GetComponent<Animator>().SetTrigger("Fall");
StartCoroutine(WaitForAnimationEndDropItemsAndDestroy());
}
}
IEnumerator WaitForAnimationEndDropItemsAndDestroy()
{
yield return new WaitForSeconds(1);//указать длинну анимации в секундах
DropItems();
Destroy(gameObject);
}
private void DropItems()
{
foreach (var item in ObjectsToDrop)
{
if (item != null)
{
var tmp = Instantiate(item);
var zdvig = Random.Range(1,3);
tmp.transform.location = new Vector3(tmp.transform.location.x + zdvig, tmp.transform.location.y+zdvig, tmp.transform.location.z);
}
}
}
}
По коду вроде все правильно, вероятно ошибка в настройке анимации. Я бы посоветовал разумнее настроить AnimatorController
. На сколько я понимаю у вас два состояния в нем и переходите вы в них устанавливая соответствующие переменные аниматора. Скорей всего дело в переходах. Я бы сделал параметр State
типа int
и в него при клике передавал ваш td
. А дальше настроил переходы в контроллере из AnyState
в ваши анимации по требуемым условиям со State
. Если ваша анимация не должна крутится без остановки, то не забудьте в настройках перехода отключить галочку с переходом если уже находитесь в этом состоянии Can Transition To Self
.
Если вы потом надумаете что дерево должно падать на 4 раз, вам не придется в код лезть чтобы исправить это, просто подправите контроллер.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет, у меня сейчас игра на eng языке хочу добавить ru языкПодскажите хороший способ локализации игрового меню
Пишу програмку на юнити, есть база данных, по определенному запросу нужно сохранить данные в xml формате, запрос написан вышеВ итоге у меня...
Есть некая служба, которая лежит на сервисе Microsoft AzureНо при вызове её из кода в Visual Studio вылетает следующая ошибка: