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();
    }
예제 #3
0
    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);
    }