static void CreateAnimatorController(Texture texture) { string assetPath = AssetDatabase.GetAssetPath(texture); SpriteDivider.Execute(assetPath, 3, 4); List<Sprite> sprites = AssetDatabase .LoadAllAssetRepresentationsAtPath(assetPath) .OfType<Sprite>() .ToList(); SimpleCharacterAnimatorControllerDefinition definition = new SimpleCharacterAnimatorControllerDefinition { ResulutPath = string.Format("Assets/{0}.controller", texture.name), DefaultAnimationClip = CreateSpriteAnimationClip( true, "Default", 0.2F, sprites[0], sprites[1], sprites[2], sprites[1]), PinchAnimationClip = CreateSpriteAnimationClip( true, "Pinch", 0.2F, sprites[6], sprites[7], sprites[8], sprites[7]), HitAnimationClip = CreateSpriteAnimationClip( false, "Hit", 0.1F, sprites[3], sprites[4], sprites[5]), WalkAnimationClip = CreateSpriteAnimationClip( true, "Walk", 0.2F, sprites[9], sprites[10], sprites[11], sprites[10]) }; RuntimeAnimatorController animatorController = SimpleCharacterAnimatorControllerCreator.Create(definition); AssetDatabase.AddObjectToAsset(definition.DefaultAnimationClip, animatorController); AssetDatabase.AddObjectToAsset(definition.PinchAnimationClip, animatorController); AssetDatabase.AddObjectToAsset(definition.HitAnimationClip, animatorController); AssetDatabase.AddObjectToAsset(definition.WalkAnimationClip, animatorController); AssetDatabase.SaveAssets(); }
static void CreateAnimatorController(Texture texture) { string assetPath = AssetDatabase.GetAssetPath(texture); SpriteDivider.Execute(assetPath, 3, 4); List <Sprite> sprites = AssetDatabase .LoadAllAssetRepresentationsAtPath(assetPath) .OfType <Sprite>() .ToList(); SimpleCharacterAnimatorControllerDefinition definition = new SimpleCharacterAnimatorControllerDefinition { ResulutPath = string.Format("Assets/{0}.controller", texture.name), DefaultAnimationClip = CreateSpriteAnimationClip( true, "Default", 0.2F, sprites[0], sprites[1], sprites[2], sprites[1]), PinchAnimationClip = CreateSpriteAnimationClip( true, "Pinch", 0.2F, sprites[6], sprites[7], sprites[8], sprites[7]), HitAnimationClip = CreateSpriteAnimationClip( false, "Hit", 0.1F, sprites[3], sprites[4], sprites[5]), WalkAnimationClip = CreateSpriteAnimationClip( true, "Walk", 0.2F, sprites[9], sprites[10], sprites[11], sprites[10]) }; RuntimeAnimatorController animatorController = SimpleCharacterAnimatorControllerCreator.Create(definition); AssetDatabase.AddObjectToAsset(definition.DefaultAnimationClip, animatorController); AssetDatabase.AddObjectToAsset(definition.PinchAnimationClip, animatorController); AssetDatabase.AddObjectToAsset(definition.HitAnimationClip, animatorController); AssetDatabase.AddObjectToAsset(definition.WalkAnimationClip, animatorController); AssetDatabase.SaveAssets(); }
public static RuntimeAnimatorController Create( SimpleCharacterAnimatorControllerDefinition definition) { AnimatorController animatorController = AnimatorController.CreateAnimatorControllerAtPath(definition.ResulutPath); AnimatorStateMachine stateMachine = animatorController.layers.First().stateMachine; AnimatorState defaultState = stateMachine.AddState("Default"); defaultState.motion = definition.DefaultAnimationClip; AnimatorState pinchState = stateMachine.AddState("Pinch"); pinchState.motion = definition.PinchAnimationClip; AnimatorState hitState = stateMachine.AddState("Hit"); hitState.motion = definition.HitAnimationClip; AnimatorState walkState = stateMachine.AddState("Walk"); walkState.motion = definition.WalkAnimationClip; AnimatorControllerParameter hpRateParameter = new AnimatorControllerParameter { name = "HpRate", defaultFloat = 1.0F, type = AnimatorControllerParameterType.Float }; animatorController.AddParameter(hpRateParameter); stateMachine.defaultState = defaultState; { AnimatorStateTransition transition = new AnimatorStateTransition { destinationState = defaultState, hasExitTime = true, exitTime = 1.0F, duration = 0.0F }; hitState.AddTransition(transition); } { AnimatorStateTransition transition = new AnimatorStateTransition { destinationState = pinchState, hasExitTime = false, duration = 0.0F, }; transition.AddCondition(AnimatorConditionMode.Less, 0.3F, hpRateParameter.name); defaultState.AddTransition(transition); } { AnimatorStateTransition transition = new AnimatorStateTransition { destinationState = defaultState, hasExitTime = false, duration = 0.0F, }; transition.AddCondition(AnimatorConditionMode.Greater, 0.3F, hpRateParameter.name); pinchState.AddTransition(transition); } return(animatorController); }