Create a gist now

Instantly share code, notes, and snippets.

Embed
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Animations;
public class MixAnimation : MonoBehaviour {
PlayableGraph graph;
AnimationMixerPlayable mixer;
[SerializeField] string clipName1 = "RobotBoyIdle", clipName2 = "RobotBoyRun";
[Range(0, 1)] public float weight;
void Awake()
{
graph = PlayableGraph.Create ();
}
void Start()
{
// アニメーションをResourcesから取得し
// AnimationClipPlayableを構築
var clip1 = Resources.Load<AnimationClip> (clipName1);
var clip1Playable = AnimationClipPlayable.Create (graph, clip1);
var clip2 = Resources.Load<AnimationClip> (clipName2);
var clip2Playable = AnimationClipPlayable.Create (graph, clip2);
// ミキサーを生成して、Clip1とClip2を登録
// (代わりにAnimatorControllerPlayableとかでも可能)
mixer = AnimationMixerPlayable.Create (graph, 2, true);
mixer.ConnectInput (0, clip1Playable, 0);
mixer.ConnectInput (1, clip2Playable, 0);
// outputを生成して、出力先を自身のAnimatorに設定
var output = AnimationPlayableOutput.Create (graph, "output", GetComponent<Animator>());
// playableをoutputに流し込む
output.SetSourcePlayable (mixer);
graph.Play ();
}
void Update()
{
mixer.SetInputWeight (0, weight);
mixer.SetInputWeight (1, 1 - weight);
}
void OnDestroy()
{
graph.Destroy ();
}
}
@tsubaki

This comment has been minimized.

Show comment
Hide comment
Owner

tsubaki commented Jul 29, 2017

animation 97

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