Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Animations;
public class LayerAnimation : MonoBehaviour {
PlayableGraph graph;
AnimationMixerPlayable mixer;
[SerializeField] AnimationClip runClip, face1Clip, face2Clip;
[Range(0, 1)] public float weight;
void Awake()
{
graph = PlayableGraph.Create ();
}
void Start()
{
// アニメーションをResourcesから取得し
// AnimationClipPlayableを構築
var runPlayable = AnimationClipPlayable.Create (graph, runClip);
var face1Playable = AnimationClipPlayable.Create (graph, face1Clip);
var face2Playable = AnimationClipPlayable.Create (graph, face2Clip);
// 表情を二つ登録
mixer = AnimationMixerPlayable.Create (graph, 2, true);
mixer.ConnectInput (0, face1Playable, 0);
mixer.ConnectInput (1, face2Playable, 0);
// runPlayable(走るモーション)とmixer(表情)を合成
var layer = AnimationLayerMixerPlayable.Create (graph, 2);
layer.AddInput (runPlayable, 0, 1);
layer.AddInput (mixer, 0, 1);
// outputを生成して、出力先を自身のAnimatorに設定
var output = AnimationPlayableOutput.Create (graph, "output", GetComponent<Animator>());
// playableをoutputに流し込む
output.SetSourcePlayable (layer);
graph.Play ();
}
void Update()
{
mixer.SetInputWeight (0, weight);
mixer.SetInputWeight (1, 1 - weight);
}
void OnDestroy()
{
graph.Destroy ();
}
}
Owner

tsubaki commented Jul 29, 2017

animation 99

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment