Refactored spine-unity to support multiple materials.

This commit is contained in:
NathanSweet 2013-08-03 14:32:12 +02:00
parent f9d538d6e7
commit 288e520b25
59 changed files with 611 additions and 505 deletions

5
.gitignore vendored
View File

@ -38,8 +38,8 @@ spine-xna/obj
spine-xna/example/bin spine-xna/example/bin
spine-xna/example/obj spine-xna/example/obj
spine-unity/Assets/Plugins/Spine/spine-csharp spine-unity/Assets/Spine/spine-csharp
!spine-unity/Assets/Plugins/Spine/spine-csharp/Place spine-csharp here.txt !spine-unity/Assets/Spine/spine-csharp/Place spine-csharp here.txt
spine-unity/ProjectSettings spine-unity/ProjectSettings
spine-unity/Temp spine-unity/Temp
spine-unity/Library spine-unity/Library
@ -48,7 +48,6 @@ spine-unity/*.sln
*.pidb *.pidb
Assembly-*.csproj Assembly-*.csproj
Assembly-*.pidb Assembly-*.pidb
spine-unity-test*
spine-corona/spine-lua/ spine-corona/spine-lua/
!spine-corona/spine-lua/Place spine-lua here.txt !spine-corona/spine-lua/Place spine-lua here.txt

View File

@ -1,5 +0,0 @@
fileFormatVersion: 2
guid: 89dad76e10ea944ee9f29109535294be
folderAsset: yes
DefaultImporter:
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 3ac78ae082927411cba77d73efde27d4 guid: 460170723785f0448822b8dcc876fe7f
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
userData: userData:

View File

@ -29,7 +29,7 @@ using Spine;
public class AtlasAsset : ScriptableObject { public class AtlasAsset : ScriptableObject {
public TextAsset atlasFile; public TextAsset atlasFile;
public Material material; public Material[] materials;
private Atlas atlas; private Atlas atlas;
public void Clear () { public void Clear () {
@ -44,8 +44,8 @@ public class AtlasAsset : ScriptableObject {
return null; return null;
} }
if (material == null) { if (materials == null || materials.Length == 0) {
Debug.LogWarning("Material not set for atlas asset: " + name, this); Debug.LogWarning("Materials not set for atlas asset: " + name, this);
Clear(); Clear();
return null; return null;
} }
@ -54,7 +54,7 @@ public class AtlasAsset : ScriptableObject {
return atlas; return atlas;
try { try {
atlas = new Atlas(new StringReader(atlasFile.text), "", new SingleTextureLoader(material)); atlas = new Atlas(new StringReader(atlasFile.text), "", new MaterialsTextureLoader(this));
return atlas; return atlas;
} catch (Exception ex) { } catch (Exception ex) {
Debug.Log("Error reading atlas file for atlas asset: " + name + "\n" + ex.Message + "\n" + ex.StackTrace, this); Debug.Log("Error reading atlas file for atlas asset: " + name + "\n" + ex.Message + "\n" + ex.StackTrace, this);
@ -63,14 +63,27 @@ public class AtlasAsset : ScriptableObject {
} }
} }
public class SingleTextureLoader : TextureLoader { public class MaterialsTextureLoader : TextureLoader {
Material material; AtlasAsset atlasAsset;
public SingleTextureLoader (Material material) { public MaterialsTextureLoader (AtlasAsset atlasAsset) {
this.material = material; this.atlasAsset = atlasAsset;
} }
public void Load (AtlasPage page, String path) { public void Load (AtlasPage page, String path) {
String name = Path.GetFileNameWithoutExtension(path);
Material material = null;
foreach (Material other in atlasAsset.materials) {
if (other.name == name) {
material = other;
break;
}
}
if (material == null) {
Debug.LogWarning("Material with name \"" + name + "\" not found for atlas asset: " + atlasAsset.name, atlasAsset);
return;
}
page.rendererObject = material;
page.width = material.mainTexture.width; page.width = material.mainTexture.width;
page.height = material.mainTexture.height; page.height = material.mainTexture.height;
} }

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 65ba3309ea8c447678ade95f3fa398da guid: f0e95036e72b08544a9d295dd4366f40
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
userData: userData:

View File

@ -29,11 +29,11 @@ using UnityEngine;
[CustomEditor(typeof(AtlasAsset))] [CustomEditor(typeof(AtlasAsset))]
public class AtlasAssetInspector : Editor { public class AtlasAssetInspector : Editor {
private SerializedProperty atlasFile, material; private SerializedProperty atlasFile, materials;
void OnEnable () { void OnEnable () {
atlasFile = serializedObject.FindProperty("atlasFile"); atlasFile = serializedObject.FindProperty("atlasFile");
material = serializedObject.FindProperty("material"); materials = serializedObject.FindProperty("materials");
} }
override public void OnInspectorGUI () { override public void OnInspectorGUI () {
@ -42,7 +42,7 @@ public class AtlasAssetInspector : Editor {
EditorGUIUtility.LookLikeInspector(); EditorGUIUtility.LookLikeInspector();
EditorGUILayout.PropertyField(atlasFile); EditorGUILayout.PropertyField(atlasFile);
EditorGUILayout.PropertyField(material); EditorGUILayout.PropertyField(materials, true);
if (serializedObject.ApplyModifiedProperties() || if (serializedObject.ApplyModifiedProperties() ||
(Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed") (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed")

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: b41395738f68d4fbba8311d333db62b1 guid: ef8189a68a74bec4eba582e65fb98dbd
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
userData: userData:

View File

@ -40,8 +40,10 @@ public class SkeletonComponent : MonoBehaviour {
private Vector3[] vertices; private Vector3[] vertices;
private Color32[] colors; private Color32[] colors;
private Vector2[] uvs; private Vector2[] uvs;
private int[] triangles;
private float[] vertexPositions = new float[8]; private float[] vertexPositions = new float[8];
private List<Material> submeshMaterials = new List<Material>();
private List<int[]> submeshIndexes = new List<int[]>();
private Material[] sharedMaterials = new Material[0];
public virtual void Clear () { public virtual void Clear () {
GetComponent<MeshFilter>().mesh = null; GetComponent<MeshFilter>().mesh = null;
@ -58,7 +60,8 @@ public class SkeletonComponent : MonoBehaviour {
mesh.hideFlags = HideFlags.HideAndDontSave; mesh.hideFlags = HideFlags.HideAndDontSave;
mesh.MarkDynamic(); mesh.MarkDynamic();
renderer.sharedMaterial = skeletonDataAsset.atlasAsset.material; // BOZO
//renderer.sharedMaterial = skeletonDataAsset.atlasAsset.material;
vertices = new Vector3[0]; vertices = new Vector3[0];
@ -76,50 +79,60 @@ public class SkeletonComponent : MonoBehaviour {
} }
public virtual void Update () { public virtual void Update () {
SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false);
// Clear fields if missing information to render. // Clear fields if missing information to render.
if (skeletonDataAsset == null || skeletonDataAsset.GetSkeletonData(false) == null) { if (skeletonDataAsset == null || skeletonData == null) {
Clear(); Clear();
return; return;
} }
// Initialize fields. // Initialize fields.
if (skeleton == null || skeleton.Data != skeletonDataAsset.GetSkeletonData(false)) if (skeleton == null || skeleton.Data != skeletonData)
Initialize(); Initialize();
UpdateSkeleton(); UpdateSkeleton();
// Count quads. // Count quads and submeshes.
int quadCount = 0; int quadCount = 0, submeshQuadCount = 0;
Material lastMaterial = null;
submeshMaterials.Clear();
List<Slot> drawOrder = skeleton.DrawOrder; List<Slot> drawOrder = skeleton.DrawOrder;
for (int i = 0, n = drawOrder.Count; i < n; i++) { for (int i = 0, n = drawOrder.Count; i < n; i++) {
Slot slot = drawOrder[i]; RegionAttachment regionAttachment = drawOrder[i].Attachment as RegionAttachment;
Attachment attachment = slot.Attachment; if (regionAttachment == null)
if (attachment is RegionAttachment) continue;
quadCount++;
// Add submesh when material changes.
Material material = (Material)((AtlasRegion)regionAttachment.RendererObject).page.rendererObject;
if (lastMaterial != material && lastMaterial != null) {
addSubmesh(lastMaterial, quadCount, submeshQuadCount, false);
submeshQuadCount = 0;
}
lastMaterial = material;
quadCount++;
submeshQuadCount++;
} }
addSubmesh(lastMaterial, quadCount, submeshQuadCount, false);
// Set materials.
if (submeshMaterials.Count == sharedMaterials.Length)
submeshMaterials.CopyTo(sharedMaterials);
else
sharedMaterials = submeshMaterials.ToArray();
renderer.sharedMaterials = sharedMaterials;
// Ensure mesh data is the right size. // Ensure mesh data is the right size.
Mesh mesh = this.mesh;
Vector3[] vertices = this.vertices; Vector3[] vertices = this.vertices;
int vertexCount = quadCount * 4; int vertexCount = quadCount * 4;
bool newTriangles = vertexCount > vertices.Length; bool newTriangles = vertexCount > vertices.Length;
if (newTriangles) { if (newTriangles) {
// Not enough vertices, increase size. // Not enough vertices, increase size.
this.vertices = vertices = new Vector3[vertexCount]; this.vertices = vertices = new Vector3[vertexCount];
colors = new Color32[vertexCount]; this.colors = new Color32[vertexCount];
uvs = new Vector2[vertexCount]; this.uvs = new Vector2[vertexCount];
triangles = new int[quadCount * 6];
mesh.Clear(); mesh.Clear();
for (int i = 0, n = quadCount; i < n; i++) {
int index = i * 6;
int vertex = i * 4;
triangles[index] = vertex;
triangles[index + 1] = vertex + 2;
triangles[index + 2] = vertex + 1;
triangles[index + 3] = vertex + 2;
triangles[index + 4] = vertex + 3;
triangles[index + 5] = vertex + 1;
}
} else { } else {
// Too many vertices, zero the extra. // Too many vertices, zero the extra.
Vector3 zero = new Vector3(0, 0, 0); Vector3 zero = new Vector3(0, 0, 0);
@ -130,12 +143,15 @@ public class SkeletonComponent : MonoBehaviour {
// Setup mesh. // Setup mesh.
float[] vertexPositions = this.vertexPositions; float[] vertexPositions = this.vertexPositions;
Vector2[] uvs = this.uvs;
Color32[] colors = this.colors;
int vertexIndex = 0; int vertexIndex = 0;
Color32 color = new Color32(); Color32 color = new Color32();
for (int i = 0, n = drawOrder.Count; i < n; i++) { for (int i = 0, n = drawOrder.Count; i < n; i++) {
Slot slot = drawOrder[i]; Slot slot = drawOrder[i];
RegionAttachment regionAttachment = slot.Attachment as RegionAttachment; RegionAttachment regionAttachment = slot.Attachment as RegionAttachment;
if (regionAttachment == null) continue; if (regionAttachment == null)
continue;
regionAttachment.ComputeVertices(skeleton.X, skeleton.Y, slot.Bone, vertexPositions); regionAttachment.ComputeVertices(skeleton.X, skeleton.Y, slot.Bone, vertexPositions);
@ -164,26 +180,56 @@ public class SkeletonComponent : MonoBehaviour {
mesh.vertices = vertices; mesh.vertices = vertices;
mesh.colors32 = colors; mesh.colors32 = colors;
mesh.uv = uvs; mesh.uv = uvs;
if (newTriangles) mesh.triangles = triangles; mesh.subMeshCount = submeshMaterials.Count;
for (int i = 0; i < mesh.subMeshCount; ++i)
mesh.SetTriangles(submeshIndexes[i], i);
}
/** Adds a material. Adds submesh indexes if existing indexes aren't sufficient. */
private void addSubmesh (Material material, int endQuadCount, int submeshQuadCount, bool exact) {
int submeshIndex = submeshMaterials.Count;
submeshMaterials.Add(material);
// Return if the existing submesh is big enough.
int indexCount = submeshQuadCount * 6;
if (submeshIndexes.Count > submeshIndex) {
if (exact) {
if (submeshIndexes[submeshIndex].Length == indexCount)
return;
} else {
if (submeshIndexes[submeshIndex].Length >= indexCount)
return;
}
} else
submeshIndexes.Add(null);
int vertexIndex = (endQuadCount - submeshQuadCount) * 4;
int[] indexes = new int[indexCount];
for (int i = 0; i < indexCount; i += 6, vertexIndex += 4) {
indexes[i] = vertexIndex;
indexes[i + 1] = vertexIndex + 2;
indexes[i + 2] = vertexIndex + 1;
indexes[i + 3] = vertexIndex + 2;
indexes[i + 4] = vertexIndex + 3;
indexes[i + 5] = vertexIndex + 1;
}
submeshIndexes[submeshIndex] = indexes;
} }
public virtual void OnEnable () { public virtual void OnEnable () {
Update(); Update();
} }
public virtual void OnDisable () {
#region Unity Editor
#if UNITY_EDITOR #if UNITY_EDITOR
public virtual void OnDisable () {
Clear(); Clear();
#endif
#endregion
} }
#endif
public virtual void Reset () { public virtual void Reset () {
Update(); Update();
} }
#region Unity Editor
#if UNITY_EDITOR #if UNITY_EDITOR
void OnDrawGizmos() { void OnDrawGizmos() {
Vector3 gizmosCenter = new Vector3(); Vector3 gizmosCenter = new Vector3();
@ -203,5 +249,4 @@ public class SkeletonComponent : MonoBehaviour {
Gizmos.DrawCube(gizmosCenter, gizmosSize); Gizmos.DrawCube(gizmosCenter, gizmosSize);
} }
#endif #endif
#endregion
} }

