目次
1. まえがき
2. 結論
3. 全ての素材入れたAnimationを作成
4. AnimationファイルのpptrCurveMappingの部分をコピペしてtxt化
5. txtファイルからFileIDのみを取得
6. FileIDからAnimationを複数作成
7. 実行
8. まとめ
まえがき
Unityで2Dゲームを作る際、下のようなスプライトを使用することがあると思います。
この画像をUnityで使用したいと思ったら
・画像の切り分け
参照:nityでスプライト(画像が1つまとめてあるやつ)を切り分ける方法
・素材の1つをHierarchyに出しAnimatorをコンポーネント
参照:Unity 2Dアクションの作り方【アニメーション作成】
・Animator Controllerを作成したのちAnimator内に導入
参照:Unity 2Dアクションの作り方【アニメーション作成】
・Window>Animation>AnimationでAnimationを作成
参照:Unity 2Dアクションの作り方【アニメーション作成】
先ほど切り分けた素材0→1→2→1→0で待機状態(?)のモーションを作成
といった流れになると思います。
問題なのは最後のanimationの作成の手順。
ゆるドラシルのスプライトは横9×縦6の54種類で3つで1組なため18つのAnimation作成できます。多い!
素材のキャラを増やすと18の倍数づつ増えていくためさらに多くなります。
数が多すぎてそんなのやってられないため、自動化を試みました。
結論
結論をいうと完全自動化は無理でしたが、ある程度の自動化には成功しました。
手順は以下の通りです。
- 全ての素材入れたAnimationを作成
- AnimationファイルのpptrCurveMappingの部分をコピペしてtxt化
- txtファイルからFileIDのみを取得
- FileIDからAnimationを複数作成
順に説明していきます。
全ての素材入れたAnimationを作成
まず初めに切り分けたすべての素材を詰め込んだAnimationを作成します。
Shiftキーを使えば簡単に複数のprojectタブの素材を選択できます
作成したanimationファイルをVScodeなどのエディターで開くと下記のようになっています
警告
Unity上でCtr+Sなどの保存を行わないと反映されないので気を付けてください(2敗)
フレイヤの素材を全て入れたanimationファイル
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Animation
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: -964861972627419651, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.016666668
value: {fileID: -4601839220051827856, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.033333335
value: {fileID: -1056826484694997815, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.05
value: {fileID: -1158100502417944942, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.06666667
value: {fileID: 6943375991475072377, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.083333336
value: {fileID: 6862453240167101196, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.1
value: {fileID: 8277301849047400619, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.11666667
value: {fileID: 7321675060975734423, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.13333334
value: {fileID: -8886226170175040296, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.15
value: {fileID: -7315815190574178413, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.16666667
value: {fileID: -1628973792630015623, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.18333334
value: {fileID: 2688058052847995457, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.2
value: {fileID: 5146300132090638205, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.21666667
value: {fileID: 8612103298388519002, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.23333333
value: {fileID: -3005837894321400390, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.25
value: {fileID: 4815336511862190452, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.26666668
value: {fileID: -5864148461886379403, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.28333333
value: {fileID: -4953666823269280629, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.3
value: {fileID: -311895720485211514, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.31666666
value: {fileID: -5186902469381402330, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.33333334
value: {fileID: 7278491402254451532, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.35
value: {fileID: 8256032080180098766, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.36666667
value: {fileID: 6563074484271356680, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.38333333
value: {fileID: -4215754394132753658, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.4
value: {fileID: 7497703085604861517, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.41666666
value: {fileID: -140951958587282892, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.43333334
value: {fileID: 2891272152236622026, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.45
value: {fileID: 503337006453547290, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.46666667
value: {fileID: -3615104126135534113, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.48333332
value: {fileID: -8262058837553664321, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.5
value: {fileID: 4689648869347632470, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.51666665
value: {fileID: -799649161100189917, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.53333336
value: {fileID: -1787021197605773777, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.55
value: {fileID: -5060247094520902029, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.56666666
value: {fileID: -7134795176709959434, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.5833333
value: {fileID: -5950624716388236383, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.6
value: {fileID: -4526010008668306558, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.6166667
value: {fileID: -6552007183038197407, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.6333333
value: {fileID: 5532814027816515702, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.65
value: {fileID: -8529415349653719219, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.6666667
value: {fileID: 8869316479295928225, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.68333334
value: {fileID: 3152178736222740502, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.7
value: {fileID: -2023549405097373126, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.71666664
value: {fileID: 3537821203643451822, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.73333335
value: {fileID: -6585872367576136451, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.75
value: {fileID: -4941201520790536638, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.76666665
value: {fileID: -3303184691673769200, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.78333336
value: {fileID: -18684483802693169, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.8
value: {fileID: 253898423026037340, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.81666666
value: {fileID: -8543913171838432685, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.8333333
value: {fileID: -2539205730421474931, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.85
value: {fileID: -5863792351164199999, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.8666667
value: {fileID: -1833113814962414588, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- time: 0.8833333
value: {fileID: 7897757135273334916, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: -964861972627419651, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4601839220051827856, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1056826484694997815, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1158100502417944942, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 6943375991475072377, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 6862453240167101196, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8277301849047400619, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7321675060975734423, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8886226170175040296, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -7315815190574178413, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1628973792630015623, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 2688058052847995457, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 5146300132090638205, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8612103298388519002, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -3005837894321400390, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 4815336511862190452, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5864148461886379403, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4953666823269280629, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -311895720485211514, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5186902469381402330, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7278491402254451532, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8256032080180098766, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 6563074484271356680, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4215754394132753658, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7497703085604861517, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -140951958587282892, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 2891272152236622026, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 503337006453547290, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -3615104126135534113, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8262058837553664321, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 4689648869347632470, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -799649161100189917, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1787021197605773777, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5060247094520902029, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -7134795176709959434, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5950624716388236383, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4526010008668306558, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -6552007183038197407, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 5532814027816515702, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8529415349653719219, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8869316479295928225, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 3152178736222740502, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -2023549405097373126, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 3537821203643451822, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -6585872367576136451, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4941201520790536638, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -3303184691673769200, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -18684483802693169, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 253898423026037340, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8543913171838432685, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -2539205730421474931, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5863792351164199999, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1833113814962414588, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7897757135273334916, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.9
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
AnimationファイルのpptrCurveMappingの部分をコピペしてtxt化
まず初めに他のキャラ切り分けた素材を全て入れたanimationファイルを見てください。
ロキのの素材を全て入れたanimationファイル
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Animation
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 1028554412710824610, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.016666668
value: {fileID: 8770337821196452605, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.033333335
value: {fileID: -478530073766021669, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.05
value: {fileID: 746662855887842566, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.06666667
value: {fileID: 7930036128909813800, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.083333336
value: {fileID: 1128255078774422026, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.1
value: {fileID: -4028077866212815098, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.11666667
value: {fileID: -3543938660656569840, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.13333334
value: {fileID: -5531168250382527491, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.15
value: {fileID: 1024244580606554049, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.16666667
value: {fileID: -3939982276282180439, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.18333334
value: {fileID: 1230322070027652441, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.2
value: {fileID: -4330988582189811724, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.21666667
value: {fileID: 8482282895084324922, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.23333333
value: {fileID: 2089641497648478256, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.25
value: {fileID: 1964294715045691463, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.26666668
value: {fileID: 1968909510626845067, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.28333333
value: {fileID: -3643246003113000918, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.3
value: {fileID: 7799004501529556184, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.31666666
value: {fileID: -8956768362819075929, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.33333334
value: {fileID: 3646164688782368145, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.35
value: {fileID: 4027785544202229449, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.36666667
value: {fileID: -5858931568564500820, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.38333333
value: {fileID: 642580427499525078, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.4
value: {fileID: -7249173427656586123, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.41666666
value: {fileID: 3749952422302323111, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.43333334
value: {fileID: 7134734347653491179, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.45
value: {fileID: -1386638072767002140, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.46666667
value: {fileID: -362633595069746197, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.48333332
value: {fileID: 5660215432936169201, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.5
value: {fileID: -6222230717414218814, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.51666665
value: {fileID: 3466878479963123204, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.53333336
value: {fileID: -4435005994839985195, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.55
value: {fileID: -5725759972188618104, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.56666666
value: {fileID: -7991504989427528491, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.5833333
value: {fileID: 6134622074428692512, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.6
value: {fileID: -888335213327878788, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.6166667
value: {fileID: -1267135896097771623, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.6333333
value: {fileID: 5996745832989700051, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.65
value: {fileID: 1261276160939360892, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.6666667
value: {fileID: 4318442449833461309, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.68333334
value: {fileID: 9216129932739184864, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.7
value: {fileID: 5536550400449473928, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.71666664
value: {fileID: -3186662486778852696, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.73333335
value: {fileID: 5209325513352368208, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.75
value: {fileID: 884150154000790199, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.76666665
value: {fileID: -1208839137451188001, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.78333336
value: {fileID: -7826335868054593182, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.8
value: {fileID: -79352130136498132, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.81666666
value: {fileID: -7128529209088838074, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.8333333
value: {fileID: 2298004941350445666, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.85
value: {fileID: 404554593927829935, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.8666667
value: {fileID: -4906457785067578182, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.8833333
value: {fileID: 423883466480865723, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: 1028554412710824610, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 8770337821196452605, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -478530073766021669, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 746662855887842566, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 7930036128909813800, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 1128255078774422026, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -4028077866212815098, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -3543938660656569840, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -5531168250382527491, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 1024244580606554049, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -3939982276282180439, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 1230322070027652441, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -4330988582189811724, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 8482282895084324922, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 2089641497648478256, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 1964294715045691463, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 1968909510626845067, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -3643246003113000918, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 7799004501529556184, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -8956768362819075929, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 3646164688782368145, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 4027785544202229449, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -5858931568564500820, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 642580427499525078, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -7249173427656586123, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 3749952422302323111, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 7134734347653491179, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -1386638072767002140, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -362633595069746197, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 5660215432936169201, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -6222230717414218814, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 3466878479963123204, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -4435005994839985195, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -5725759972188618104, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -7991504989427528491, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 6134622074428692512, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -888335213327878788, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -1267135896097771623, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 5996745832989700051, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 1261276160939360892, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 4318442449833461309, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 9216129932739184864, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 5536550400449473928, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -3186662486778852696, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 5209325513352368208, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 884150154000790199, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -1208839137451188001, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -7826335868054593182, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -79352130136498132, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -7128529209088838074, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 2298004941350445666, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 404554593927829935, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: -4906457785067578182, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- {fileID: 423883466480865723, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.9
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
フレイヤとロキのanimationファイルの内容はほとんどが同じものとなっていますが、21行目のcurve:と148行目のpptrCurveMapping:の下は大きく異なっています。つまりこの部分が「どのキャラクター素材を使うのか」、「切り分けた素材のどれを使うのか」、といった点を指定しているとわかります。
フレイヤ
- time: 0
value: {fileID: -641581088288083178, guid: 35f37c93cd6317a4ab94763c2ef1b9e0, type: 3}
- time: 0.016666668
value: {fileID: 2539848872382155094, guid: 35f37c93cd6317a4ab94763c2ef1b9e0, type: 3}
ロキ
- time: 0
value: {fileID: 1028554412710824610, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
- time: 0.016666668
value: {fileID: 8770337821196452605, guid: 23849bd0d362c0b4d82b3de7e2d9ebb9, type: 3}
この2つに共通するのはFileIDのは違うがguidは同じということ。つまりguidが「どのキャラクター素材を使うのか」、FileIDが「切り分けた素材のどれを使うのか」を指定していると分かります。
これらのことから切り分けた0,1,2の素材を指定するFileIDとキャラクター素材をするguidを調査して0→1→2→1→0となるようにcurve:とpptrCurveMapping:を書き込むことで、Unityのanimation windowを使わずにanimationファイルを作成できると分かります。
切り分けた素材がどんなFileIDになるかは分からなかったため余計な文字が少ないpptrCurveMapping:の部分をコピペしてテキストファイルを作ります。
FileIDの変換方式が分かればテキストファイル作る必要ないのですが、調べてもわかりませんでした(´;ω;`)
作成したテキストファイル
- {fileID: -964861972627419651, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4601839220051827856, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1056826484694997815, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1158100502417944942, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 6943375991475072377, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 6862453240167101196, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8277301849047400619, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7321675060975734423, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8886226170175040296, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -7315815190574178413, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1628973792630015623, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 2688058052847995457, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 5146300132090638205, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8612103298388519002, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -3005837894321400390, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 4815336511862190452, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5864148461886379403, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4953666823269280629, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -311895720485211514, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5186902469381402330, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7278491402254451532, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8256032080180098766, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 6563074484271356680, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4215754394132753658, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7497703085604861517, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -140951958587282892, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 2891272152236622026, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 503337006453547290, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -3615104126135534113, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8262058837553664321, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 4689648869347632470, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -799649161100189917, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1787021197605773777, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5060247094520902029, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -7134795176709959434, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5950624716388236383, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4526010008668306558, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -6552007183038197407, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 5532814027816515702, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8529415349653719219, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 8869316479295928225, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 3152178736222740502, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -2023549405097373126, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 3537821203643451822, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -6585872367576136451, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -4941201520790536638, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -3303184691673769200, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -18684483802693169, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 253898423026037340, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -8543913171838432685, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -2539205730421474931, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -5863792351164199999, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: -1833113814962414588, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
- {fileID: 7897757135273334916, guid: 0d4de27d4bf5f4240a663edf66ffaff2, type: 3}
このテキストファイルに余計な文字入れるとこの後バグるので気を付けてください
txtファイルからFileIDのみを取得
作成したテキストファイルからfileID:のみを抽出します。
抽出にはC#スクリプトを使用します。
using System;
using System.IO;
using System.Text;
class FileID
{
public String FileIDName = "";
public void FileIDStart()
{
// 文字コードを指定
Encoding enc = Encoding.GetEncoding("UTF-8");
String path = CreateAnimeFile.path + "FileID.txt";//staticにしてあるpathとguid名取得
String guid = CreateAnimeFile.guid;
//ファイル読み込み
StreamReader sr = new StreamReader(path, enc);
//読み込むテキストを保存
string str = sr.ReadToEnd();
sr.Close();
//消す文字
const string TARGET1 = " - {fileID: ";
const string TARGET2 = ", guid: ";
const string TARGET3 = ", type: 3}";
// Replaceメソッドでguidなどを消してIDのみを残す
str = str.Replace(guid, "");
str = str.Replace(TARGET1, "");
str = str.Replace(TARGET2, "");
str = str.Replace(TARGET3, "");
FileIDName = str;
// テキストを書き込む
StreamWriter file = new StreamWriter(path, false, enc);
file.WriteLine(str);
file.Close();
Console.WriteLine("textファイルに書き込みました");
}
}
やってることをざっくり言うとReplaceを使って余計な文字を消すことでfileIDのみをテキストファイルに残しています。
12行目のString pathのCreateAnimeFileは後でてきます。pathはテキストファイルがある場所を指定しています。
FileIDからAnimationを複数作成
おなじくC#スクリプトを使用してAnimationを作成しています。
using System;
using System.IO;
using System.Text;
class CreateAnimeFile
{
/**
<summary>
書き換えるファイルがあるパス:適当に変える
@ないとエラー吐く
</summary>
*/
public static String path = @"C:\Unity_Date\Animation\Assets\Animation\FreyaS\";
/**
<summary>
対象の画像のキャラクター名:作成するファイル名に使用:適当に変える
数字を入れたいので上と分ける
</summary>
*/
public static String Filename = "FreyaS";
/**
<summary>
対象の画像のguid:適当に変える
</summary>
*/
public static String guid = "0d4de27d4bf5f4240a663edf66ffaff2";
public void CreateAnimeFileStart()
{
// 文字コードを指定
Encoding enc = Encoding.GetEncoding("UTF-8");
//名前の後ろに入れる番号:増やしていく
int FileNo = 0;
//拡張子
String extension = ".anim";
//繰り返す回数:作成するアニメーションの数
int AnimeCount = 18;
//繰り返す回数:1つのファイルに入れるスプライトの数
int returnCount = 5;
//FileIDのみを抜き出したテキストファイルの生成
FileID FileID = new FileID();//汎用性高そうなので別クラスで行う
FileID.FileIDStart();
//改行で区切るって配列化
string[] lines = FileID.FileIDName.Split(new string[] { "\r\n" }, StringSplitOptions.None);
//FileIDを管理する二次元リスト:多分切り分けたスプライトを指定している
List<List<string>> FileIDlist = new List<List<string>>();
for (int i = 0; i < lines.Length; i += 3)
{//リストに入れる
if (lines[i] == "") break;
List<string> list1 = new List<string>();//リストの中にリストを作る
Console.WriteLine(lines[i] + ":" + lines[i + 1] + ":" + lines[i + 1]);
list1.Add(lines[i]);
list1.Add(lines[i + 1]);
list1.Add(lines[i + 2]);
FileIDlist.Add(list1);
}
//animeファイル内容
String File_Contents1 =
@"%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
";
String File_Contents2 = @" serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- curve:
";
String File_Contents3 = @" attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
";
String File_Contents4 = @" m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.6
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []";
for (int j = 0; j < AnimeCount; j++)
{
FileNo = j;
StreamWriter anime = new StreamWriter(path + Filename + FileNo + extension, false, enc);
//モーションの名前
String ContentsFilename = " m_Name: " + Filename + FileNo + "\r\n";//ファイル名と合わせる;
//モーションの時間設定
String curve = "";//スプライトの時間ポイントを指定
float Time = 0;//スプライトを入れる時間:++0.25する
for (int i = 0; i < returnCount; i++)
{
if (Time == 0)
{//0.になるため場合分け
curve += " - time: " + Time.ToString() + "\r\n";
}
else
{
curve += " - time: " + Time.ToString("F2").TrimEnd('0') + "\r\n";//文末の0を取る設定
}
//0→1→2→1→0の順番でスプライトを設定するための場合分け:素材によって書き換える必要あり
if (i == 0) curve += " value: { fileID: " + FileIDlist[j][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 1) curve += " value: { fileID: " + FileIDlist[j][1] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 2) curve += " value: { fileID: " + FileIDlist[j][2] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 3) curve += " value: { fileID: " + FileIDlist[j][1] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 4) curve += " value: { fileID: " + FileIDlist[j][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
Time += 0.25f;
}
//pptrCurveMappingの作成
String pptrCurveMapping = "";//上のcurveと同じ物を多分入れないとならない
for (int i = 0; i < returnCount; i++)
{
if (i == 1) pptrCurveMapping += " - {fileID: " + FileIDlist[j][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 1) pptrCurveMapping += " - {fileID: " + FileIDlist[j][1] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 2) pptrCurveMapping += " - {fileID: " + FileIDlist[j][2] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 3) pptrCurveMapping += " - {fileID: " + FileIDlist[j][1] + ", guid: " + guid + ", type: 3}" + "\r\n";
if (i == 4) pptrCurveMapping += " - {fileID: " + FileIDlist[j][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
}
// テキストを書き込む
anime.WriteLine(File_Contents1 + ContentsFilename + File_Contents2 + curve + File_Contents3 + pptrCurveMapping + File_Contents4);
// ファイルを閉じる
anime.Close();
}
Console.WriteLine("animファイルに書き込みました");
//倒れこみと起き上がるモーションの作成
StreamWriter collapse = new StreamWriter(path + Filename + "Collapse" + extension, false, enc);
StreamWriter getup = new StreamWriter(path + Filename + "Getup" + extension, false, enc);
//モーションの名前
String collapseFilename = " m_Name: " + Filename + "Collapse" + "\r\n";
String getupFilename = " m_Name: " + Filename + "Getup" + "\r\n";
//curveの作成
string collapsecurve = "";
string getupcurve = "";
String curve1 = " - time: " + 0 + "\r\n";//1つ目の時間
collapsecurve += curve1; getupcurve += curve1;
collapsecurve += " value: { fileID: " + FileIDlist[6][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
getupcurve += " value: { fileID: " + FileIDlist[17][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
String curve2 = " - time: " + 0.25 + "\r\n";//2つ目の時間
collapsecurve += curve2; getupcurve += curve2;
collapsecurve += " value: { fileID: " + FileIDlist[14][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
getupcurve += " value: { fileID: " + FileIDlist[14][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
String curve3 = " - time: " + 0.5 + "\r\n";//3つ目の時間
collapsecurve += curve3; getupcurve += curve3;
collapsecurve += " value: { fileID: " + FileIDlist[17][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
getupcurve += " value: { fileID: " + FileIDlist[0][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
//pptrCurveMappingの
string collapsepptrCurveMapping = "";
string getuppptrCurveMapping = "";
collapsepptrCurveMapping += " - {fileID: " + FileIDlist[6][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
collapsepptrCurveMapping += " - {fileID: " + FileIDlist[14][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
collapsepptrCurveMapping += " - {fileID: " + FileIDlist[17][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
getuppptrCurveMapping += " - {fileID: " + FileIDlist[17][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
getuppptrCurveMapping += " - {fileID: " + FileIDlist[14][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
getuppptrCurveMapping += " - {fileID: " + FileIDlist[0][0] + ", guid: " + guid + ", type: 3}" + "\r\n";
//ファイルの書き込み
collapse.WriteLine(File_Contents1 + collapseFilename + File_Contents2 + collapsecurve + File_Contents3 + collapsepptrCurveMapping + File_Contents4);
getup.WriteLine(File_Contents1 + getupFilename + File_Contents2 + getupcurve + File_Contents3 + getuppptrCurveMapping + File_Contents4);
// ファイルを閉じる
collapse.Close(); getup.Close();
}
}
上記はStreamWriterで.animファイルを作成し、適宜書き込むスクリプトとなっております。
これらのスクリプトはUnityではなくローカルにC#のコンパイル環境を作って実行するものとなっております。
実行
CreateAnimeFile.csを実行すると20個のanimationを作成できます。
内訳
素材の数54÷3=18
18+立ち上がりと倒れこむアニメーション=20
作成したanimationをAnimator Controllerに入れることで完成です。
animation windowで確認で再生ができます。
作成したモーション
0.待機
1.攻撃
2.キック?(静止)
3.用途不明(静止)
4.歩く?
5.ジャンプ?
6.被ダメモーション?(静止)
7.つかみ?押す?
8.膝をつく(静止)
9.ガード?押す?(静止)
10.ガードブレイク?
11.膝をつく(><顔)(静止)
12. 被ダメモーション?(><顔)(静止)
13.持ちながら歩く?
14. 膝をつく
15.キック?
16.右手を上げる(強攻撃?)
17.倒れる(静止)
Collapse.倒れこむ
Getup.起き上がる
まとめ
今回はスプライトの素材から自動でanimationファイルを作成してみました。
完全に自動化はできませんでしたが、C#スクリプトである程度自動化に成功しました。
この記事がどなたかの助けとなれば幸いです。
注意点
この記事のスクリプトはゆるドラシル素材のためのスクリプトとなっているため、素材などによってループ回数など調整する必要があります