Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using UnityEditor;
- public class TestWindow : EditorWindow {
- public GameObject target;
- public AnimationClip idleAnim;
- public AnimationClip walkAnim;
- public AnimationClip runAnim;
- // Use this for initialization
- void Start () {
- }
- [MenuItem ("Window/Animation Helper")]
- static void OpenWindow () {
- // Get existing open window or if none, make a new one:
- EditorWindow.GetWindow(typeof(TestWindow));
- }
- void OnGUI()
- {
- target = EditorGUILayout.ObjectField("Target Object", target, typeof(GameObject), true) as GameObject;
- idleAnim = EditorGUILayout.ObjectField("Idle", idleAnim, typeof(AnimationClip), true) as AnimationClip;
- walkAnim = EditorGUILayout.ObjectField("Walk", walkAnim, typeof(AnimationClip), true) as AnimationClip;
- runAnim = EditorGUILayout.ObjectField("Run", runAnim, typeof(AnimationClip), true) as AnimationClip;
- if (GUILayout.Button("Create"))
- {
- UnityEditor.Animations.AnimatorController controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath("Assets/" + target.name + ".controller");
- // Adds 2 parameters
- controller.AddParameter("Speed", UnityEngine.AnimatorControllerParameterType.Float);
- //Add states
- UnityEditor.Animations.AnimatorState idleState = controller.layers[0].stateMachine.AddState("Idle");
- idleState.motion = idleAnim;
- // Blend Tree creation
- UnityEditor.Animations.BlendTree blendTree;
- UnityEditor.Animations.AnimatorState moveState = controller.CreateBlendTreeInController("Move", out blendTree);
- // BlendTree setup
- blendTree.blendType = UnityEditor.Animations.BlendTreeType.Simple1D;
- blendTree.blendParameter = "Speed";
- blendTree.AddChild(walkAnim);
- blendTree.AddChild(runAnim);
- UnityEditor.Animations.AnimatorStateTransition leaveIdle = idleState.AddTransition(moveState);
- UnityEditor.Animations.AnimatorStateTransition leaveMove = moveState.AddTransition(idleState);
- leaveIdle.AddCondition(UnityEditor.Animations.AnimatorConditionMode.Less, 0.01f, "Speed");
- leaveMove.AddCondition(UnityEditor.Animations.AnimatorConditionMode.Greater, 0.01f, "Speed");
- target.GetComponent<Animator>().runtimeAnimatorController = controller;
- }
- }
- // Update is called once per frame
- void Update () {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement