думал сделать всё одной анимацией, но столкнулся с кучей ограничений редактора.
Кажется, проще всего написать свой компонент, который будет императивно управлять всей сценой, вручную менять спрайты, вручную проигрывать звуки, и т.д.
Но, может, кто-нибудь подскажет готовый удобный инструмент из ассет стора (или я просто не умею работать с анимациями и контроллерами, и вы подскажете - как это делать на них).
Катсцены в Unity можно делать с помощью Cinemachine. В Package Manager устанавливается.
Посмотрел в сторону Cinemamachine, но оттуда подходит только камера с зумом, это сделаю и сам. В итоге пришёл к такой концепции: - Отдельно описываю шаблоны персонажей и атак. - Создаю параметризуемый Scene Controller. - Описываю IBattleAction, которые выполняются последовательно, расставляя персонажей, перемещая их, управляют фокусом камеры, включают звуки и меняют анимационные клипы. Получается: - Unity использую для биндинга звуков и графики. - Контроллер управляет всей сценой. - В зависимости от того, кто, кого и чем атакует, формируется разный набор IBattleAction для описания сцены. yield return ChangeScene(Attacker); yield return new BattlerAction.ChangeAnimation(Attacker, Attack.InitAnimation); yield return new BattlerAction.PlaySound(Attack.InitSound); yield return new BattlerAction.MoveForward(Attacker); yield return new BattlerAction.WaitOutOfScreen(Attacker); yield return ChangeScene(Defender); yield return new BattlerAction.ResetPosition(Attacker); yield return new BattlerAction.MoveForward(Attacker); yield return new BattlerAction.WaitAttackRange(Attacker, Defender, Attack); yield return new BattlerAction.ChangeAnimation(Attacker, Attack.HitAnimation); yield return new BattlerAction.PlaySound(Attack.HitSound); yield return FadeScene(Defender); От идеи использования Animation Event и прочих контроллеров, параметризуемых в Unity отказался - слишком много ограничений.
Обсуждают сегодня