Я сейчас нахожусь в процессе создания игры, и я пытаюсь заставить зеркало воспроизводить случайную анимацию, когда игрок проходит мимо нее.Мне удалось заставить его работать, вроде как, и у меня возникли некоторые проблемы с этим.
Итак, сначала я создал анимацию холостого хода вместе с тремя случайными анимациями, которые должны активироваться, когда игрок проходит мимо и из анимации холостого хода.Затем я создал простой переход к каждому из трех состояний, оставив стандартное время выхода и продолжительность перехода включенными.Затем я создал этот скрипт, чтобы попытаться активировать анимацию:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class mirrorActivate : MonoBehaviour
{
private GameObject FSSecurity;
public GameObject mirrorblank;
public List<AnimationClip> anim = new List<AnimationClip>();
// Start is called before the first frame update
private void Awake()
{
}
void Start()
{
FSSecurity = GameObject.Find("Female Security");
}
// Update is called once per frame
void Update()
{
if (FSSecurity.transform.position.x == 10)
{
StartAnimation();
}
}
public void StartAnimation()
{
int random = Random.Range(0, anim.Count);
mirrorblank.GetComponent<Animator>().Play(anim[random].name);
}
}
Что работает: похоже, проигрывается случайная анимация каждый раз, когда игрок идет в это место.
Что не работает?: 1. При входе в сцену бездействующая анимация немедленно запускает одну из трех анимаций без активации оператора if.((Он должен быть в режиме ожидания и переключаться на один из трех случайным образом, если if () истинно)) 2. Из-за точности с плавающей запятой использование == нецелесообразно, это теоретически может быть решено, если я использую диапазон с <= и> = а не ==.Но если есть лучшее решение для активации игрока, передающего объект, я открыт для предложений.3. Анимации при случайном воспроизведении не полностью воспроизводятся в течение всего времени, которое анимация должна длиться.4. Последняя проблема после активации: они не возвращаются в состояние ожидания до следующей активации.
Что я ищу: случайная анимация, воспроизводимая каждый раз, когда пользователь проходит мимо объекта, и когда он заканчивает работу, возвращается в режим ожидания.И как примечание стороны, есть более эффективный способ узнать, когда игрок передает объект (я использую 2D)
(по какой-то причине не позволяю мне ставить тэг unity2d на пост)
Простые переходы между, триггеры не установлены или что-то еще