View File

@ -86,7 +86,7 @@ public class SkeletonDataAsset : ScriptableObject {
return skeletonData; return skeletonData;
} }
public AnimationStateData GetAnimationStateData () { public AnimationStateData GetAnimationStateData () {
if (stateData != null) if (stateData != null)
return stateData; return stateData;
GetSkeletonData(false); GetSkeletonData(false);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

View File

@ -0,0 +1,44 @@
/*******************************************************************************
* Copyright (c) 2013, Esoteric Software
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
using UnityEngine;
using System.Collections;
public class Goblins : MonoBehaviour {
private bool girlSkin;
public void OnMouseDown () {
SkeletonAnimation skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.skeleton.SetSkin(girlSkin ? "goblin" : "goblingirl");
skeletonAnimation.skeleton.SetSlotsToSetupPose();
girlSkin = !girlSkin;
if (girlSkin) {
skeletonAnimation.skeleton.SetAttachment("right hand item", null);
skeletonAnimation.skeleton.SetAttachment("left hand item", "spear");
} else
skeletonAnimation.skeleton.SetAttachment("left hand item", "dagger");
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 40a82af6554a7594f9ffa9ac8dde212f
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 63d11713f97bfe54bb06572e24050ecb guid: 690c0cb1c3b49c84a8f645eb77fb297e
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
userData: userData:

View File

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 148 KiB

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: c6674329008ae4c65a7b7e8f1b2a6523 guid: 6f3b21d2789786c4d9c0c61411be3fde
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
userData: userData:

View File

@ -1,166 +1,136 @@
spineboy.png spineboy.png
format: RGBA8888 format: RGBA8888
filter: Linear,Linear filter: Nearest,Nearest
repeat: none repeat: none
head head
rotate: false rotate: true
xy: 1, 122 xy: 2, 5
size: 121, 132 size: 121, 132
orig: 121, 132 orig: 121, 132
offset: 0, 0 offset: 0, 0
index: -1 index: -1
torso
rotate: false
xy: 1, 28
size: 68, 92
orig: 68, 92
offset: 0, 0
index: -1
left-pant-bottom
rotate: false
xy: 1, 4
size: 44, 22
orig: 44, 22
offset: 0, 0
index: -1
right-pant-bottom
rotate: false
xy: 47, 8
size: 46, 18
orig: 46, 18
offset: 0, 0
index: -1
right-upper-leg
rotate: false
xy: 71, 50
size: 44, 70
orig: 44, 70
offset: 0, 0
index: -1
pelvis
rotate: false
xy: 95, 1
size: 63, 47
orig: 63, 47
offset: 0, 0
index: -1
left-upper-leg
rotate: false
xy: 117, 53
size: 33, 67
orig: 33, 67
offset: 0, 0
index: -1
right-foot
rotate: false
xy: 160, 224
size: 67, 30
orig: 67, 30
offset: 0, 0
index: -1
left-shoulder
rotate: false
xy: 124, 201
size: 34, 53
orig: 34, 53
offset: 0, 0
index: -1
left-ankle
rotate: false
xy: 229, 222
size: 25, 32
orig: 25, 32
offset: 0, 0
index: -1
left-foot
rotate: false
xy: 160, 192
size: 65, 30
orig: 65, 30
offset: 0, 0
index: -1
neck
rotate: false
xy: 124, 171
size: 34, 28
orig: 34, 28
offset: 0, 0
index: -1
right-arm
rotate: false
xy: 124, 124
size: 21, 45
orig: 21, 45
offset: 0, 0
index: -1
right-ankle
rotate: false
xy: 227, 190
size: 25, 30
orig: 25, 30
offset: 0, 0
index: -1
left-hand
rotate: false
xy: 147, 131
size: 35, 38
orig: 35, 38
offset: 0, 0
index: -1
left-arm left-arm
rotate: false rotate: false
xy: 184, 161 xy: 205, 2
size: 35, 29 size: 35, 29
orig: 35, 29 orig: 35, 29
offset: 0, 0 offset: 0, 0
index: -1 index: -1
eyes-closed right-arm
rotate: true
xy: 206, 33
size: 21, 45
orig: 21, 45
offset: 0, 0
index: -1
right-foot
rotate: false rotate: false
xy: 221, 161 xy: 136, 2
size: 67, 30
orig: 67, 30
offset: 0, 0
index: -1
right-upper-leg
rotate: false
xy: 206, 56
size: 44, 70
orig: 44, 70
offset: 0, 0
index: -1
torso
rotate: false
xy: 136, 34
size: 68, 92
orig: 68, 92
offset: 0, 0
index: -1
spineboy2.png
format: RGBA8888
filter: Nearest,Nearest
repeat: none
eyes
rotate: true
xy: 227, 57
size: 34, 27 size: 34, 27
orig: 34, 27 orig: 34, 27
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right-lower-leg eyes-closed
rotate: false rotate: true
xy: 152, 65 xy: 133, 2
size: 51, 64 size: 34, 27
orig: 51, 64 orig: 34, 27
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right-foot-idle left-foot
rotate: false rotate: false
xy: 184, 131 xy: 160, 61
size: 53, 28 size: 65, 30
orig: 53, 28 orig: 65, 30
offset: 0, 0
index: -1
left-hand
rotate: true
xy: 106, 38
size: 35, 38
orig: 35, 38
offset: 0, 0 offset: 0, 0
index: -1 index: -1
left-lower-leg left-lower-leg
rotate: false rotate: false
xy: 205, 65 xy: 55, 62
size: 49, 64 size: 49, 64
orig: 49, 64 orig: 49, 64
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right-shoulder left-shoulder
rotate: false rotate: false
xy: 160, 12 xy: 67, 7
size: 52, 51 size: 34, 53
orig: 52, 51 orig: 34, 53
offset: 0, 0 offset: 0, 0
index: -1 index: -1
eyes left-upper-leg
rotate: true
xy: 160, 93
size: 33, 67
orig: 33, 67
offset: 0, 0
index: -1
neck
rotate: true
xy: 103, 2
size: 34, 28
orig: 34, 28
offset: 0, 0
index: -1
pelvis
rotate: false rotate: false
xy: 214, 36 xy: 2, 13
size: 34, 27 size: 63, 47
orig: 34, 27 orig: 63, 47
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right-hand right-hand
rotate: false rotate: false
xy: 214, 2 xy: 162, 27
size: 32, 32 size: 32, 32
orig: 32, 32 orig: 32, 32
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right-lower-leg
rotate: false
xy: 2, 62
size: 51, 64
orig: 51, 64
offset: 0, 0
index: -1
right-shoulder
rotate: false
xy: 106, 75
size: 52, 51
orig: 52, 51
offset: 0, 0
index: -1

View File

@ -3,21 +3,21 @@
{ "name": "root" }, { "name": "root" },
{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 }, { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 },
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 }, { "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 }, { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 }, { "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 }, { "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 }, { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 } { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }
], ],
"slots": [ "slots": [
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" }, { "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
@ -40,339 +40,62 @@
], ],
"skins": { "skins": {
"default": { "default": {
"left shoulder": { "eyes": {
"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 } "eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
},
"head": {
"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
}, },
"left arm": { "left arm": {
"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 } "left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
}, },
"left hand": {
"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
},
"left foot": { "left foot": {
"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 } "left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
}, },
"left hand": {
"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
},
"left lower leg": { "left lower leg": {
"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 } "left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
}, },
"left shoulder": {
"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
},
"left upper leg": { "left upper leg": {
"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 } "left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
}, },
"neck": {
"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
},
"pelvis": { "pelvis": {
"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 } "pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
}, },
"right arm": {
"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
},
"right foot": { "right foot": {
"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 } "right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
}, },
"right hand": {
"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
},
"right lower leg": { "right lower leg": {
"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 } "right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
}, },
"right shoulder": {
"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
},
"right upper leg": { "right upper leg": {
"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 } "right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
}, },
"torso": { "torso": {
"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 } "torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
},
"neck": {
"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
},
"head": {
"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
},
"eyes": {
"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
},
"right shoulder": {
"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
},
"right arm": {
"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
},
"right hand": {
"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
} }
} }
}, },
"events": {},
"animations": { "animations": {
"walk": {
"bones": {
"left upper leg": {
"rotate": [
{ "time": 0, "angle": -26.55 },
{ "time": 0.1333, "angle": -8.78 },
{ "time": 0.2666, "angle": 9.51 },
{ "time": 0.4, "angle": 30.74 },
{ "time": 0.5333, "angle": 25.33 },
{ "time": 0.6666, "angle": 26.11 },
{ "time": 0.8, "angle": -7.7 },
{ "time": 0.9333, "angle": -21.19 },
{ "time": 1.0666, "angle": -26.55 }
],
"translate": [
{ "time": 0, "x": -3, "y": -2.25 },
{ "time": 0.4, "x": -2.18, "y": -2.25 },
{ "time": 1.0666, "x": -3, "y": -2.25 }
]
},
"right upper leg": {
"rotate": [
{ "time": 0, "angle": 42.45 },
{ "time": 0.1333, "angle": 52.1 },
{ "time": 0.2666, "angle": 5.96 },
{ "time": 0.5333, "angle": -16.93 },
{ "time": 0.6666, "angle": 1.89 },
{
"time": 0.8,
"angle": 28.06,
"curve": [ 0.462, 0.11, 1, 1 ]
},
{
"time": 0.9333,
"angle": 58.68,
"curve": [ 0.5, 0.02, 1, 1 ]
},
{ "time": 1.0666, "angle": 42.45 }
],
"translate": [
{ "time": 0, "x": 8.11, "y": -2.36 },
{ "time": 0.1333, "x": 10.03, "y": -2.56 },
{ "time": 0.4, "x": 2.76, "y": -2.97 },
{ "time": 0.5333, "x": 2.76, "y": -2.81 },
{ "time": 0.9333, "x": 8.67, "y": -2.54 },
{ "time": 1.0666, "x": 8.11, "y": -2.36 }
]
},
"left lower leg": {
"rotate": [
{ "time": 0, "angle": -10.21 },
{ "time": 0.1333, "angle": -55.64 },
{ "time": 0.2666, "angle": -68.12 },
{ "time": 0.5333, "angle": 5.11 },
{ "time": 0.6666, "angle": -28.29 },
{ "time": 0.8, "angle": 4.08 },
{ "time": 0.9333, "angle": 3.53 },
{ "time": 1.0666, "angle": -10.21 }
]
},
"left foot": {
"rotate": [
{ "time": 0, "angle": -3.69 },
{ "time": 0.1333, "angle": -10.42 },
{ "time": 0.2666, "angle": -17.14 },
{ "time": 0.4, "angle": -2.83 },
{ "time": 0.5333, "angle": -3.87 },
{ "time": 0.6666, "angle": 2.78 },
{ "time": 0.8, "angle": 1.68 },
{ "time": 0.9333, "angle": -8.54 },
{ "time": 1.0666, "angle": -3.69 }
]
},
"right shoulder": {
"rotate": [
{
"time": 0,
"angle": 20.89,
"curve": [ 0.264, 0, 0.75, 1 ]
},
{
"time": 0.1333,
"angle": 3.72,
"curve": [ 0.272, 0, 0.841, 1 ]
},
{ "time": 0.6666, "angle": -278.28 },
{ "time": 1.0666, "angle": 20.89 }
],
"translate": [
{ "time": 0, "x": -7.84, "y": 7.19 },
{ "time": 0.1333, "x": -6.36, "y": 6.42 },
{ "time": 0.6666, "x": -11.07, "y": 5.25 },
{ "time": 1.0666, "x": -7.84, "y": 7.19 }
]
},
"right arm": {
"rotate": [
{
"time": 0,
"angle": -4.02,
"curve": [ 0.267, 0, 0.804, 0.99 ]
},
{
"time": 0.1333,
"angle": -13.99,
"curve": [ 0.341, 0, 1, 1 ]
},
{
"time": 0.6666,
"angle": 36.54,
"curve": [ 0.307, 0, 0.787, 0.99 ]
},
{ "time": 1.0666, "angle": -4.02 }
]
},
"right hand": {
"rotate": [
{ "time": 0, "angle": 22.92 },
{ "time": 0.4, "angle": -8.97 },
{ "time": 0.6666, "angle": 0.51 },
{ "time": 1.0666, "angle": 22.92 }
]
},
"left shoulder": {
"rotate": [
{ "time": 0, "angle": -1.47 },
{ "time": 0.1333, "angle": 13.6 },
{ "time": 0.6666, "angle": 280.74 },
{ "time": 1.0666, "angle": -1.47 }
],
"translate": [
{ "time": 0, "x": -1.76, "y": 0.56 },
{ "time": 0.6666, "x": -2.47, "y": 8.14 },
{ "time": 1.0666, "x": -1.76, "y": 0.56 }
]
},
"left hand": {
"rotate": [
{
"time": 0,
"angle": 11.58,
"curve": [ 0.169, 0.37, 0.632, 1.55 ]
},
{
"time": 0.1333,
"angle": 28.13,
"curve": [ 0.692, 0, 0.692, 0.99 ]
},
{
"time": 0.6666,
"angle": -27.42,
"curve": [ 0.117, 0.41, 0.738, 1.76 ]
},
{ "time": 0.8, "angle": -36.32 },
{ "time": 1.0666, "angle": 11.58 }
]
},
"left arm": {
"rotate": [
{ "time": 0, "angle": -8.27 },
{ "time": 0.1333, "angle": 18.43 },
{ "time": 0.6666, "angle": 0.88 },
{ "time": 1.0666, "angle": -8.27 }
]
},
"torso": {
"rotate": [
{ "time": 0, "angle": -10.28 },
{
"time": 0.1333,
"angle": -15.38,
"curve": [ 0.545, 0, 1, 1 ]
},
{
"time": 0.4,
"angle": -9.78,
"curve": [ 0.58, 0.17, 1, 1 ]
},
{ "time": 0.6666, "angle": -15.75 },
{ "time": 0.9333, "angle": -7.06 },
{ "time": 1.0666, "angle": -10.28 }
],
"translate": [
{ "time": 0, "x": -3.67, "y": 1.68 },
{ "time": 0.1333, "x": -3.67, "y": 0.68 },
{ "time": 0.4, "x": -3.67, "y": 1.97 },
{ "time": 0.6666, "x": -3.67, "y": -0.14 },
{ "time": 1.0666, "x": -3.67, "y": 1.68 }
]
},
"right foot": {
"rotate": [
{ "time": 0, "angle": -5.25 },
{ "time": 0.2666, "angle": -4.08 },
{ "time": 0.4, "angle": -6.45 },
{ "time": 0.5333, "angle": -5.39 },
{ "time": 0.8, "angle": -11.68 },
{ "time": 0.9333, "angle": 0.46 },
{ "time": 1.0666, "angle": -5.25 }
]
},
"right lower leg": {
"rotate": [
{ "time": 0, "angle": -3.39 },
{ "time": 0.1333, "angle": -45.53 },
{ "time": 0.2666, "angle": -2.59 },
{ "time": 0.5333, "angle": -19.53 },
{ "time": 0.6666, "angle": -64.8 },
{
"time": 0.8,
"angle": -82.56,
"curve": [ 0.557, 0.18, 1, 1 ]
},
{ "time": 1.0666, "angle": -3.39 }
]
},
"hip": {
"rotate": [
{ "time": 0, "angle": 0, "curve": "stepped" },
{ "time": 1.0666, "angle": 0 }
],
"translate": [
{ "time": 0, "x": 0, "y": 0 },
{
"time": 0.1333,
"x": 0,
"y": -7.61,
"curve": [ 0.272, 0.86, 1, 1 ]
},
{ "time": 0.4, "x": 0, "y": 8.7 },
{ "time": 0.5333, "x": 0, "y": -0.41 },
{
"time": 0.6666,
"x": 0,
"y": -7.05,
"curve": [ 0.235, 0.89, 1, 1 ]
},
{ "time": 0.8, "x": 0, "y": 2.92 },
{ "time": 0.9333, "x": 0, "y": 6.78 },
{ "time": 1.0666, "x": 0, "y": 0 }
]
},
"neck": {
"rotate": [
{ "time": 0, "angle": 3.6 },
{ "time": 0.1333, "angle": 17.49 },
{ "time": 0.2666, "angle": 6.1 },
{ "time": 0.4, "angle": 3.45 },
{ "time": 0.5333, "angle": 5.17 },
{ "time": 0.6666, "angle": 18.36 },
{ "time": 0.8, "angle": 6.09 },
{ "time": 0.9333, "angle": 2.28 },
{ "time": 1.0666, "angle": 3.6 }
]
},
"head": {
"rotate": [
{
"time": 0,
"angle": 3.6,
"curve": [ 0, 0, 0.704, 1.61 ]
},
{ "time": 0.1666, "angle": -0.2 },
{ "time": 0.2666, "angle": 6.1 },
{ "time": 0.4, "angle": 3.45 },
{
"time": 0.5333,
"angle": 5.17,
"curve": [ 0, 0, 0.704, 1.61 ]
},
{ "time": 0.7, "angle": 1.1 },
{ "time": 0.8, "angle": 6.09 },
{ "time": 0.9333, "angle": 2.28 },
{ "time": 1.0666, "angle": 3.6 }
]
}
}
},
"jump": { "jump": {
"bones": { "bones": {
"hip": { "hip": {
@ -782,6 +505,284 @@
] ]
} }
} }
},
"walk": {
"bones": {
"left upper leg": {
"rotate": [
{ "time": 0, "angle": -26.55 },
{ "time": 0.1333, "angle": -8.78 },
{ "time": 0.2666, "angle": 9.51 },
{ "time": 0.4, "angle": 30.74 },
{ "time": 0.5333, "angle": 25.33 },
{ "time": 0.6666, "angle": 26.11 },
{ "time": 0.8, "angle": -7.7 },
{ "time": 0.9333, "angle": -21.19 },
{ "time": 1.0666, "angle": -26.55 }
],
"translate": [
{ "time": 0, "x": -3, "y": -2.25 },
{ "time": 0.4, "x": -2.18, "y": -2.25 },
{ "time": 1.0666, "x": -3, "y": -2.25 }
]
},
"right upper leg": {
"rotate": [
{ "time": 0, "angle": 42.45 },
{ "time": 0.1333, "angle": 52.1 },
{ "time": 0.2666, "angle": 5.96 },
{ "time": 0.5333, "angle": -16.93 },
{ "time": 0.6666, "angle": 1.89 },
{
"time": 0.8,
"angle": 28.06,
"curve": [ 0.462, 0.11, 1, 1 ]
},
{
"time": 0.9333,
"angle": 58.68,
"curve": [ 0.5, 0.02, 1, 1 ]
},
{ "time": 1.0666, "angle": 42.45 }
],
"translate": [
{ "time": 0, "x": 8.11, "y": -2.36 },
{ "time": 0.1333, "x": 10.03, "y": -2.56 },
{ "time": 0.4, "x": 2.76, "y": -2.97 },
{ "time": 0.5333, "x": 2.76, "y": -2.81 },
{ "time": 0.9333, "x": 8.67, "y": -2.54 },
{ "time": 1.0666, "x": 8.11, "y": -2.36 }
]
},
"left lower leg": {
"rotate": [
{ "time": 0, "angle": -10.21 },
{ "time": 0.1333, "angle": -55.64 },
{ "time": 0.2666, "angle": -68.12 },
{ "time": 0.5333, "angle": 5.11 },
{ "time": 0.6666, "angle": -28.29 },
{ "time": 0.8, "angle": 4.08 },
{ "time": 0.9333, "angle": 3.53 },
{ "time": 1.0666, "angle": -10.21 }
]
},
"left foot": {
"rotate": [
{ "time": 0, "angle": -3.69 },
{ "time": 0.1333, "angle": -10.42 },
{ "time": 0.2666, "angle": -17.14 },
{ "time": 0.4, "angle": -2.83 },
{ "time": 0.5333, "angle": -3.87 },
{ "time": 0.6666, "angle": 2.78 },
{ "time": 0.8, "angle": 1.68 },
{ "time": 0.9333, "angle": -8.54 },
{ "time": 1.0666, "angle": -3.69 }
]
},
"right shoulder": {
"rotate": [
{
"time": 0,
"angle": 20.89,
"curve": [ 0.264, 0, 0.75, 1 ]
},
{
"time": 0.1333,
"angle": 3.72,
"curve": [ 0.272, 0, 0.841, 1 ]
},
{ "time": 0.6666, "angle": -278.28 },
{ "time": 1.0666, "angle": 20.89 }
],
"translate": [
{ "time": 0, "x": -7.84, "y": 7.19 },
{ "time": 0.1333, "x": -6.36, "y": 6.42 },
{ "time": 0.6666, "x": -11.07, "y": 5.25 },
{ "time": 1.0666, "x": -7.84, "y": 7.19 }
]
},
"right arm": {
"rotate": [
{
"time": 0,
"angle": -4.02,
"curve": [ 0.267, 0, 0.804, 0.99 ]
},
{
"time": 0.1333,
"angle": -13.99,
"curve": [ 0.341, 0, 1, 1 ]
},
{
"time": 0.6666,
"angle": 36.54,
"curve": [ 0.307, 0, 0.787, 0.99 ]
},
{ "time": 1.0666, "angle": -4.02 }
]
},
"right hand": {
"rotate": [
{ "time": 0, "angle": 22.92 },
{ "time": 0.4, "angle": -8.97 },
{ "time": 0.6666, "angle": 0.51 },
{ "time": 1.0666, "angle": 22.92 }
]
},
"left shoulder": {
"rotate": [
{ "time": 0, "angle": -1.47 },
{ "time": 0.1333, "angle": 13.6 },
{ "time": 0.6666, "angle": 280.74 },
{ "time": 1.0666, "angle": -1.47 }
],
"translate": [
{ "time": 0, "x": -1.76, "y": 0.56 },
{ "time": 0.6666, "x": -2.47, "y": 8.14 },
{ "time": 1.0666, "x": -1.76, "y": 0.56 }
]
},
"left hand": {
"rotate": [
{
"time": 0,
"angle": 11.58,
"curve": [ 0.169, 0.37, 0.632, 1.55 ]
},
{
"time": 0.1333,
"angle": 28.13,
"curve": [ 0.692, 0, 0.692, 0.99 ]
},
{
"time": 0.6666,
"angle": -27.42,
"curve": [ 0.117, 0.41, 0.738, 1.76 ]
},
{ "time": 0.8, "angle": -36.32 },
{ "time": 1.0666, "angle": 11.58 }
]
},
"left arm": {
"rotate": [
{ "time": 0, "angle": -8.27 },
{ "time": 0.1333, "angle": 18.43 },
{ "time": 0.6666, "angle": 0.88 },
{ "time": 1.0666, "angle": -8.27 }
]
},
"torso": {
"rotate": [
{ "time": 0, "angle": -10.28 },
{
"time": 0.1333,
"angle": -15.38,
"curve": [ 0.545, 0, 1, 1 ]
},
{
"time": 0.4,
"angle": -9.78,
"curve": [ 0.58, 0.17, 1, 1 ]
},
{ "time": 0.6666, "angle": -15.75 },
{ "time": 0.9333, "angle": -7.06 },
{ "time": 1.0666, "angle": -10.28 }
],
"translate": [
{ "time": 0, "x": -3.67, "y": 1.68 },
{ "time": 0.1333, "x": -3.67, "y": 0.68 },
{ "time": 0.4, "x": -3.67, "y": 1.97 },
{ "time": 0.6666, "x": -3.67, "y": -0.14 },
{ "time": 1.0666, "x": -3.67, "y": 1.68 }
]
},
"right foot": {
"rotate": [
{ "time": 0, "angle": -5.25 },
{ "time": 0.2666, "angle": -4.08 },
{ "time": 0.4, "angle": -6.45 },
{ "time": 0.5333, "angle": -5.39 },
{ "time": 0.8, "angle": -11.68 },
{ "time": 0.9333, "angle": 0.46 },
{ "time": 1.0666, "angle": -5.25 }
]
},
"right lower leg": {
"rotate": [
{ "time": 0, "angle": -3.39 },
{ "time": 0.1333, "angle": -45.53 },
{ "time": 0.2666, "angle": -2.59 },
{ "time": 0.5333, "angle": -19.53 },
{ "time": 0.6666, "angle": -64.8 },
{
"time": 0.8,
"angle": -82.56,
"curve": [ 0.557, 0.18, 1, 1 ]
},
{ "time": 1.0666, "angle": -3.39 }
]
},
"hip": {
"rotate": [
{ "time": 0, "angle": 0, "curve": "stepped" },
{ "time": 1.0666, "angle": 0 }
],
"translate": [
{ "time": 0, "x": 0, "y": 0 },
{
"time": 0.1333,
"x": 0,
"y": -7.61,
"curve": [ 0.272, 0.86, 1, 1 ]
},
{ "time": 0.4, "x": 0, "y": 8.7 },
{ "time": 0.5333, "x": 0, "y": -0.41 },
{
"time": 0.6666,
"x": 0,
"y": -7.05,
"curve": [ 0.235, 0.89, 1, 1 ]
},
{ "time": 0.8, "x": 0, "y": 2.92 },
{ "time": 0.9333, "x": 0, "y": 6.78 },
{ "time": 1.0666, "x": 0, "y": 0 }
]
},
"neck": {
"rotate": [
{ "time": 0, "angle": 3.6 },
{ "time": 0.1333, "angle": 17.49 },
{ "time": 0.2666, "angle": 6.1 },
{ "time": 0.4, "angle": 3.45 },
{ "time": 0.5333, "angle": 5.17 },
{ "time": 0.6666, "angle": 18.36 },
{ "time": 0.8, "angle": 6.09 },
{ "time": 0.9333, "angle": 2.28 },
{ "time": 1.0666, "angle": 3.6 }
]
},
"head": {
"rotate": [
{
"time": 0,
"angle": 3.6,
"curve": [ 0, 0, 0.704, 1.61 ]
},
{ "time": 0.1666, "angle": -0.2 },
{ "time": 0.2666, "angle": 6.1 },
{ "time": 0.4, "angle": 3.45 },
{
"time": 0.5333,
"angle": 5.17,
"curve": [ 0, 0, 0.704, 1.61 ]
},
{ "time": 0.7, "angle": 1.1 },
{ "time": 0.8, "angle": 6.09 },
{ "time": 0.9333, "angle": 2.28 },
{ "time": 1.0666, "angle": 3.6 }
]
}
}
} }
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,36 @@
fileFormatVersion: 2
guid: d2fb6a3988dc1c84eb629148095cabdb
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
userData:

View File

@ -1,4 +1,4 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 66434ac89c9a4b24284759ae97d48205 guid: 95fc37a815534f3428ffadc65ee619d2
NativeFormatImporter: NativeFormatImporter:
userData: userData:

View File

@ -1,18 +1,13 @@
The Spine runtime for Unity comes with an example project which has "spineboy" walking. When clicked, he jumps and the transition to/from walking/jumping is blended smoothly. Use the instructions below for your version of Unity. The Spine runtime for Unity comes with an example project which has "spineboy" walking. When clicked, he jumps and the transition to/from walking/jumping is blended smoothly.
# Unity 4 # Requirements
1. Copy `spine-csharp/src` to `spine-unity/Assets/Plugins/Spine/spine-csharp`. 1. Unity 4.2+
1. Delete the `Assets/examples/Unity 3.5` directory.
1. Open the `Assets/examples/Unity 4/spineboy.unity` scene.
# Unity 3.5.7 # Instructions
Note that you **must** delete the `Unity 4` directory or Unity will crash. 1. Copy `spine-csharp/src` to `spine-unity/Assets/Spine/spine-csharp`.
1. Open the `Assets/examples/spineboy/spineboy.unity` scene.
1. Copy `spine-csharp/src` to `spine-unity/Assets/Plugins/Spine/spine-csharp`.
1. Delete the `Assets/examples/Unity 4` directory.
1. Open the `Assets/examples/Unity 3.5/spineboy.unity` scene.
# Notes # Notes