Merge remote-tracking branch 'origin/3.6-beta' into 3.6-beta

This commit is contained in:
NathanSweet 2017-06-17 18:14:10 +02:00
commit 58a5c8c2f0
78 changed files with 10834 additions and 2000 deletions

View File

@ -74,19 +74,30 @@
* Updated to Unreal Engine 4.16.1. Note that 4.16 has a regression which will make it impossible to compile plain .c files! * Updated to Unreal Engine 4.16.1. Note that 4.16 has a regression which will make it impossible to compile plain .c files!
## C# ## C#
* **Breaking changes** * **Breaking changes**
* `MeshAttachment.parentMesh` is now a private field to enforce using the `.ParentMesh` setter property in external code. The `MeshAttachment.ParentMesh` property is an appropriate replacement wherever `.parentMesh` was used. * `MeshAttachment.parentMesh` is now a private field to enforce using the `.ParentMesh` setter property in external code. The `MeshAttachment.ParentMesh` property is an appropriate replacement wherever `.parentMesh` was used.
* **Additions** * `Skeleton.GetBounds` takes a scratch array as input so it doesn't have to allocate a new array on each invocation itself. Reduces GC activity.
* `AnimationState#apply` returns boolean indicating if any timeline was applied or not. * Removed `Bone.WorldToLocalRotationX` and `Bone.WorldToLocalRotationY`. Replaced by `Bone.WorldToLocalRotation` (rotation given relative to x-axis, counter-clockwise, in degrees).
* `Animation#apply` and `Timeline#apply`` now take enums `MixPose` and `MixDirection` instead of booleans * Added `stride` parameter to `VertexAttachment.ComputeWorldVertices`.
* Removed `RegionAttachment.Vertices` field. The vertices array is provided to `RegionAttachment.ComputeWorldVertices` by the API user now.
* Removed `RegionAttachment.UpdateWorldVertices`, added `RegionAttachment.ComputeWorldVertices`. The new method now computes the x/y positions of the 4 vertices of the corner and places them in the provided `worldVertices` array, starting at `offset`, then moving by `stride` array elements when advancing to the next vertex. This allows to directly compose the vertex buffer and avoids a copy. The computation of the full vertices, including vertex colors and texture coordinates, is now done by the backend's respective renderer.
* **Additions**
* Added support for local and relative transform constraint calculation, including additional fields in `TransformConstraintData`
* Added `Bone.localToWorldRotation`(rotation given relative to x-axis, counter-clockwise, in degrees).
* Added two color tinting support, including `TwoColorTimeline` and additional fields on `Slot` and `SlotData`.
* Added `PointAttachment`, additional method `NewPointAttachment` in `AttachmentLoader` interface.
* Added `ClippingAttachment`, additional method `NewClippingAttachment` in `AttachmentLoader` interface.
* Added `SkeletonClipper` and `Triangulator`, used to implement software clipping of attachments.
* `AnimationState.Apply` returns a bool indicating if any timeline was applied or not.
* `Animation.Apply` and `Timeline.Apply`` now take enums `MixPose` and `MixDirection` instead of bools.
### Unity ### Unity
* Refactored renderer to work with new 3.6 features. * Refactored renderer to work with new 3.6 features.
* **Two color tinting** is currently supported via extra UV2 and UV3 mesh vertex streams. To use Two color tinting, you need to: * **Two color tinting** is currently supported via extra UV2 and UV3 mesh vertex streams. To use Two color tinting, you need to:
* switch on "Tint Black" under "Advanced...", * switch on "Tint Black" under "Advanced...",
* use the new `Spine/Skeleton Tint Black` shader, or your own shader that treats the UV2 and UV3 streams similarly. * use the new `Spine/Skeleton Tint Black` shader, or your own shader that treats the UV2 and UV3 streams similarly.
* **Clipping** is now supported. The SkeletonAnimation switches to slightly slower mesh generation code when clipping so limit your use of `ClippingAttachment`s when using on large numbers of skeletons. * **Clipping** is now supported. Caution: The SkeletonAnimation switches to slightly slower mesh generation code when clipping so limit your use of `ClippingAttachment`s when using on large numbers of skeletons.
* **SkeletonRenderer.initialFlip** Spine components such as SkeletonRenderer, SkeletonAnimation, SkeletonAnimator now has `initialFlipX` and `initialFlipY` fields which are also visible in the inspector under "Advanced...". It will allow you to set and preview a starting flip value for your skeleton component. This is applied immediately after the internal skeleton object is instantiated. * **SkeletonRenderer.initialFlip** Spine components such as SkeletonRenderer, SkeletonAnimation, SkeletonAnimator now has `initialFlipX` and `initialFlipY` fields which are also visible in the inspector under "Advanced...". It will allow you to set and preview a starting flip value for your skeleton component. This is applied immediately when the internal skeleton object is instantiated.
* **[SpineAttribute] Improvements** * **[SpineAttribute] Improvements**
* **Icons have been added to SpineAttributeDrawers**. This should make your default inspectors easier to understand at a glance. * **Icons have been added to SpineAttributeDrawers**. This should make your default inspectors easier to understand at a glance.
* **Added Constraint Attributes** You can now use `[SpineIkConstraint]` `[SpineTransformConstraint]` `[SpinePathConstraint]` * **Added Constraint Attributes** You can now use `[SpineIkConstraint]` `[SpineTransformConstraint]` `[SpinePathConstraint]`
@ -98,6 +109,7 @@
* **AttachmentTools source material**. `AttachmentTools` methods can now accept a `sourceMaterial` argument to copy material properties from. * **AttachmentTools source material**. `AttachmentTools` methods can now accept a `sourceMaterial` argument to copy material properties from.
* **AttachmentTools Skin Extensions**. Using AttachmentTools, you can now add entries by slot name by also providing a skeleton argument. Also `Append(Skin)`, `RemoveAttachment` and `Clear` have been added. * **AttachmentTools Skin Extensions**. Using AttachmentTools, you can now add entries by slot name by also providing a skeleton argument. Also `Append(Skin)`, `RemoveAttachment` and `Clear` have been added.
* **BoneFollower and SkeletonUtilityBone Add RigidBody Button**. The BoneFollower and SkeletonUtilityBone component inspectors will now offer to add a `Rigidbody` or `Rigidbody2D` if it detects a collider of the appropriate type. Having a rigidbody on a moving transform with a collider fits better with the Unity physics systems and prevents excess calculations. It will not detect colliders on child objects so you have to add Rigidbody components manually accordingly. * **BoneFollower and SkeletonUtilityBone Add RigidBody Button**. The BoneFollower and SkeletonUtilityBone component inspectors will now offer to add a `Rigidbody` or `Rigidbody2D` if it detects a collider of the appropriate type. Having a rigidbody on a moving transform with a collider fits better with the Unity physics systems and prevents excess calculations. It will not detect colliders on child objects so you have to add Rigidbody components manually accordingly.
* **SkeletonRenderer.OnPostProcessVertices** is a new callback that gives you a reference to the MeshGenerator after it has generated a mesh from the current skeleton pose. You can access `meshGenerator.VertexBuffer` or `meshGenerator.ColorBuffer` to modify these before they get pushed into the UnityEngine.Mesh for rendering. This can be useful for non-shader vertex effects.
* **Examples** * **Examples**
* **Examples now use properties**. The code in the example scripts have been switched over to using properties instead of fields to encourage their use for consistency. This is in anticipation of both users who want to move the Spine folders to the Unity Plugins folder (compiled as a different assembly), and of Unity 2017's ability to manually define different assemblies for shorter compilation times. * **Examples now use properties**. The code in the example scripts have been switched over to using properties instead of fields to encourage their use for consistency. This is in anticipation of both users who want to move the Spine folders to the Unity Plugins folder (compiled as a different assembly), and of Unity 2017's ability to manually define different assemblies for shorter compilation times.
* **Mix And Match**. The mix-and-match example scene, code and data have been updated to reflect the current recommended setup for animation-compatible custom equip systems The underlying API has changed since 3.5 and the new API calls in MixAndMatch.cs is recommended. Documentation is in progress. * **Mix And Match**. The mix-and-match example scene, code and data have been updated to reflect the current recommended setup for animation-compatible custom equip systems The underlying API has changed since 3.5 and the new API calls in MixAndMatch.cs is recommended. Documentation is in progress.
@ -112,7 +124,8 @@
* Render settings in `SkeletonGraphic` can now be accessed under `SkeletonGraphic.MeshGenerator.settings`. This is visible in the SkeletonGraphic inspector as `Advanced...` * Render settings in `SkeletonGraphic` can now be accessed under `SkeletonGraphic.MeshGenerator.settings`. This is visible in the SkeletonGraphic inspector as `Advanced...`
* We will continue to bundle the unitypackage with the empty .cs files of deprecated classes until Spine 3.7 to ensure the upgrade process does not break. * We will continue to bundle the unitypackage with the empty .cs files of deprecated classes until Spine 3.7 to ensure the upgrade process does not break.
* The [SpineAttachment(slotField:)] optional parameter found property value now acts as a Find(slotName) argument rather than Contains(slotName). * The [SpineAttachment(slotField:)] optional parameter found property value now acts as a Find(slotName) argument rather than Contains(slotName).
* `SkeletonAnimator` now has autoreset set to true by default. Old prefabs and scene values will have been serialized to whatever value it was previously. This change only applies to new instances of SkeletonAnimator. * `SkeletonAnimator` now uses a `SkeletonAnimator.MecanimTranslator` class to translate an Animator's Mecanim State Machine into skeleton poses. This makes code reuse possible for a Mecanim version of SkeletonGraphic.
* `SkeletonAnimator` `autoreset` and the `mixModes` array are now a part of SkeletonAnimator's MecanimTranslator `.Translator`. `autoReset` is set to true by default. Old prefabs and scene objects with Skeleton Animator may no longer have correct values set.
* Warnings and conditionals checking for specific Unity 5.2-and-below incompatibility have been removed. * Warnings and conditionals checking for specific Unity 5.2-and-below incompatibility have been removed.
## XNA/MonoGame ## XNA/MonoGame

View File

@ -773,7 +773,7 @@ namespace Spine {
/// <summary> /// <summary>
/// Seconds for the last frame of this animation. Non-looping animations won't play past this time. Looping animations will /// Seconds for the last frame of this animation. Non-looping animations won't play past this time. Looping animations will
/// loop back to <see cref="TrackEntry.AnimationStart"/> at this time. Defaults to the animation duration.</summary> /// loop back to <see cref="TrackEntry.AnimationStart"/> at this time. Defaults to the animation duration.</summary>
public float AnimationEnd { get { return animationEnd; } } public float AnimationEnd { get { return animationEnd; } set { animationEnd = value; } }
/// <summary> /// <summary>
/// The time in seconds this animation was last applied. Some timelines use this for one-time triggers. Eg, when this /// The time in seconds this animation was last applied. Some timelines use this for one-time triggers. Eg, when this

View File

@ -260,25 +260,27 @@ TextMesh:
m_PrefabParentObject: {fileID: 0} m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 199409354} m_GameObject: {fileID: 199409354}
m_Text: 'Spine GameObjects are GameObjects m_Text: '"Spine GameObjects" are GameObjects with
with these components on it: a SkeletonAnimation
- MeshFilter (or SkeletonRenderer, SkeletonGraphic or SkeletonAnimator)
- MeshRenderer and its requisite Components.
- SkeletonAnimation
<b>SkeletonAnimation</b> <b>SkeletonAnimation</b>
is the Spine component you''ll likely be using most often. is the Spine component you''ll likely be using most often.
It uses a Skeleton Data Asset.
It uses a Skeleton Data Asset (the Unity asset files with the Spine icon).
Skeleton Data Asset ties together your Spine exports (.json, .png and .atlas.txt) <b>SkeletonData Asset</b>
(the asset files with the Spine icon)
SkeletonDataAssets ties together your Spine exports (.json, .png and .atlas.txt)
See the Spine-Unity Documentation to learn more about the asset files. See the Spine-Unity Documentation to learn more about the asset files.
@ -556,7 +558,7 @@ TextMesh:
m_PrefabParentObject: {fileID: 0} m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1945923976} m_GameObject: {fileID: 1945923976}
m_Text: Enter <b>PLAY MODE</b> in Unity to see Spineboy animate. m_Text: Enter <b>PLAY MODE</b> in Unity to see Spine-Unity Girl animate.
m_OffsetZ: 0 m_OffsetZ: 0
m_CharacterSize: 0.12 m_CharacterSize: 0.12
m_LineSpacing: 1 m_LineSpacing: 1

View File

@ -147,7 +147,7 @@ TextMesh:
m_GameObject: {fileID: 199409354} m_GameObject: {fileID: 199409354}
m_Text: 'This scene will show you an example m_Text: 'This scene will show you an example
of basic animation control through code. of basic animation code.
Open the SpineBeginnerTwo script attached Open the SpineBeginnerTwo script attached
@ -317,8 +317,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2} skeletonDataAsset: {fileID: 11400000, guid: 45a15bf53b040de42b2adbc759a40203, type: 2}
initialSkinName: base initialSkinName: default
initialFlipX: 0 initialFlipX: 0
initialFlipY: 0 initialFlipY: 0
separatorSlotNames: [] separatorSlotNames: []
@ -349,7 +349,7 @@ MeshRenderer:
m_LightProbeUsage: 1 m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_Materials: m_Materials:
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} - {fileID: 2100000, guid: 86873d92b9c6412428e6e2d4f827c88b, type: 2}
m_StaticBatchInfo: m_StaticBatchInfo:
firstSubMesh: 0 firstSubMesh: 0
subMeshCount: 0 subMeshCount: 0
@ -403,6 +403,8 @@ MonoBehaviour:
idleAnimationName: idle idleAnimationName: idle
walkAnimationName: walk walkAnimationName: walk
shootAnimationName: shoot shootAnimationName: shoot
idleTurnAnimationName: idle-turn
runToIdleAnimationName: run-to-idle
--- !u!1 &926099111 --- !u!1 &926099111
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -152,7 +152,7 @@ MonoBehaviour:
state: 0 state: 0
facingLeft: 0 facingLeft: 0
currentSpeed: 0 currentSpeed: 0
shootInterval: 0.1 shootInterval: 0.15
--- !u!1 &320097517 --- !u!1 &320097517
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -854,7 +854,14 @@ TextMesh:
See the PLAYER INPUT, PLAYER Spineboy and VIEW Spineboy See the PLAYER INPUT, PLAYER Spineboy and VIEW Spineboy
GameObjects and the scripts on them, to learn more.' GameObjects and the scripts on them, to learn more.
You may opt to arrange your scripts in a different way, of course.
But compartmentalizing concerns among scripts by the right amount can
help you manage your script logic better.'
m_OffsetZ: 0 m_OffsetZ: 0
m_CharacterSize: 0.12 m_CharacterSize: 0.12
m_LineSpacing: 1 m_LineSpacing: 1
@ -1234,8 +1241,10 @@ ParticleSystem:
playOnAwake: 0 playOnAwake: 0
autoRandomSeed: 1 autoRandomSeed: 1
startDelay: startDelay:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1268,8 +1277,10 @@ ParticleSystem:
serializedVersion: 3 serializedVersion: 3
enabled: 1 enabled: 1
startLifetime: startLifetime:
serializedVersion: 2
minMaxState: 3 minMaxState: 3
scalar: 0.5 scalar: 0.5
minScalar: 0.3
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1295,8 +1306,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 0 m_RotationOrder: 0
startSpeed: startSpeed:
serializedVersion: 2
minMaxState: 3 minMaxState: 3
scalar: 35 scalar: 35
minScalar: 5
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1324,6 +1337,8 @@ ParticleSystem:
startColor: startColor:
serializedVersion: 2 serializedVersion: 2
minMaxState: 2 minMaxState: 2
minColor: {r: 1, g: 0.98039216, b: 0.7294118, a: 1}
maxColor: {r: 1, g: 0.5019608, b: 0.11764706, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -1382,11 +1397,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 0.98039216, b: 0.7294118, a: 1}
maxColor: {r: 1, g: 0.5019608, b: 0.11764706, a: 1}
startSize: startSize:
serializedVersion: 2
minMaxState: 3 minMaxState: 3
scalar: 0.5 scalar: 0.5
minScalar: 0.2
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1412,8 +1427,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 0 m_RotationOrder: 0
startSizeY: startSizeY:
serializedVersion: 2
minMaxState: 3 minMaxState: 3
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1439,8 +1456,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 0 m_RotationOrder: 0
startSizeZ: startSizeZ:
serializedVersion: 2
minMaxState: 3 minMaxState: 3
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1466,8 +1485,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 0 m_RotationOrder: 0
startRotationX: startRotationX:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1505,8 +1526,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startRotationY: startRotationY:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1544,8 +1567,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startRotation: startRotation:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1587,8 +1612,10 @@ ParticleSystem:
size3D: 0 size3D: 0
rotation3D: 0 rotation3D: 0
gravityModifier: gravityModifier:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1639,8 +1666,10 @@ ParticleSystem:
mode: 0 mode: 0
spread: 0 spread: 0
speed: speed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1682,8 +1711,10 @@ ParticleSystem:
mode: 0 mode: 0
spread: 0 spread: 0
speed: speed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1736,8 +1767,10 @@ ParticleSystem:
enabled: 1 enabled: 1
serializedVersion: 4 serializedVersion: 4
rateOverTime: rateOverTime:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1775,8 +1808,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
rateOverDistance: rateOverDistance:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1823,8 +1858,10 @@ ParticleSystem:
SizeModule: SizeModule:
enabled: 1 enabled: 1
curve: curve:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1868,8 +1905,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1907,8 +1946,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1949,8 +1990,10 @@ ParticleSystem:
RotationModule: RotationModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1988,8 +2031,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2027,8 +2072,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
curve: curve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0.7853982 scalar: 0.7853982
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2071,6 +2118,8 @@ ParticleSystem:
gradient: gradient:
serializedVersion: 2 serializedVersion: 2
minMaxState: 1 minMaxState: 1
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -2129,13 +2178,13 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
UVModule: UVModule:
enabled: 0 enabled: 0
frameOverTime: frameOverTime:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 0.9999 scalar: 0.9999
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2173,8 +2222,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startFrame: startFrame:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2223,8 +2274,10 @@ ParticleSystem:
VelocityModule: VelocityModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2262,8 +2315,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2301,8 +2356,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2344,8 +2401,10 @@ ParticleSystem:
enabled: 0 enabled: 0
m_Mode: 0 m_Mode: 0
m_Curve: m_Curve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2385,8 +2444,10 @@ ParticleSystem:
ForceModule: ForceModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2424,8 +2485,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2463,8 +2526,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2509,8 +2574,10 @@ ParticleSystem:
ClampVelocityModule: ClampVelocityModule:
enabled: 1 enabled: 1
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2548,8 +2615,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2587,8 +2656,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2626,8 +2697,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
magnitude: magnitude:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 20 scalar: 20
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2670,8 +2743,10 @@ ParticleSystem:
NoiseModule: NoiseModule:
enabled: 0 enabled: 0
strength: strength:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2709,8 +2784,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
strengthY: strengthY:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2748,8 +2825,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
strengthZ: strengthZ:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2794,8 +2873,10 @@ ParticleSystem:
octaveScale: 2 octaveScale: 2
quality: 2 quality: 2
scrollSpeed: scrollSpeed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2833,8 +2914,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
remap: remap:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2872,8 +2955,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
remapY: remapY:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2911,8 +2996,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
remapZ: remapZ:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2953,8 +3040,10 @@ ParticleSystem:
SizeBySpeedModule: SizeBySpeedModule:
enabled: 0 enabled: 0
curve: curve:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2992,8 +3081,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3031,8 +3122,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3074,8 +3167,10 @@ ParticleSystem:
RotationBySpeedModule: RotationBySpeedModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3113,8 +3208,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3152,8 +3249,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
curve: curve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0.7853982 scalar: 0.7853982
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3197,6 +3296,8 @@ ParticleSystem:
gradient: gradient:
serializedVersion: 2 serializedVersion: 2
minMaxState: 1 minMaxState: 1
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3255,8 +3356,6 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
range: {x: 0, y: 1} range: {x: 0, y: 1}
CollisionModule: CollisionModule:
enabled: 0 enabled: 0
@ -3270,8 +3369,10 @@ ParticleSystem:
plane4: {fileID: 0} plane4: {fileID: 0}
plane5: {fileID: 0} plane5: {fileID: 0}
m_Dampen: m_Dampen:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3309,8 +3410,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
m_Bounce: m_Bounce:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3348,8 +3451,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
m_EnergyLossOnCollision: m_EnergyLossOnCollision:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3427,8 +3532,10 @@ ParticleSystem:
range: 1 range: 1
intensity: 1 intensity: 1
rangeCurve: rangeCurve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3466,8 +3573,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
intensityCurve: intensityCurve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3509,8 +3618,10 @@ ParticleSystem:
enabled: 0 enabled: 0
ratio: 1 ratio: 1
lifetime: lifetime:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3557,6 +3668,8 @@ ParticleSystem:
colorOverLifetime: colorOverLifetime:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3615,11 +3728,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
widthOverTrail: widthOverTrail:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3659,6 +3772,8 @@ ParticleSystem:
colorOverTrail: colorOverTrail:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3717,8 +3832,6 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
CustomDataModule: CustomDataModule:
enabled: 0 enabled: 0
mode0: 0 mode0: 0
@ -3726,6 +3839,8 @@ ParticleSystem:
color0: color0:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3784,11 +3899,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
vector0_0: vector0_0:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3826,8 +3941,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector0_1: vector0_1:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3865,8 +3982,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector0_2: vector0_2:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3904,8 +4023,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector0_3: vector0_3:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3947,6 +4068,8 @@ ParticleSystem:
color1: color1:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -4005,11 +4128,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
vector1_0: vector1_0:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -4047,8 +4170,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector1_1: vector1_1:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -4086,8 +4211,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector1_2: vector1_2:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -4125,8 +4252,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector1_3: vector1_3:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:

View File

@ -242,120 +242,6 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &757780186
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 100000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 757780190}
- component: {fileID: 757780189}
- component: {fileID: 757780188}
- component: {fileID: 757780187}
m_Layer: 0
m_Name: dragon (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &757780187
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11400000, guid: d51ed5943e10bcb4394b5eec480293f8,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 757780186}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 76506fa7fbeed084ab2dfb084648c628, type: 2}
initialSkinName: default
initialFlipX: 0
initialFlipY: 0
separatorSlotNames: []
zSpacing: 0
useClipping: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
tintBlack: 0
singleSubmesh: 0
addNormals: 1
calculateTangents: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: flying
loop: 1
timeScale: 1
--- !u!23 &757780188
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 2300000, guid: d51ed5943e10bcb4394b5eec480293f8,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 757780186}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &757780189
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 3300000, guid: d51ed5943e10bcb4394b5eec480293f8,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 757780186}
m_Mesh: {fileID: 0}
--- !u!4 &757780190
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 757780186}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1604340971 --- !u!1 &1604340971
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -520,6 +406,7 @@ MeshRenderer:
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
- {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2}
m_StaticBatchInfo: m_StaticBatchInfo:
firstSubMesh: 0 firstSubMesh: 0
subMeshCount: 0 subMeshCount: 0

View File

@ -249,8 +249,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2} skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2}
initialSkinName: default initialSkinName: base
initialFlipX: 0 initialFlipX: 0
initialFlipY: 0 initialFlipY: 0
separatorSlotNames: separatorSlotNames:
@ -519,8 +519,10 @@ ParticleSystem:
playOnAwake: 1 playOnAwake: 1
autoRandomSeed: 1 autoRandomSeed: 1
startDelay: startDelay:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -565,8 +567,10 @@ ParticleSystem:
serializedVersion: 3 serializedVersion: 3
enabled: 1 enabled: 1
startLifetime: startLifetime:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -604,8 +608,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startSpeed: startSpeed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1.5 scalar: 1.5
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -645,6 +651,8 @@ ParticleSystem:
startColor: startColor:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 0.5176471, b: 0, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -703,11 +711,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 0.5176471, b: 0, a: 1}
startSize: startSize:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0.5 scalar: 0.5
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -745,8 +753,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startSizeY: startSizeY:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -784,8 +794,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startSizeZ: startSizeZ:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -823,8 +835,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startRotationX: startRotationX:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -862,8 +876,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startRotationY: startRotationY:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -901,8 +917,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startRotation: startRotation:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -944,8 +962,10 @@ ParticleSystem:
size3D: 0 size3D: 0
rotation3D: 0 rotation3D: 0
gravityModifier: gravityModifier:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -996,8 +1016,10 @@ ParticleSystem:
mode: 0 mode: 0
spread: 0 spread: 0
speed: speed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1039,8 +1061,10 @@ ParticleSystem:
mode: 0 mode: 0
spread: 0 spread: 0
speed: speed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1093,8 +1117,10 @@ ParticleSystem:
enabled: 1 enabled: 1
serializedVersion: 4 serializedVersion: 4
rateOverTime: rateOverTime:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 50 scalar: 50
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1132,8 +1158,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
rateOverDistance: rateOverDistance:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1175,8 +1203,10 @@ ParticleSystem:
SizeModule: SizeModule:
enabled: 1 enabled: 1
curve: curve:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1220,8 +1250,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1259,8 +1291,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1301,8 +1335,10 @@ ParticleSystem:
RotationModule: RotationModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1340,8 +1376,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1379,8 +1417,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
curve: curve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0.7853982 scalar: 0.7853982
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1423,6 +1463,8 @@ ParticleSystem:
gradient: gradient:
serializedVersion: 2 serializedVersion: 2
minMaxState: 1 minMaxState: 1
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -1481,13 +1523,13 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
UVModule: UVModule:
enabled: 0 enabled: 0
frameOverTime: frameOverTime:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 0.9999 scalar: 0.9999
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1525,8 +1567,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
startFrame: startFrame:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1575,8 +1619,10 @@ ParticleSystem:
VelocityModule: VelocityModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1614,8 +1660,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1653,8 +1701,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1696,8 +1746,10 @@ ParticleSystem:
enabled: 0 enabled: 0
m_Mode: 0 m_Mode: 0
m_Curve: m_Curve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1737,8 +1789,10 @@ ParticleSystem:
ForceModule: ForceModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1776,8 +1830,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1815,8 +1871,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1861,8 +1919,10 @@ ParticleSystem:
ClampVelocityModule: ClampVelocityModule:
enabled: 1 enabled: 1
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1900,8 +1960,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1939,8 +2001,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -1978,8 +2042,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
magnitude: magnitude:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 20 scalar: 20
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2022,8 +2088,10 @@ ParticleSystem:
NoiseModule: NoiseModule:
enabled: 0 enabled: 0
strength: strength:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2061,8 +2129,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
strengthY: strengthY:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2100,8 +2170,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
strengthZ: strengthZ:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2146,8 +2218,10 @@ ParticleSystem:
octaveScale: 2 octaveScale: 2
quality: 2 quality: 2
scrollSpeed: scrollSpeed:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2185,8 +2259,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
remap: remap:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2224,8 +2300,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
remapY: remapY:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2263,8 +2341,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
remapZ: remapZ:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2305,8 +2385,10 @@ ParticleSystem:
SizeBySpeedModule: SizeBySpeedModule:
enabled: 0 enabled: 0
curve: curve:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2344,8 +2426,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2383,8 +2467,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
z: z:
serializedVersion: 2
minMaxState: 1 minMaxState: 1
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2426,8 +2512,10 @@ ParticleSystem:
RotationBySpeedModule: RotationBySpeedModule:
enabled: 0 enabled: 0
x: x:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2465,8 +2553,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
y: y:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2504,8 +2594,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
curve: curve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0.7853982 scalar: 0.7853982
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2549,6 +2641,8 @@ ParticleSystem:
gradient: gradient:
serializedVersion: 2 serializedVersion: 2
minMaxState: 1 minMaxState: 1
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -2607,8 +2701,6 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
range: {x: 0, y: 1} range: {x: 0, y: 1}
CollisionModule: CollisionModule:
enabled: 0 enabled: 0
@ -2622,8 +2714,10 @@ ParticleSystem:
plane4: {fileID: 0} plane4: {fileID: 0}
plane5: {fileID: 0} plane5: {fileID: 0}
m_Dampen: m_Dampen:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2661,8 +2755,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
m_Bounce: m_Bounce:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2700,8 +2796,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
m_EnergyLossOnCollision: m_EnergyLossOnCollision:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2779,8 +2877,10 @@ ParticleSystem:
range: 1 range: 1
intensity: 1 intensity: 1
rangeCurve: rangeCurve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2818,8 +2918,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
intensityCurve: intensityCurve:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2861,8 +2963,10 @@ ParticleSystem:
enabled: 0 enabled: 0
ratio: 1 ratio: 1
lifetime: lifetime:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -2909,6 +3013,8 @@ ParticleSystem:
colorOverLifetime: colorOverLifetime:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -2967,11 +3073,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
widthOverTrail: widthOverTrail:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 1 scalar: 1
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3011,6 +3117,8 @@ ParticleSystem:
colorOverTrail: colorOverTrail:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3069,8 +3177,6 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
CustomDataModule: CustomDataModule:
enabled: 0 enabled: 0
mode0: 0 mode0: 0
@ -3078,6 +3184,8 @@ ParticleSystem:
color0: color0:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3136,11 +3244,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
vector0_0: vector0_0:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3178,8 +3286,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector0_1: vector0_1:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3217,8 +3327,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector0_2: vector0_2:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3256,8 +3368,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector0_3: vector0_3:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3299,6 +3413,8 @@ ParticleSystem:
color1: color1:
serializedVersion: 2 serializedVersion: 2
minMaxState: 0 minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient: maxGradient:
serializedVersion: 2 serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1} key0: {r: 1, g: 1, b: 1, a: 1}
@ -3357,11 +3473,11 @@ ParticleSystem:
m_Mode: 0 m_Mode: 0
m_NumColorKeys: 2 m_NumColorKeys: 2
m_NumAlphaKeys: 2 m_NumAlphaKeys: 2
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
vector1_0: vector1_0:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3399,8 +3515,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector1_1: vector1_1:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3438,8 +3556,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector1_2: vector1_2:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -3477,8 +3597,10 @@ ParticleSystem:
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
vector1_3: vector1_3:
serializedVersion: 2
minMaxState: 0 minMaxState: 0
scalar: 0 scalar: 0
minScalar: 0
maxCurve: maxCurve:
serializedVersion: 2 serializedVersion: 2
m_Curve: m_Curve:
@ -4306,8 +4428,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2} skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2}
initialSkinName: default initialSkinName: base
initialFlipX: 0 initialFlipX: 0
initialFlipY: 0 initialFlipY: 0
separatorSlotNames: separatorSlotNames:

View File

@ -119,6 +119,8 @@ GameObject:
- component: {fileID: 351144569} - component: {fileID: 351144569}
- component: {fileID: 351144568} - component: {fileID: 351144568}
- component: {fileID: 351144567} - component: {fileID: 351144567}
- component: {fileID: 351144571}
- component: {fileID: 351144572}
m_Layer: 0 m_Layer: 0
m_Name: Spine GameObject (spineboy) m_Name: Spine GameObject (spineboy)
m_TagString: Untagged m_TagString: Untagged
@ -137,8 +139,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2} skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2}
initialSkinName: default initialSkinName: base
initialFlipX: 0 initialFlipX: 0
initialFlipY: 0 initialFlipY: 0
separatorSlotNames: [] separatorSlotNames: []
@ -169,7 +171,7 @@ MeshRenderer:
m_LightProbeUsage: 1 m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
m_Materials: m_Materials:
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} - {fileID: 2100000, guid: 128e02fa6a4f5964fa898757a425b354, type: 2}
m_StaticBatchInfo: m_StaticBatchInfo:
firstSubMesh: 0 firstSubMesh: 0
subMeshCount: 0 subMeshCount: 0
@ -209,6 +211,40 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &351144571
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 351144566}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26947ae098a8447408d80c0c86e35b48, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonRenderer: {fileID: 351144567}
customSlotMaterials: []
customMaterialOverrides:
- overrideDisabled: 0
originalMaterial: {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
replacementMaterial: {fileID: 2100000, guid: 128e02fa6a4f5964fa898757a425b354,
type: 2}
--- !u!114 &351144572
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 351144566}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 395f769061839bf488f157c37d23835d, type: 3}
m_Name:
m_EditorClassIdentifier:
flashCount: 3
flashColor: {r: 1, g: 1, b: 1, a: 1}
interval: 0.016666668
fillPhaseProperty: _FillPhase
fillColorProperty: _FillColor
--- !u!1 &795271513 --- !u!1 &795271513
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -364,6 +400,22 @@ MonoBehaviour:
spineboy: {fileID: 351144567} spineboy: {fileID: 351144567}
gauge: {fileID: 795271514} gauge: {fileID: 795271514}
healthText: {fileID: 1847717249} healthText: {fileID: 1847717249}
onAttack:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 351144572}
m_MethodName: Flash
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null
--- !u!1 &1053578423 --- !u!1 &1053578423
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -205,6 +205,86 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 4 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &394849622
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 394849623}
- component: {fileID: 394849625}
- component: {fileID: 394849624}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &394849623
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 394849622}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2107709637}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -0.000024796, y: -294}
m_SizeDelta: {x: 412, y: 120.85}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &394849624
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 394849622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 'Use of the lit sprite shaders with normal maps requires Tangents. Tangents
can be generated by SkeletonAnimation by checking "Solve Tangents" under the "Advanced..."
foldout in its inspector.''
The bundled sprite shaders are capable of assuming a fixed normal so there is
no need for "Add Normals" to be checked under Advanced.'
--- !u!222 &394849625
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 394849622}
--- !u!1 &770573969 --- !u!1 &770573969
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -720,6 +800,68 @@ SpriteRenderer:
m_Size: {x: 1, y: 1} m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
--- !u!1 &1537129159
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1537129162}
- component: {fileID: 1537129161}
- component: {fileID: 1537129160}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1537129160
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1537129159}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1537129161
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1537129159}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 5
--- !u!4 &1537129162
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1537129159}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1628453470 --- !u!1 &1628453470
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -920,3 +1062,97 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2107709633
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 2107709637}
- component: {fileID: 2107709636}
- component: {fileID: 2107709635}
- component: {fileID: 2107709634}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &2107709634
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2107709633}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &2107709635
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2107709633}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
--- !u!223 &2107709636
Canvas:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2107709633}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &2107709637
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2107709633}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 394849623}
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}

View File

@ -41,6 +41,8 @@ namespace Spine.Unity.Examples {
int currentHealth = 100; int currentHealth = 100;
const int maxHealth = 100; const int maxHealth = 100;
public UnityEngine.Events.UnityEvent onAttack;
void Update () { void Update () {
if (Input.GetKeyDown(KeyCode.Space)) { if (Input.GetKeyDown(KeyCode.Space)) {
currentHealth -= 10; currentHealth -= 10;
@ -50,6 +52,7 @@ namespace Spine.Unity.Examples {
spineboy.AnimationState.SetAnimation(0, "hit", false); spineboy.AnimationState.SetAnimation(0, "hit", false);
spineboy.AnimationState.AddAnimation(0, "idle", true, 0); spineboy.AnimationState.AddAnimation(0, "idle", true, 0);
gauge.fillPercent = (float)currentHealth/(float)maxHealth; gauge.fillPercent = (float)currentHealth/(float)maxHealth;
onAttack.Invoke();
} else { } else {
if (currentHealth >= 0) { if (currentHealth >= 0) {
gauge.fillPercent = 0; gauge.fillPercent = 0;

View File

@ -37,15 +37,15 @@ namespace Spine.Unity.Examples {
[RequireComponent(typeof(CharacterController))] [RequireComponent(typeof(CharacterController))]
public class BasicPlatformerController : MonoBehaviour { public class BasicPlatformerController : MonoBehaviour {
[Header("Controls")] [Header("Controls")]
public string XAxis = "Horizontal"; public string XAxis = "Horizontal";
public string YAxis = "Vertical"; public string YAxis = "Vertical";
public string JumpButton = "Jump"; public string JumpButton = "Jump";
[Header("Moving")] [Header("Moving")]
public float walkSpeed = 4; public float walkSpeed = 1.5f;
public float runSpeed = 10; public float runSpeed = 7f;
public float gravity = 65; public float gravityScale = 6.6f;
[Header("Jumping")] [Header("Jumping")]
public float jumpSpeed = 25; public float jumpSpeed = 25;
@ -55,7 +55,6 @@ namespace Spine.Unity.Examples {
public float forceCrouchDuration = 0.5f; public float forceCrouchDuration = 0.5f;
[Header("Graphics")] [Header("Graphics")]
public Transform graphicsRoot;
public SkeletonAnimation skeletonAnimation; public SkeletonAnimation skeletonAnimation;
[Header("Animation")] [Header("Animation")]
@ -72,32 +71,30 @@ namespace Spine.Unity.Examples {
[SpineAnimation(dataField: "skeletonAnimation")] [SpineAnimation(dataField: "skeletonAnimation")]
public string crouchName = "Crouch"; public string crouchName = "Crouch";
[Header("Audio")] [Header("Effects")]
public AudioSource jumpAudioSource; public AudioSource jumpAudioSource;
public AudioSource hardfallAudioSource; public AudioSource hardfallAudioSource;
public AudioSource footstepAudioSource; public AudioSource footstepAudioSource;
public ParticleSystem landParticles;
[SpineEvent] [SpineEvent]
public string footstepEventName = "Footstep"; public string footstepEventName = "Footstep";
CharacterController controller; CharacterController controller;
Vector2 velocity = Vector2.zero; Vector3 velocity = default(Vector3);
Vector2 lastVelocity = Vector2.zero;
bool lastGrounded = false;
float jumpEndTime = 0; float jumpEndTime = 0;
bool jumpInterrupt = false; bool jumpInterrupt = false;
float forceCrouchEndTime; float forceCrouchEndTime;
Quaternion flippedRotation = Quaternion.Euler(0, 180, 0); Vector2 input;
bool wasGrounded = false;
void Awake () { void Awake () {
controller = GetComponent<CharacterController>(); controller = GetComponent<CharacterController>();
} }
void Start () { void Start () {
// Register a callback for Spine Events (in this case, Footstep)
skeletonAnimation.AnimationState.Event += HandleEvent; skeletonAnimation.AnimationState.Event += HandleEvent;
} }
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
// Play some sound if footstep event fired
if (e.Data.Name == footstepEventName) { if (e.Data.Name == footstepEventName) {
footstepAudioSource.Stop(); footstepAudioSource.Stop();
footstepAudioSource.pitch = GetRandomPitch(0.2f); footstepAudioSource.pitch = GetRandomPitch(0.2f);
@ -105,100 +102,85 @@ namespace Spine.Unity.Examples {
} }
} }
void Update () { static float GetRandomPitch (float maxOffset) {
//control inputs return 1f + Random.Range(-maxOffset, maxOffset);
float x = Input.GetAxis(XAxis); }
float y = Input.GetAxis(YAxis);
//check for force crouch void Update () {
bool crouching = (controller.isGrounded && y < -0.5f) || (forceCrouchEndTime > Time.time); input.x = Input.GetAxis(XAxis);
velocity.x = 0; input.y = Input.GetAxis(YAxis);
bool crouching = (controller.isGrounded && input.y < -0.5f) || (forceCrouchEndTime > Time.time);
velocity.x = 0;
float dt = Time.deltaTime;
//Calculate control velocity
if (!crouching) { if (!crouching) {
if (Input.GetButtonDown(JumpButton) && controller.isGrounded) { if (Input.GetButtonDown(JumpButton) && controller.isGrounded) {
//jump
jumpAudioSource.Stop(); jumpAudioSource.Stop();
jumpAudioSource.Play(); jumpAudioSource.Play();
velocity.y = jumpSpeed; velocity.y = jumpSpeed;
jumpEndTime = Time.time + jumpDuration; jumpEndTime = Time.time + jumpDuration;
} else if (Time.time < jumpEndTime && Input.GetButtonUp(JumpButton)) { } else {
jumpInterrupt = true; jumpInterrupt |= Time.time < jumpEndTime && Input.GetButtonUp(JumpButton);
} }
if (input.x != 0) {
if (x != 0) { velocity.x = Mathf.Abs(input.x) > 0.6f ? runSpeed : walkSpeed;
//walk or run velocity.x *= Mathf.Sign(input.x);
velocity.x = Mathf.Abs(x) > 0.6f ? runSpeed : walkSpeed;
velocity.x *= Mathf.Sign(x);
} }
if (jumpInterrupt) { if (jumpInterrupt) {
//interrupt jump and smoothly cut Y velocity
if (velocity.y > 0) { if (velocity.y > 0) {
velocity.y = Mathf.MoveTowards(velocity.y, 0, Time.deltaTime * 100); velocity.y = Mathf.MoveTowards(velocity.y, 0, dt * jumpInterruptFactor);
} else { } else {
jumpInterrupt = false; jumpInterrupt = false;
} }
} }
} }
//apply gravity F = mA (Learn it, love it, live it) var gravityDeltaVelocity = Physics.gravity * gravityScale * dt;
velocity.y -= gravity * Time.deltaTime;
//move
controller.Move(new Vector3(velocity.x, velocity.y, 0) * Time.deltaTime);
if (controller.isGrounded) { if (controller.isGrounded) {
//cancel out Y velocity if on ground
velocity.y = -gravity * Time.deltaTime;
jumpInterrupt = false; jumpInterrupt = false;
} else {
if (wasGrounded) {
if (velocity.y < 0)
velocity.y = 0;
} else {
velocity += gravityDeltaVelocity;
}
} }
wasGrounded = controller.isGrounded;
Vector2 deltaVelocity = lastVelocity - velocity;
if (!lastGrounded && controller.isGrounded) { controller.Move(velocity * dt);
//detect hard fall
if ((gravity * Time.deltaTime) - deltaVelocity.y > forceCrouchVelocity) { if (!wasGrounded && controller.isGrounded) {
if (-velocity.y > forceCrouchVelocity) {
forceCrouchEndTime = Time.time + forceCrouchDuration; forceCrouchEndTime = Time.time + forceCrouchDuration;
hardfallAudioSource.Play(); hardfallAudioSource.Play();
} else { } else {
//play footstep audio if light fall because why not
footstepAudioSource.Play(); footstepAudioSource.Play();
} }
landParticles.Emit((int)(velocity.y / -9f) + 2);
} }
//graphics updates
if (controller.isGrounded) { if (controller.isGrounded) {
if (crouching) { //crouch if (crouching) {
skeletonAnimation.AnimationName = crouchName; skeletonAnimation.AnimationName = crouchName;
} else { } else {
if (x == 0) //idle if (input.x == 0)
skeletonAnimation.AnimationName = idleName; skeletonAnimation.AnimationName = idleName;
else //move else
skeletonAnimation.AnimationName = Mathf.Abs(x) > 0.6f ? runName : walkName; skeletonAnimation.AnimationName = Mathf.Abs(input.x) > 0.6f ? runName : walkName;
} }
} else { } else {
if (velocity.y > 0) //jump skeletonAnimation.AnimationName = velocity.y > 0 ? jumpName : fallName;
skeletonAnimation.AnimationName = jumpName;
else //fall
skeletonAnimation.AnimationName = fallName;
} }
//flip left or right if (input.x != 0)
if (x > 0) skeletonAnimation.Skeleton.FlipX = input.x < 0;
graphicsRoot.localRotation = Quaternion.identity;
else if (x < 0)
graphicsRoot.localRotation = flippedRotation;
//store previous state
lastVelocity = velocity;
lastGrounded = controller.isGrounded;
}
static float GetRandomPitch (float maxOffset) {
return 1f + Random.Range(-maxOffset, maxOffset);
} }
} }
} }

View File

@ -1,85 +1,85 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes Software License v2.5 * Spine Runtimes Software License v2.5
* *
* Copyright (c) 2013-2016, Esoteric Software * Copyright (c) 2013-2016, Esoteric Software
* All rights reserved. * All rights reserved.
* *
* You are granted a perpetual, non-exclusive, non-sublicensable, and * You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine * non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal * Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of * use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate, * the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise * adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove, * create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent, * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the * or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source * Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms. * form must include this license and terms.
* *
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * 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 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
using Spine.Unity; using Spine.Unity;
namespace Spine.Unity.Examples { namespace Spine.Unity.Examples {
public class Raptor : MonoBehaviour { public class Raptor : MonoBehaviour {
#region Inspector #region Inspector
[SpineAnimation] [SpineAnimation]
public string walk = "walk"; public string walk = "walk";
[SpineAnimation] [SpineAnimation]
public string gungrab = "gungrab"; public string gungrab = "gungrab";
[SpineAnimation] [SpineAnimation]
public string gunkeep = "gunkeep"; public string gunkeep = "gunkeep";
[SpineEvent] [SpineEvent]
public string footstepEvent = "footstep"; public string footstepEvent = "footstep";
public AudioSource footstepAudioSource; public AudioSource footstepAudioSource;
#endregion #endregion
SkeletonAnimation skeletonAnimation; SkeletonAnimation skeletonAnimation;
void Start () { void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>(); skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.state.Event += HandleEvent; skeletonAnimation.AnimationState.Event += HandleEvent;
StartCoroutine(GunGrabRoutine()); StartCoroutine(GunGrabRoutine());
} }
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data.Name == footstepEvent) { if (e.Data.Name == footstepEvent) {
footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f); footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f);
footstepAudioSource.Play(); footstepAudioSource.Play();
} }
} }
IEnumerator GunGrabRoutine () { IEnumerator GunGrabRoutine () {
// Play the walk animation on track 0. // Play the walk animation on track 0.
skeletonAnimation.state.SetAnimation(0, walk, true); skeletonAnimation.AnimationState.SetAnimation(0, walk, true);
// Repeatedly play the gungrab and gunkeep animation on track 1. // Repeatedly play the gungrab and gunkeep animation on track 1.
while (true) { while (true) {
yield return new WaitForSeconds(Random.Range(0.5f, 3f)); yield return new WaitForSeconds(Random.Range(0.5f, 3f));
skeletonAnimation.state.SetAnimation(1, gungrab, false); skeletonAnimation.AnimationState.SetAnimation(1, gungrab, false);
yield return new WaitForSeconds(Random.Range(0.5f, 3f)); yield return new WaitForSeconds(Random.Range(0.5f, 3f));
skeletonAnimation.state.SetAnimation(1, gunkeep, false); skeletonAnimation.AnimationState.SetAnimation(1, gunkeep, false);
} }
} }
} }
} }

View File

@ -1,103 +1,108 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes Software License v2.5 * Spine Runtimes Software License v2.5
* *
* Copyright (c) 2013-2016, Esoteric Software * Copyright (c) 2013-2016, Esoteric Software
* All rights reserved. * All rights reserved.
* *
* You are granted a perpetual, non-exclusive, non-sublicensable, and * You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine * non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal * Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of * use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate, * the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise * adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove, * create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent, * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the * or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source * Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms. * form must include this license and terms.
* *
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * 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 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
using Spine.Unity; using Spine.Unity;
namespace Spine.Unity.Examples { namespace Spine.Unity.Examples {
public class SpineBeginnerTwo : MonoBehaviour { public class SpineBeginnerTwo : MonoBehaviour {
#region Inspector #region Inspector
// [SpineAnimation] attribute allows an Inspector dropdown of Spine animation names coming form SkeletonAnimation. // [SpineAnimation] attribute allows an Inspector dropdown of Spine animation names coming form SkeletonAnimation.
[SpineAnimation] [SpineAnimation]
public string runAnimationName; public string runAnimationName;
[SpineAnimation] [SpineAnimation]
public string idleAnimationName; public string idleAnimationName;
[SpineAnimation] [SpineAnimation]
public string walkAnimationName; public string walkAnimationName;
[SpineAnimation] [SpineAnimation]
public string shootAnimationName; public string shootAnimationName;
#endregion
[Header("Transitions")]
SkeletonAnimation skeletonAnimation; [SpineAnimation]
public string idleTurnAnimationName;
// Spine.AnimationState and Spine.Skeleton are not Unity-serialized objects. You will not see them as fields in the inspector.
public Spine.AnimationState spineAnimationState; [SpineAnimation]
public Spine.Skeleton skeleton; public string runToIdleAnimationName;
#endregion
void Start () {
// Make sure you get these AnimationState and Skeleton references in Start or Later. Getting and using them in Awake is not guaranteed by default execution order. SkeletonAnimation skeletonAnimation;
skeletonAnimation = GetComponent<SkeletonAnimation>();
spineAnimationState = skeletonAnimation.AnimationState; // Spine.AnimationState and Spine.Skeleton are not Unity-serialized objects. You will not see them as fields in the inspector.
skeleton = skeletonAnimation.Skeleton; public Spine.AnimationState spineAnimationState;
public Spine.Skeleton skeleton;
StartCoroutine(DoDemoRoutine());
} void Start () {
// Make sure you get these AnimationState and Skeleton references in Start or Later.
/// <summary>This is an infinitely repeating Unity Coroutine. Read the Unity documentation on Coroutines to learn more.</summary> // Getting and using them in Awake is not guaranteed by default execution order.
IEnumerator DoDemoRoutine () { skeletonAnimation = GetComponent<SkeletonAnimation>();
spineAnimationState = skeletonAnimation.AnimationState;
while (true) { skeleton = skeletonAnimation.Skeleton;
// SetAnimation is the basic way to set an animation.
// SetAnimation sets the animation and starts playing it from the beginning. StartCoroutine(DoDemoRoutine());
// Common Mistake: If you keep calling it in Update, it will keep showing the first pose of the animation, do don't do that. }
spineAnimationState.SetAnimation(0, walkAnimationName, true); /// This is an infinitely repeating Unity Coroutine. Read the Unity documentation on Coroutines to learn more.
yield return new WaitForSeconds(1.5f); IEnumerator DoDemoRoutine () {
while (true) {
// skeletonAnimation.AnimationName = runAnimationName; // this line also works for quick testing/simple uses. // SetAnimation is the basic way to set an animation.
spineAnimationState.SetAnimation(0, runAnimationName, true); // SetAnimation sets the animation and starts playing it from the beginning.
yield return new WaitForSeconds(1.5f); // Common Mistake: If you keep calling it in Update, it will keep showing the first pose of the animation, do don't do that.
spineAnimationState.SetAnimation(0, idleAnimationName, true); spineAnimationState.SetAnimation(0, walkAnimationName, true);
yield return new WaitForSeconds(1f); yield return new WaitForSeconds(1.5f);
skeleton.FlipX = true; // skeleton allows you to flip the skeleton. spineAnimationState.SetAnimation(0, runAnimationName, true);
yield return new WaitForSeconds(0.5f); yield return new WaitForSeconds(1.5f);
skeleton.FlipX = false;
yield return new WaitForSeconds(0.5f); // AddAnimation queues up an animation to play after the previous one ends.
spineAnimationState.SetAnimation(0, runToIdleAnimationName, false);
} spineAnimationState.AddAnimation(0, idleAnimationName, true, 0);
} yield return new WaitForSeconds(1f);
void Track_Complete (TrackEntry trackEntry) { Debug.Log("Complete " + trackEntry.Animation.Name); } skeleton.FlipX = true; // skeleton allows you to flip the skeleton.
spineAnimationState.SetAnimation(0, idleTurnAnimationName, false);
void Track_End (TrackEntry trackEntry) { Debug.Log("End " + trackEntry.Animation.Name); } spineAnimationState.AddAnimation(0, idleAnimationName, true, 0);
yield return new WaitForSeconds(0.5f);
void HandleStart (TrackEntry trackEntry) { Debug.Log("Start " + trackEntry.Animation.Name); } skeleton.FlipX = false;
spineAnimationState.SetAnimation(0, idleTurnAnimationName, false);
spineAnimationState.AddAnimation(0, idleAnimationName, true, 0);
} yield return new WaitForSeconds(0.5f);
} }
}
}
}

View File

@ -1,53 +1,53 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes Software License v2.5 * Spine Runtimes Software License v2.5
* *
* Copyright (c) 2013-2016, Esoteric Software * Copyright (c) 2013-2016, Esoteric Software
* All rights reserved. * All rights reserved.
* *
* You are granted a perpetual, non-exclusive, non-sublicensable, and * You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine * non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal * Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of * use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate, * the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise * adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove, * create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent, * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the * or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source * Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms. * form must include this license and terms.
* *
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * 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 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
using Spine.Unity; using Spine.Unity;
namespace Spine.Unity.Examples { namespace Spine.Unity.Examples {
public class SpineBlinkPlayer : MonoBehaviour { public class SpineBlinkPlayer : MonoBehaviour {
const int BlinkTrack = 1; const int BlinkTrack = 1;
[SpineAnimation] [SpineAnimation]
public string blinkAnimation; public string blinkAnimation;
public float minimumDelay = 0.15f; public float minimumDelay = 0.15f;
public float maximumDelay = 3f; public float maximumDelay = 3f;
IEnumerator Start () { IEnumerator Start () {
var skeletonAnimation = GetComponent<SkeletonAnimation>(); if (skeletonAnimation == null) yield break; var skeletonAnimation = GetComponent<SkeletonAnimation>(); if (skeletonAnimation == null) yield break;
while (true) { while (true) {
skeletonAnimation.AnimationState.SetAnimation(SpineBlinkPlayer.BlinkTrack, blinkAnimation, false); skeletonAnimation.AnimationState.SetAnimation(SpineBlinkPlayer.BlinkTrack, blinkAnimation, false);
yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay)); yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay));
} }
} }
} }
} }

View File

@ -1,63 +1,63 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes Software License v2.5 * Spine Runtimes Software License v2.5
* *
* Copyright (c) 2013-2016, Esoteric Software * Copyright (c) 2013-2016, Esoteric Software
* All rights reserved. * All rights reserved.
* *
* You are granted a perpetual, non-exclusive, non-sublicensable, and * You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine * non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal * Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of * use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate, * the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise * adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove, * create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent, * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the * or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source * Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms. * form must include this license and terms.
* *
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * 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 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
namespace Spine.Unity.Examples { namespace Spine.Unity.Examples {
public class SpineboyBeginnerInput : MonoBehaviour { public class SpineboyBeginnerInput : MonoBehaviour {
#region Inspector #region Inspector
public string horizontalAxis = "Horizontal"; public string horizontalAxis = "Horizontal";
public string attackButton = "Fire1"; public string attackButton = "Fire1";
public string jumpButton = "Jump"; public string jumpButton = "Jump";
public SpineboyBeginnerModel model; public SpineboyBeginnerModel model;
void OnValidate () { void OnValidate () {
if (model == null) if (model == null)
model = GetComponent<SpineboyBeginnerModel>(); model = GetComponent<SpineboyBeginnerModel>();
} }
#endregion #endregion
void Update () { void Update () {
if (model == null) return; if (model == null) return;
float currentHorizontal = Input.GetAxisRaw(horizontalAxis); float currentHorizontal = Input.GetAxisRaw(horizontalAxis);
model.TryMove(currentHorizontal); model.TryMove(currentHorizontal);
if (Input.GetButton(attackButton)) if (Input.GetButton(attackButton))
model.TryShoot(); model.TryShoot();
if (Input.GetButtonDown(jumpButton)) if (Input.GetButtonDown(jumpButton))
model.TryJump(); model.TryJump();
} }
} }
} }

View File

@ -1,115 +1,115 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes Software License v2.5 * Spine Runtimes Software License v2.5
* *
* Copyright (c) 2013-2016, Esoteric Software * Copyright (c) 2013-2016, Esoteric Software
* All rights reserved. * All rights reserved.
* *
* You are granted a perpetual, non-exclusive, non-sublicensable, and * You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine * non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal * Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of * use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate, * the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise * adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove, * create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent, * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the * or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source * Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms. * form must include this license and terms.
* *
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * 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 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
namespace Spine.Unity.Examples { namespace Spine.Unity.Examples {
[SelectionBase] [SelectionBase]
public class SpineboyBeginnerModel : MonoBehaviour { public class SpineboyBeginnerModel : MonoBehaviour {
#region Inspector #region Inspector
[Header("Current State")] [Header("Current State")]
public SpineBeginnerBodyState state; public SpineBeginnerBodyState state;
public bool facingLeft; public bool facingLeft;
[Range(-1f, 1f)] [Range(-1f, 1f)]
public float currentSpeed; public float currentSpeed;
[Header("Balance")] [Header("Balance")]
public float shootInterval = 0.12f; public float shootInterval = 0.12f;
#endregion #endregion
float lastShootTime; float lastShootTime;
public event System.Action ShootEvent; // Lets other scripts know when Spineboy is shooting. Check C# Documentation to learn more about events and delegates. public event System.Action ShootEvent; // Lets other scripts know when Spineboy is shooting. Check C# Documentation to learn more about events and delegates.
#region API #region API
public void TryJump () { public void TryJump () {
StartCoroutine(JumpRoutine()); StartCoroutine(JumpRoutine());
} }
public void TryShoot () { public void TryShoot () {
float currentTime = Time.time; float currentTime = Time.time;
if (currentTime - lastShootTime > shootInterval) { if (currentTime - lastShootTime > shootInterval) {
lastShootTime = currentTime; lastShootTime = currentTime;
if (ShootEvent != null) ShootEvent(); // Fire the "ShootEvent" event. if (ShootEvent != null) ShootEvent(); // Fire the "ShootEvent" event.
} }
} }
public void TryMove (float speed) { public void TryMove (float speed) {
currentSpeed = speed; // show the "speed" in the Inspector. currentSpeed = speed; // show the "speed" in the Inspector.
if (speed != 0) { if (speed != 0) {
bool speedIsNegative = (speed < 0f); bool speedIsNegative = (speed < 0f);
facingLeft = speedIsNegative; // Change facing direction whenever speed is not 0. facingLeft = speedIsNegative; // Change facing direction whenever speed is not 0.
} }
if (state != SpineBeginnerBodyState.Jumping) { if (state != SpineBeginnerBodyState.Jumping) {
state = (speed == 0) ? SpineBeginnerBodyState.Idle : SpineBeginnerBodyState.Running; state = (speed == 0) ? SpineBeginnerBodyState.Idle : SpineBeginnerBodyState.Running;
} }
} }
#endregion #endregion
IEnumerator JumpRoutine () { IEnumerator JumpRoutine () {
if (state == SpineBeginnerBodyState.Jumping) yield break; // Don't jump when already jumping. if (state == SpineBeginnerBodyState.Jumping) yield break; // Don't jump when already jumping.
state = SpineBeginnerBodyState.Jumping; state = SpineBeginnerBodyState.Jumping;
// Fake jumping. // Fake jumping.
{ {
var pos = transform.localPosition; var pos = transform.localPosition;
const float jumpTime = 1.2f; const float jumpTime = 1.2f;
const float half = jumpTime * 0.5f; const float half = jumpTime * 0.5f;
const float jumpPower = 20f; const float jumpPower = 20f;
for (float t = 0; t < half; t += Time.deltaTime) { for (float t = 0; t < half; t += Time.deltaTime) {
float d = jumpPower * (half - t); float d = jumpPower * (half - t);
transform.Translate((d * Time.deltaTime) * Vector3.up); transform.Translate((d * Time.deltaTime) * Vector3.up);
yield return null; yield return null;
} }
for (float t = 0; t < half; t += Time.deltaTime) { for (float t = 0; t < half; t += Time.deltaTime) {
float d = jumpPower * t; float d = jumpPower * t;
transform.Translate((d * Time.deltaTime) * Vector3.down); transform.Translate((d * Time.deltaTime) * Vector3.down);
yield return null; yield return null;
} }
transform.localPosition = pos; transform.localPosition = pos;
} }
state = SpineBeginnerBodyState.Idle; state = SpineBeginnerBodyState.Idle;
} }
} }
public enum SpineBeginnerBodyState { public enum SpineBeginnerBodyState {
Idle, Idle,
Running, Running,
Jumping Jumping
} }
} }

View File

@ -1,149 +1,149 @@
/****************************************************************************** /******************************************************************************
* Spine Runtimes Software License v2.5 * Spine Runtimes Software License v2.5
* *
* Copyright (c) 2013-2016, Esoteric Software * Copyright (c) 2013-2016, Esoteric Software
* All rights reserved. * All rights reserved.
* *
* You are granted a perpetual, non-exclusive, non-sublicensable, and * You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine * non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal * Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of * use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate, * the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise * adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove, * create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent, * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the * or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source * Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms. * form must include this license and terms.
* *
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * 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 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
using Spine.Unity; using Spine.Unity;
namespace Spine.Unity.Examples { namespace Spine.Unity.Examples {
public class SpineboyBeginnerView : MonoBehaviour { public class SpineboyBeginnerView : MonoBehaviour {
#region Inspector #region Inspector
[Header("Components")] [Header("Components")]
public SpineboyBeginnerModel model; public SpineboyBeginnerModel model;
public SkeletonAnimation skeletonAnimation; public SkeletonAnimation skeletonAnimation;
[SpineAnimation] public string run, idle, shoot, jump; [SpineAnimation] public string run, idle, shoot, jump;
[SpineEvent] public string footstepEventName; [SpineEvent] public string footstepEventName;
[Header("Audio")] [Header("Audio")]
public float footstepPitchOffset = 0.2f; public float footstepPitchOffset = 0.2f;
public float gunsoundPitchOffset = 0.13f; public float gunsoundPitchOffset = 0.13f;
public AudioSource footstepSource, gunSource, jumpSource; public AudioSource footstepSource, gunSource, jumpSource;
[Header("Effects")] [Header("Effects")]
public ParticleSystem gunParticles; public ParticleSystem gunParticles;
#endregion #endregion
SpineBeginnerBodyState previousViewState; SpineBeginnerBodyState previousViewState;
void Start () { void Start () {
if (skeletonAnimation == null) return; if (skeletonAnimation == null) return;
model.ShootEvent += PlayShoot; model.ShootEvent += PlayShoot;
skeletonAnimation.AnimationState.Event += HandleEvent; skeletonAnimation.AnimationState.Event += HandleEvent;
} }
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data.Name == footstepEventName) if (e.Data.Name == footstepEventName)
PlayFootstepSound(); PlayFootstepSound();
} }
void Update () { void Update () {
if (skeletonAnimation == null) return; if (skeletonAnimation == null) return;
if (model == null) return; if (model == null) return;
if (skeletonAnimation.skeleton.FlipX != model.facingLeft) { // Detect changes in model.facingLeft if (skeletonAnimation.skeleton.FlipX != model.facingLeft) { // Detect changes in model.facingLeft
Turn(model.facingLeft); Turn(model.facingLeft);
} }
// Detect changes in model.state // Detect changes in model.state
var currentModelState = model.state; var currentModelState = model.state;
if (previousViewState != currentModelState) { if (previousViewState != currentModelState) {
PlayNewStableAnimation(); PlayNewStableAnimation();
} }
previousViewState = currentModelState; previousViewState = currentModelState;
} }
void PlayNewStableAnimation () { void PlayNewStableAnimation () {
var newModelState = model.state; var newModelState = model.state;
string nextAnimation; string nextAnimation;
// Add conditionals to not interrupt transient animations. // Add conditionals to not interrupt transient animations.
if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) { if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) {
PlayFootstepSound(); PlayFootstepSound();
} }
if (newModelState == SpineBeginnerBodyState.Jumping) { if (newModelState == SpineBeginnerBodyState.Jumping) {
jumpSource.Play(); jumpSource.Play();
nextAnimation = jump; nextAnimation = jump;
} else { } else {
if (newModelState == SpineBeginnerBodyState.Running) { if (newModelState == SpineBeginnerBodyState.Running) {
nextAnimation = run; nextAnimation = run;
} else { } else {
nextAnimation = idle; nextAnimation = idle;
} }
} }
skeletonAnimation.AnimationState.SetAnimation(0, nextAnimation, true); skeletonAnimation.AnimationState.SetAnimation(0, nextAnimation, true);
} }
void PlayFootstepSound () { void PlayFootstepSound () {
footstepSource.Play(); footstepSource.Play();
footstepSource.pitch = GetRandomPitch(footstepPitchOffset); footstepSource.pitch = GetRandomPitch(footstepPitchOffset);
} }
[ContextMenu("Check Tracks")] [ContextMenu("Check Tracks")]
void CheckTracks () { void CheckTracks () {
var state = skeletonAnimation.AnimationState; var state = skeletonAnimation.AnimationState;
Debug.Log(state.GetCurrent(0)); Debug.Log(state.GetCurrent(0));
Debug.Log(state.GetCurrent(1)); Debug.Log(state.GetCurrent(1));
} }
#region Transient Actions #region Transient Actions
public void PlayShoot () { public void PlayShoot () {
// Play the shoot animation on track 1. // Play the shoot animation on track 1.
var track = skeletonAnimation.AnimationState.SetAnimation(1, shoot, false); var track = skeletonAnimation.AnimationState.SetAnimation(1, shoot, false);
track.AttachmentThreshold = 1f; track.AttachmentThreshold = 1f;
track.MixDuration = 0f; track.MixDuration = 0f;
var empty = skeletonAnimation.state.AddEmptyAnimation(1, 0.5f, 0.1f); var empty = skeletonAnimation.state.AddEmptyAnimation(1, 0.5f, 0.1f);
empty.AttachmentThreshold = 1f; empty.AttachmentThreshold = 1f;
gunSource.pitch = GetRandomPitch(gunsoundPitchOffset); gunSource.pitch = GetRandomPitch(gunsoundPitchOffset);
gunSource.Play(); gunSource.Play();
//gunParticles.randomSeed = (uint)Random.Range(0, 100); //gunParticles.randomSeed = (uint)Random.Range(0, 100);
gunParticles.Play(); gunParticles.Play();
} }
public void Turn (bool facingLeft) { public void Turn (bool facingLeft) {
skeletonAnimation.Skeleton.FlipX = facingLeft; skeletonAnimation.Skeleton.FlipX = facingLeft;
// Maybe play a transient turning animation too, then call ChangeStableAnimation. // Maybe play a transient turning animation too, then call ChangeStableAnimation.
} }
#endregion #endregion
#region Utility #region Utility
public float GetRandomPitch (float maxPitchOffset) { public float GetRandomPitch (float maxPitchOffset) {
return 1f + Random.Range(-maxPitchOffset, maxPitchOffset); return 1f + Random.Range(-maxPitchOffset, maxPitchOffset);
} }
#endregion #endregion
} }
} }

View File

@ -0,0 +1,48 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HurtFlashEffect : MonoBehaviour {
const int DefaultFlashCount = 3;
public int flashCount = DefaultFlashCount;
public Color flashColor = Color.white;
[Range(1f/120f, 1f/15f)]
public float interval = 1f/60f;
public string fillPhaseProperty = "_FillPhase";
public string fillColorProperty = "_FillColor";
MaterialPropertyBlock mpb;
MeshRenderer meshRenderer;
public void Flash () {
if (mpb == null) mpb = new MaterialPropertyBlock();
if (meshRenderer == null) meshRenderer = GetComponent<MeshRenderer>();
meshRenderer.GetPropertyBlock(mpb);
StartCoroutine(FlashRoutine());
}
IEnumerator FlashRoutine () {
if (flashCount < 0) flashCount = DefaultFlashCount;
int fillPhase = Shader.PropertyToID(fillPhaseProperty);
int fillColor = Shader.PropertyToID(fillColorProperty);
var wait = new WaitForSeconds(interval);
for (int i = 0; i < flashCount; i++) {
mpb.SetColor(fillColor, flashColor);
mpb.SetFloat(fillPhase, 1f);
meshRenderer.SetPropertyBlock(mpb);
yield return wait;
mpb.SetFloat(fillPhase, 0f);
meshRenderer.SetPropertyBlock(mpb);
yield return wait;
}
yield return null;
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 395f769061839bf488f157c37d23835d
timeCreated: 1497416645
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,292 +1,292 @@
dragon.png dragon.png
size: 1017,1022 size: 1024,1024
format: RGBA8888 format: RGBA8888
filter: Linear,Linear filter: Linear,Linear
repeat: none repeat: none
L_rear_thigh chin
rotate: false
xy: 895, 20
size: 91, 148
orig: 91, 149
offset: 0, 0
index: -1
L_wing01
rotate: false
xy: 814, 672
size: 191, 256
orig: 191, 256
offset: 0, 0
index: -1
L_wing02
rotate: false
xy: 714, 189
size: 179, 269
orig: 179, 269
offset: 0, 0
index: -1
L_wing03
rotate: false
xy: 785, 463
size: 186, 207
orig: 186, 207
offset: 0, 0
index: -1
L_wing05
rotate: true rotate: true
xy: 2, 9 xy: 856, 140
size: 218, 213 size: 214, 146
orig: 218, 213 orig: 214, 146
offset: 0, 0 offset: 0, 0
index: -1 index: -1
L_wing06 front-toe-a
rotate: false
xy: 2, 229
size: 192, 331
orig: 192, 331
offset: 0, 0
index: -1
R_wing01
rotate: true rotate: true
xy: 502, 709 xy: 584, 74
size: 219, 310
orig: 219, 310
offset: 0, 0
index: -1
R_wing02
rotate: true
xy: 204, 463
size: 203, 305
orig: 203, 305
offset: 0, 0
index: -1
R_wing03
rotate: false
xy: 511, 460
size: 272, 247
orig: 272, 247
offset: 0, 0
index: -1
R_wing05
rotate: false
xy: 196, 232
size: 251, 229
orig: 251, 229
offset: 0, 0
index: -1
R_wing06
rotate: false
xy: 2, 562
size: 200, 366
orig: 200, 366
offset: 0, 0
index: -1
R_wing07
rotate: true
xy: 449, 258
size: 200, 263
orig: 200, 263
offset: 0, 0
index: -1
R_wing08
rotate: false
xy: 467, 2
size: 234, 254
orig: 234, 254
offset: 0, 0
index: -1
R_wing09
rotate: false
xy: 217, 26
size: 248, 204
orig: 248, 204
offset: 0, 0
index: -1
back
rotate: false
xy: 703, 2
size: 190, 185
orig: 190, 185
offset: 0, 0
index: -1
chest
rotate: true
xy: 895, 170
size: 136, 122
orig: 136, 122
offset: 0, 0
index: -1
front_toeA
rotate: false
xy: 976, 972
size: 29, 50 size: 29, 50
orig: 29, 50 orig: 29, 50
offset: 0, 0 offset: 0, 0
index: -1 index: -1
head head
rotate: false rotate: false
xy: 204, 668 xy: 204, 758
size: 296, 260 size: 296, 260
orig: 296, 260 orig: 296, 260
offset: 0, 0 offset: 0, 0
index: -1 index: -1
logo left-front-leg
rotate: false rotate: false
xy: 2, 930 xy: 636, 357
size: 897, 92 size: 84, 57
orig: 897, 92 orig: 84, 57
offset: 0, 0
index: -1
left-rear-thigh
rotate: true
xy: 207, 14
size: 91, 149
orig: 91, 149
offset: 0, 0
index: -1
left-wing01
rotate: false
xy: 443, 105
size: 191, 256
orig: 191, 256
offset: 0, 0
index: -1
left-wing02
rotate: true
xy: 502, 618
size: 179, 269
orig: 179, 269
offset: 0, 0
index: -1
left-wing04
rotate: false
xy: 636, 4
size: 188, 135
orig: 188, 135
offset: 0, 0
index: -1
left-wing05
rotate: false
xy: 636, 141
size: 218, 213
orig: 218, 213
offset: 0, 0
index: -1
left-wing06
rotate: false
xy: 2, 319
size: 192, 331
orig: 192, 331
offset: 0, 0
index: -1
left-wing07
rotate: true
xy: 750, 356
size: 159, 255
orig: 159, 255
offset: 0, 0
index: -1
right-rear-thigh
rotate: true
xy: 433, 12
size: 91, 149
orig: 91, 149
offset: 0, 0
index: -1
right-wing01
rotate: true
xy: 502, 799
size: 219, 310
orig: 219, 310
offset: 0, 0
index: -1
right-wing02
rotate: false
xy: 2, 12
size: 203, 305
orig: 203, 305
offset: 0, 0
index: -1
right-wing03
rotate: false
xy: 196, 363
size: 272, 247
orig: 272, 247
offset: 0, 0
index: -1
right-wing04
rotate: false
xy: 204, 612
size: 279, 144
orig: 279, 144
offset: 0, 0
index: -1
right-wing05
rotate: true
xy: 773, 517
size: 251, 229
orig: 251, 229
offset: 0, 0
index: -1
right-wing06
rotate: false
xy: 2, 652
size: 200, 366
orig: 200, 366
offset: 0, 0
index: -1
right-wing07
rotate: true
xy: 485, 416
size: 200, 263
orig: 200, 263
offset: 0, 0
index: -1
right-wing08
rotate: false
xy: 207, 107
size: 234, 254
orig: 234, 254
offset: 0, 0
index: -1
right-wing09
rotate: true
xy: 814, 770
size: 248, 204
orig: 248, 204
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tail01 tail01
rotate: false rotate: true
xy: 895, 308 xy: 826, 18
size: 120, 153 size: 120, 153
orig: 120, 153 orig: 120, 153
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tail03 tail03
rotate: false rotate: false
xy: 901, 930 xy: 358, 13
size: 73, 92 size: 73, 92
orig: 73, 92 orig: 73, 92
offset: 0, 0 offset: 0, 0
index: -1 index: -1
dragon2.png dragon2.png
size: 1020,510 size: 1024,1024
format: RGBA8888 format: RGBA8888
filter: Linear,Linear filter: Linear,Linear
repeat: none repeat: none
L_front_leg back
rotate: true
xy: 391, 141
size: 84, 57
orig: 84, 57
offset: 0, 0
index: -1
L_front_thigh
rotate: false rotate: false
xy: 446, 269 xy: 190, 800
size: 84, 72 size: 190, 185
orig: 84, 72 orig: 190, 185
offset: 0, 0 offset: 0, 0
index: -1 index: -1
L_rear_leg chest
rotate: true
xy: 888, 342
size: 168, 132
orig: 206, 177
offset: 19, 20
index: -1
L_wing04
rotate: false rotate: false
xy: 256, 227 xy: 382, 863
size: 188, 135 size: 136, 122
orig: 188, 135 orig: 136, 122
offset: 0, 0 offset: 0, 0
index: -1 index: -1
L_wing07 front-toe-b
rotate: false rotate: false
xy: 2, 109 xy: 112, 155
size: 159, 255
orig: 159, 255
offset: 0, 0
index: -1
L_wing08
rotate: true
xy: 705, 346
size: 164, 181
orig: 164, 181
offset: 0, 0
index: -1
L_wing09
rotate: false
xy: 499, 343
size: 204, 167
orig: 204, 167
offset: 0, 0
index: -1
R_front_leg
rotate: false
xy: 273, 34
size: 101, 89
orig: 101, 89
offset: 0, 0
index: -1
R_front_thigh
rotate: false
xy: 163, 106
size: 108, 108
orig: 108, 108
offset: 0, 0
index: -1
R_rear_leg
rotate: false
xy: 273, 125
size: 116, 100
orig: 116, 100
offset: 0, 0
index: -1
R_rear_thigh
rotate: false
xy: 163, 216
size: 91, 148
orig: 91, 149
offset: 0, 0
index: -1
R_wing04
rotate: false
xy: 2, 366
size: 279, 144
orig: 279, 144
offset: 0, 0
index: -1
chin
rotate: false
xy: 283, 364
size: 214, 146
orig: 214, 146
offset: 0, 0
index: -1
front_toeB
rotate: false
xy: 590, 284
size: 56, 57 size: 56, 57
orig: 56, 57 orig: 56, 57
offset: 0, 0 offset: 0, 0
index: -1 index: -1
rear-toe left-front-thigh
rotate: false
xy: 278, 635
size: 84, 72
orig: 84, 72
offset: 0, 0
index: -1
left-rear-leg
rotate: true rotate: true
xy: 2, 603
size: 206, 177
orig: 206, 177
offset: 0, 0
index: -1
left-wing03
rotate: false
xy: 2, 811
size: 186, 207
orig: 186, 207
offset: 0, 0
index: -1
left-wing08
rotate: false
xy: 2, 214
size: 164, 181
orig: 164, 181
offset: 0, 0
index: -1
left-wing09
rotate: true
xy: 2, 397
size: 204, 167
orig: 204, 167
offset: 0, 0
index: -1
right-front-leg
rotate: false
xy: 278, 709
size: 101, 89
orig: 101, 89
offset: 0, 0
index: -1
right-front-thigh
rotate: false
xy: 2, 104
size: 108, 108
orig: 108, 108
offset: 0, 0
index: -1
right-rear-leg
rotate: false
xy: 2, 2 xy: 2, 2
size: 105, 77 size: 116, 100
orig: 116, 100
offset: 0, 0
index: -1
right-rear-toe
rotate: false
xy: 382, 784
size: 109, 77
orig: 109, 77 orig: 109, 77
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tail02 tail02
rotate: true rotate: false
xy: 151, 9 xy: 181, 678
size: 95, 120 size: 95, 120
orig: 95, 120 orig: 95, 120
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tail04 tail04
rotate: false rotate: false
xy: 532, 270 xy: 381, 711
size: 56, 71 size: 56, 71
orig: 56, 71 orig: 56, 71
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tail05 tail05
rotate: false rotate: false
xy: 648, 282 xy: 439, 723
size: 52, 59 size: 52, 59
orig: 52, 59 orig: 52, 59
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tail06 tail06
rotate: true rotate: false
xy: 81, 12 xy: 181, 608
size: 95, 68 size: 95, 68
orig: 95, 68 orig: 95, 68
offset: 0, 0 offset: 0, 0
index: -1 index: -1
thiagobrayner
rotate: false
xy: 190, 987
size: 350, 31
orig: 350, 31
offset: 0, 0
index: -1

View File

@ -1,44 +1,174 @@
{ {
"skeleton": { "hash": "wKRjA+djIs9K05d/19sZhwmP3Ow", "spine": "3.6.05-beta", "width": 897, "height": 716.36, "images": "./images/" }, "skeleton": { "hash": "vDJjplNvnyjhUZ09rp3xqyGoiKo", "spine": "3.6.30-beta", "width": 660.39, "height": 604.09, "images": "./images/" },
"bones": [ "bones": [
{ "name": "root", "y": -176.12 }, { "name": "root", "y": -176.12 },
{ "name": "COG", "parent": "root", "y": 176.12 }, { "name": "center", "parent": "root", "y": 176.12, "color": "ffe300ff" },
{ "name": "chest", "parent": "COG", "length": 31.24, "rotation": 161.7, "x": 52.53, "y": 15.35 }, { "name": "back", "parent": "center", "length": 115.38, "rotation": 151.83, "x": 16.04, "y": 27.94, "color": "ffe400ff" },
{ "name": "L_front_thigh", "parent": "chest", "length": 67.42, "rotation": 138.94, "x": -45.59, "y": 7.93 }, { "name": "chest", "parent": "center", "length": 31.24, "rotation": 161.7, "x": 52.53, "y": 15.35, "color": "ffe400ff" },
{ "name": "L_front_leg", "parent": "L_front_thigh", "length": 51.58, "rotation": 43.36, "x": 67.42, "y": 0.03 }, { "name": "neck", "parent": "center", "length": 41.37, "rotation": 39.06, "x": 64.76, "y": 11.98, "color": "ffe400ff" },
{ "name": "L_front_toe1", "parent": "L_front_leg", "length": 51.45, "rotation": -98.01, "x": 45.54, "y": 2.43 }, { "name": "chin", "parent": "neck", "length": 153.16, "rotation": -69.07, "x": 64.63, "y": -6.99, "color": "ffe400ff" },
{ "name": "L_front_toe2", "parent": "L_front_leg", "length": 61.98, "rotation": -55.26, "x": 51.58, "y": -0.13 }, { "name": "head", "parent": "neck", "length": 188.84, "rotation": 8.07, "x": 69.96, "y": 2.5, "color": "ffe400ff" },
{ "name": "L_front_toe3", "parent": "L_front_leg", "length": 45.65, "rotation": -11.14, "x": 54.19, "y": 0.6, "scaleX": 1.135 }, { "name": "left-front-thigh", "parent": "chest", "length": 67.42, "rotation": 138.94, "x": -45.59, "y": 7.93, "color": "ff0000ff" },
{ "name": "L_front_toe4", "parent": "L_front_leg", "length": 53.47, "rotation": 19.43, "x": 50.61, "y": 7.09, "scaleX": 1.135 }, {
{ "name": "back", "parent": "COG", "length": 115.38, "rotation": 151.83, "x": 16.04, "y": 27.94 }, "name": "left-front-leg",
{ "name": "R_rear_thigh", "parent": "back", "length": 123.47, "rotation": 104.88, "x": 65.31, "y": 59.89 }, "parent": "left-front-thigh",
{ "name": "L_rear_thigh", "parent": "R_rear_thigh", "length": 88.06, "rotation": 28.35, "x": -8.59, "y": 30.19 }, "length": 51.58,
{ "name": "L_rear_leg", "parent": "L_rear_thigh", "length": 103.74, "rotation": -122.41, "x": 96.04, "y": -0.97 }, "rotation": 43.36,
{ "name": "L_wing", "parent": "chest", "length": 301.12, "rotation": -75.51, "x": -7.25, "y": -24.66 }, "x": 67.42,
{ "name": "R_front_thigh", "parent": "chest", "length": 81.64, "rotation": 67.97, "x": -10.89, "y": 28.25 }, "y": 0.03,
{ "name": "R_front_leg", "parent": "R_front_thigh", "length": 66.53, "rotation": 92.7, "x": 83.05, "y": -0.31 }, "color": "ff0000ff"
{ "name": "R_front_toe1", "parent": "R_front_leg", "length": 46.66, "rotation": 8.59, "x": 70.03, "y": 5.31 }, },
{ "name": "R_front_toe2", "parent": "R_front_leg", "length": 53.67, "rotation": -35.02, "x": 66.53, "y": 0.34 }, {
{ "name": "R_front_toe3", "parent": "R_front_leg", "length": 58.39, "rotation": -74.67, "x": 62.1, "y": -0.79 }, "name": "left-front-toe1",
{ "name": "R_rear_leg", "parent": "R_rear_thigh", "length": 91.06, "rotation": -129.04, "x": 123.47, "y": -0.27 }, "parent": "left-front-leg",
{ "name": "R_rear_toe1", "parent": "R_rear_leg", "length": 95, "rotation": 141.98, "x": 90.07, "y": 2.12 }, "length": 51.45,
{ "name": "R_rear_toe2", "parent": "R_rear_leg", "length": 99.29, "rotation": 125.32, "x": 89.6, "y": 1.52 }, "rotation": -98.01,
{ "name": "R_rear_toe3", "parent": "R_rear_leg", "length": 103.46, "rotation": 112.27, "x": 91.06, "y": -0.35 }, "x": 45.54,
{ "name": "neck", "parent": "COG", "length": 41.37, "rotation": 39.06, "x": 64.76, "y": 11.98 }, "y": 2.43,
{ "name": "head", "parent": "neck", "length": 188.84, "rotation": 8.07, "x": 69.96, "y": 2.5 }, "color": "ff0000ff"
{ "name": "R_wing", "parent": "head", "length": 359.5, "rotation": 83.21, "x": -74.68, "y": 20.91 }, },
{ "name": "chin", "parent": "neck", "length": 153.16, "rotation": -69.07, "x": 64.63, "y": -6.99 }, {
{ "name": "tail1", "parent": "back", "length": 65.65, "rotation": 44.32, "x": 115.38, "y": -0.2 }, "name": "left-front-toe2",
{ "name": "tail2", "parent": "tail1", "length": 54.5, "rotation": 12, "x": 65.65, "y": 0.23 }, "parent": "left-front-leg",
{ "name": "tail3", "parent": "tail2", "length": 41.78, "rotation": 1.8, "x": 54.5, "y": 0.37 }, "length": 61.98,
{ "name": "tail4", "parent": "tail3", "length": 34.19, "rotation": -1.8, "x": 41.78, "y": 0.16 }, "rotation": -55.26,
{ "name": "tail5", "parent": "tail4", "length": 32.33, "rotation": -3.15, "x": 34.19, "y": -0.19 }, "x": 51.58,
{ "name": "tail6", "parent": "tail5", "length": 80.08, "rotation": -29.55, "x": 32.33, "y": -0.23 } "y": -0.13,
"color": "ff0000ff"
},
{
"name": "left-front-toe3",
"parent": "left-front-leg",
"length": 45.65,
"rotation": -11.14,
"x": 54.19,
"y": 0.6,
"scaleX": 1.135,
"color": "ff0000ff"
},
{
"name": "left-front-toe4",
"parent": "left-front-leg",
"length": 53.47,
"rotation": 19.43,
"x": 50.61,
"y": 7.09,
"scaleX": 1.135,
"color": "ff0000ff"
},
{ "name": "right-rear-thigh", "parent": "back", "length": 123.47, "rotation": 104.88, "x": 65.31, "y": 59.89, "color": "29ff00ff" },
{
"name": "left-rear-thigh",
"parent": "right-rear-thigh",
"length": 88.06,
"rotation": 28.35,
"x": -8.59,
"y": 30.19,
"color": "ff0000ff"
},
{
"name": "left-rear-leg",
"parent": "left-rear-thigh",
"length": 103.74,
"rotation": -122.41,
"x": 96.04,
"y": -0.97,
"color": "ff0000ff"
},
{ "name": "left-wing", "parent": "chest", "length": 301.12, "rotation": -75.51, "x": -7.25, "y": -24.66, "color": "ff0000ff" },
{
"name": "right-front-thigh",
"parent": "chest",
"length": 81.64,
"rotation": 67.97,
"x": -10.89,
"y": 28.25,
"color": "29ff00ff"
},
{
"name": "right-front-leg",
"parent": "right-front-thigh",
"length": 66.53,
"rotation": 92.7,
"x": 83.05,
"y": -0.31,
"color": "29ff00ff"
},
{
"name": "right-front-toe1",
"parent": "right-front-leg",
"length": 46.66,
"rotation": 8.59,
"x": 70.03,
"y": 5.31,
"color": "29ff00ff"
},
{
"name": "right-front-toe2",
"parent": "right-front-leg",
"length": 53.67,
"rotation": -35.02,
"x": 66.53,
"y": 0.34,
"color": "29ff00ff"
},
{
"name": "right-front-toe3",
"parent": "right-front-leg",
"length": 58.39,
"rotation": -74.67,
"x": 62.1,
"y": -0.79,
"color": "29ff00ff"
},
{
"name": "right-rear-leg",
"parent": "right-rear-thigh",
"length": 91.06,
"rotation": -129.04,
"x": 123.47,
"y": -0.27,
"color": "29ff00ff"
},
{
"name": "right-rear-toe1",
"parent": "right-rear-leg",
"length": 95,
"rotation": 141.98,
"x": 90.07,
"y": 2.12,
"color": "29ff00ff"
},
{
"name": "right-rear-toe2",
"parent": "right-rear-leg",
"length": 99.29,
"rotation": 125.32,
"x": 89.6,
"y": 1.52,
"color": "29ff00ff"
},
{
"name": "right-rear-toe3",
"parent": "right-rear-leg",
"length": 103.46,
"rotation": 112.27,
"x": 91.06,
"y": -0.35,
"color": "29ff00ff"
},
{ "name": "right-wing", "parent": "head", "length": 359.5, "rotation": 83.21, "x": -74.68, "y": 20.91, "color": "29ff00ff" },
{ "name": "tail1", "parent": "back", "length": 65.65, "rotation": 44.32, "x": 115.38, "y": -0.2, "color": "ffe400ff" },
{ "name": "tail2", "parent": "tail1", "length": 54.5, "rotation": 12, "x": 65.65, "y": 0.23, "color": "ffe400ff" },
{ "name": "tail3", "parent": "tail2", "length": 41.78, "rotation": 1.8, "x": 54.5, "y": 0.37, "color": "ffe400ff" },
{ "name": "tail4", "parent": "tail3", "length": 34.19, "rotation": -1.8, "x": 41.78, "y": 0.16, "color": "ffe400ff" },
{ "name": "tail5", "parent": "tail4", "length": 32.33, "rotation": -3.15, "x": 34.19, "y": -0.19, "color": "ffe400ff" },
{ "name": "tail6", "parent": "tail5", "length": 80.08, "rotation": -29.55, "x": 32.33, "y": -0.23, "color": "ffe400ff" }
], ],
"slots": [ "slots": [
{ "name": "L_rear_leg", "bone": "L_rear_leg", "attachment": "L_rear_leg" }, { "name": "left-rear-leg", "bone": "left-rear-leg", "attachment": "left-rear-leg" },
{ "name": "L_rear_thigh", "bone": "L_rear_thigh", "attachment": "L_rear_thigh" }, { "name": "left-rear-thigh", "bone": "left-rear-thigh", "attachment": "left-rear-thigh" },
{ "name": "L_wing", "bone": "L_wing", "attachment": "L_wing01" }, { "name": "left-wing", "bone": "left-wing", "attachment": "left-wing01" },
{ "name": "tail6", "bone": "tail6", "attachment": "tail06" }, { "name": "tail6", "bone": "tail6", "attachment": "tail06" },
{ "name": "tail5", "bone": "tail5", "attachment": "tail05" }, { "name": "tail5", "bone": "tail5", "attachment": "tail05" },
{ "name": "tail4", "bone": "tail4", "attachment": "tail04" }, { "name": "tail4", "bone": "tail4", "attachment": "tail04" },
@ -46,106 +176,30 @@
{ "name": "tail2", "bone": "tail2", "attachment": "tail02" }, { "name": "tail2", "bone": "tail2", "attachment": "tail02" },
{ "name": "tail1", "bone": "tail1", "attachment": "tail01" }, { "name": "tail1", "bone": "tail1", "attachment": "tail01" },
{ "name": "back", "bone": "back", "attachment": "back" }, { "name": "back", "bone": "back", "attachment": "back" },
{ "name": "L_front_thigh", "bone": "L_front_thigh", "attachment": "L_front_thigh" }, { "name": "left-front-thigh", "bone": "left-front-thigh", "attachment": "left-front-thigh" },
{ "name": "L_front_leg", "bone": "L_front_leg", "attachment": "L_front_leg" }, { "name": "left-front-leg", "bone": "left-front-leg", "attachment": "left-front-leg" },
{ "name": "L_front_toe1", "bone": "L_front_toe1", "attachment": "front_toeA" }, { "name": "left-front-toe1", "bone": "left-front-toe1", "attachment": "front-toe-a" },
{ "name": "L_front_toe4", "bone": "L_front_toe4", "attachment": "front_toeB" }, { "name": "left-front-toe4", "bone": "left-front-toe4", "attachment": "front-toe-b" },
{ "name": "L_front_toe3", "bone": "L_front_toe3", "attachment": "front_toeB" }, { "name": "left-front-toe3", "bone": "left-front-toe3", "attachment": "front-toe-b" },
{ "name": "L_front_toe2", "bone": "L_front_toe2", "attachment": "front_toeB" }, { "name": "left-front-toe2", "bone": "left-front-toe2", "attachment": "front-toe-b" },
{ "name": "chest", "bone": "chest", "attachment": "chest" }, { "name": "chest", "bone": "chest", "attachment": "chest" },
{ "name": "R_rear_toe1", "bone": "R_rear_toe1", "attachment": "rear-toe" }, { "name": "right-rear-toe1", "bone": "right-rear-toe1", "attachment": "right-rear-toe" },
{ "name": "R_rear_toe2", "bone": "R_rear_toe2", "attachment": "rear-toe" }, { "name": "right-rear-toe2", "bone": "right-rear-toe2", "attachment": "right-rear-toe" },
{ "name": "R_rear_toe3", "bone": "R_rear_toe3", "attachment": "rear-toe" }, { "name": "right-rear-toe3", "bone": "right-rear-toe3", "attachment": "right-rear-toe" },
{ "name": "R_rear_leg", "bone": "R_rear_leg", "attachment": "R_rear_leg" }, { "name": "right-rear-leg", "bone": "right-rear-leg", "attachment": "right-rear-leg" },
{ "name": "R_rear_thigh", "bone": "R_rear_thigh", "attachment": "R_rear_thigh" }, { "name": "right-rear-thigh", "bone": "right-rear-thigh", "attachment": "right-rear-thigh" },
{ "name": "R_front_toe1", "bone": "R_front_toe1", "attachment": "front_toeB" }, { "name": "right-front-toe1", "bone": "right-front-toe1", "attachment": "front-toe-b" },
{ "name": "R_front_thigh", "bone": "R_front_thigh", "attachment": "R_front_thigh" }, { "name": "right-front-thigh", "bone": "right-front-thigh", "attachment": "right-front-thigh" },
{ "name": "R_front_leg", "bone": "R_front_leg", "attachment": "R_front_leg" }, { "name": "right-front-leg", "bone": "right-front-leg", "attachment": "right-front-leg" },
{ "name": "R_front_toe2", "bone": "R_front_toe2", "attachment": "front_toeB" }, { "name": "right-front-toe2", "bone": "right-front-toe2", "attachment": "front-toe-b" },
{ "name": "R_front_toe3", "bone": "R_front_toe3", "attachment": "front_toeB" }, { "name": "right-front-toe3", "bone": "right-front-toe3", "attachment": "front-toe-b" },
{ "name": "chin", "bone": "chin", "attachment": "chin" }, { "name": "chin", "bone": "chin", "attachment": "chin" },
{ "name": "R_wing", "bone": "R_wing", "attachment": "R_wing01" }, { "name": "right-wing", "bone": "right-wing", "attachment": "right-wing01" },
{ "name": "head", "bone": "head", "attachment": "head" }, { "name": "head", "bone": "head", "attachment": "head" },
{ "name": "logo", "bone": "root", "attachment": "logo" } { "name": "thiagobrayner", "bone": "root", "attachment": "thiagobrayner" }
], ],
"skins": { "skins": {
"default": { "default": {
"L_front_leg": {
"L_front_leg": { "x": 14.69, "y": 0.49, "rotation": 16, "width": 84, "height": 57 }
},
"L_front_thigh": {
"L_front_thigh": { "x": 27.66, "y": -11.59, "rotation": 58.66, "width": 84, "height": 72 }
},
"L_front_toe1": {
"front_toeA": { "x": 31.93, "y": 0.61, "rotation": 109.56, "width": 29, "height": 50 }
},
"L_front_toe2": {
"front_toeB": { "x": 26.84, "y": -4.95, "rotation": 109.51, "width": 56, "height": 57 }
},
"L_front_toe3": {
"front_toeB": { "x": 18.22, "y": -7.22, "scaleX": 0.881, "scaleY": 0.941, "rotation": 99.71, "width": 56, "height": 57 }
},
"L_front_toe4": {
"front_toeB": { "x": 23.21, "y": -11.69, "scaleX": 0.881, "rotation": 79.89, "width": 56, "height": 57 }
},
"L_rear_leg": {
"L_rear_leg": { "x": 67.29, "y": 12.63, "rotation": -162.65, "width": 206, "height": 177 }
},
"L_rear_thigh": {
"L_rear_thigh": { "x": 56.03, "y": 27.39, "rotation": 74.94, "width": 91, "height": 149 }
},
"L_wing": {
"L_wing01": { "x": 129.21, "y": -45.49, "rotation": -83.7, "width": 191, "height": 256 },
"L_wing02": { "x": 126.38, "y": -31.69, "rotation": -86.19, "width": 179, "height": 269 },
"L_wing03": { "x": 110.27, "y": -90.89, "rotation": -86.19, "width": 186, "height": 207 },
"L_wing04": { "x": -61.62, "y": -83.27, "rotation": -86.19, "width": 188, "height": 135 },
"L_wing05": { "x": -90.02, "y": -78.14, "rotation": -86.19, "width": 218, "height": 213 },
"L_wing06": { "x": -143.77, "y": -83.72, "rotation": -86.19, "width": 192, "height": 331 },
"L_wing07": { "x": -133.05, "y": -33.9, "rotation": -86.19, "width": 159, "height": 255 },
"L_wing08": { "x": 50.15, "y": -15.71, "rotation": -86.19, "width": 164, "height": 181 },
"L_wing09": { "x": 85.94, "y": -11.33, "rotation": -86.19, "width": 204, "height": 167 }
},
"R_front_leg": {
"R_front_leg": { "x": 17.8, "y": 4.23, "rotation": 37.63, "width": 101, "height": 89 }
},
"R_front_thigh": {
"R_front_thigh": { "x": 35.29, "y": 2.11, "rotation": 130.33, "width": 108, "height": 108 }
},
"R_front_toe1": {
"front_toeB": { "x": 24.5, "y": -2.61, "rotation": 104.18, "width": 56, "height": 57 }
},
"R_front_toe2": {
"front_toeB": { "x": 26.39, "y": 1.17, "rotation": 104.58, "width": 56, "height": 57 }
},
"R_front_toe3": {
"front_toeB": { "x": 30.67, "y": -0.07, "rotation": 112.3, "width": 56, "height": 57 }
},
"R_rear_leg": {
"R_rear_leg": { "x": 60.88, "y": -5.73, "rotation": -127.67, "width": 116, "height": 100 }
},
"R_rear_thigh": {
"R_rear_thigh": { "x": 53.25, "y": 12.58, "rotation": 103.29, "width": 91, "height": 149 }
},
"R_rear_toe1": {
"rear-toe": { "x": 54.76, "y": -5.72, "rotation": 134.79, "width": 109, "height": 77 }
},
"R_rear_toe2": {
"rear-toe": { "x": 57.03, "y": -7.23, "rotation": 134.43, "width": 109, "height": 77 }
},
"R_rear_toe3": {
"rear-toe": { "x": 47.46, "y": -7.64, "rotation": 134.34, "width": 109, "height": 77 }
},
"R_wing": {
"R_wing01": { "x": 170.08, "y": -23.68, "rotation": -130.34, "width": 219, "height": 310 },
"R_wing02": { "x": 171.15, "y": -19.33, "rotation": -130.34, "width": 203, "height": 305 },
"R_wing03": { "x": 166.46, "y": 29.24, "rotation": -130.34, "width": 272, "height": 247 },
"R_wing04": { "x": 42.94, "y": 134.06, "rotation": -130.34, "width": 279, "height": 144 },
"R_wing05": { "x": -8.84, "y": 142.59, "rotation": -130.34, "width": 251, "height": 229 },
"R_wing06": { "x": -123.33, "y": 111.22, "rotation": -130.34, "width": 200, "height": 366 },
"R_wing07": { "x": -40.17, "y": 118.03, "rotation": -130.34, "width": 200, "height": 263 },
"R_wing08": { "x": 48.02, "y": 28.76, "rotation": -130.34, "width": 234, "height": 254 },
"R_wing09": { "x": 128.1, "y": 21.13, "rotation": -130.34, "width": 248, "height": 204 }
},
"back": { "back": {
"back": { "x": 35.85, "y": 19.99, "rotation": -151.83, "width": 190, "height": 185 } "back": { "x": 35.85, "y": 19.99, "rotation": -151.83, "width": 190, "height": 185 }
}, },
@ -158,8 +212,81 @@
"head": { "head": {
"head": { "x": 76.69, "y": 32.21, "rotation": -47.13, "width": 296, "height": 260 } "head": { "x": 76.69, "y": 32.21, "rotation": -47.13, "width": 296, "height": 260 }
}, },
"logo": { "left-front-leg": {
"logo": { "y": -176.72, "width": 897, "height": 92 } "left-front-leg": { "x": 14.69, "y": 0.49, "rotation": 16, "width": 84, "height": 57 }
},
"left-front-thigh": {
"left-front-thigh": { "x": 27.66, "y": -11.59, "rotation": 58.66, "width": 84, "height": 72 }
},
"left-front-toe1": {
"front-toe-a": { "x": 31.93, "y": 0.61, "rotation": 109.56, "width": 29, "height": 50 }
},
"left-front-toe2": {
"front-toe-b": { "x": 26.84, "y": -4.95, "rotation": 109.51, "width": 56, "height": 57 }
},
"left-front-toe3": {
"front-toe-b": { "x": 18.22, "y": -7.22, "scaleX": 0.881, "scaleY": 0.941, "rotation": 99.71, "width": 56, "height": 57 }
},
"left-front-toe4": {
"front-toe-b": { "x": 23.21, "y": -11.69, "scaleX": 0.881, "rotation": 79.89, "width": 56, "height": 57 }
},
"left-rear-leg": {
"left-rear-leg": { "x": 67.29, "y": 12.63, "rotation": -162.65, "width": 206, "height": 177 }
},
"left-rear-thigh": {
"left-rear-thigh": { "x": 56.03, "y": 27.39, "rotation": 74.94, "width": 91, "height": 149 }
},
"left-wing": {
"left-wing01": { "x": 129.21, "y": -45.49, "rotation": -83.7, "width": 191, "height": 256 },
"left-wing02": { "x": 126.38, "y": -31.69, "rotation": -86.19, "width": 179, "height": 269 },
"left-wing03": { "x": 110.27, "y": -90.89, "rotation": -86.19, "width": 186, "height": 207 },
"left-wing04": { "x": -61.62, "y": -83.27, "rotation": -86.19, "width": 188, "height": 135 },
"left-wing05": { "x": -90.02, "y": -78.14, "rotation": -86.19, "width": 218, "height": 213 },
"left-wing06": { "x": -143.77, "y": -83.72, "rotation": -86.19, "width": 192, "height": 331 },
"left-wing07": { "x": -133.05, "y": -33.9, "rotation": -86.19, "width": 159, "height": 255 },
"left-wing08": { "x": 50.15, "y": -15.71, "rotation": -86.19, "width": 164, "height": 181 },
"left-wing09": { "x": 85.94, "y": -11.33, "rotation": -86.19, "width": 204, "height": 167 }
},
"right-front-leg": {
"right-front-leg": { "x": 17.8, "y": 4.23, "rotation": 37.63, "width": 101, "height": 89 }
},
"right-front-thigh": {
"right-front-thigh": { "x": 35.29, "y": 2.11, "rotation": 130.33, "width": 108, "height": 108 }
},
"right-front-toe1": {
"front-toe-b": { "x": 24.5, "y": -2.61, "rotation": 104.18, "width": 56, "height": 57 }
},
"right-front-toe2": {
"front-toe-b": { "x": 26.39, "y": 1.17, "rotation": 104.58, "width": 56, "height": 57 }
},
"right-front-toe3": {
"front-toe-b": { "x": 30.67, "y": -0.07, "rotation": 112.3, "width": 56, "height": 57 }
},
"right-rear-leg": {
"right-rear-leg": { "x": 60.88, "y": -5.73, "rotation": -127.67, "width": 116, "height": 100 }
},
"right-rear-thigh": {
"right-rear-thigh": { "x": 53.25, "y": 12.58, "rotation": 103.29, "width": 91, "height": 149 }
},
"right-rear-toe1": {
"right-rear-toe": { "x": 54.76, "y": -5.72, "rotation": 134.79, "width": 109, "height": 77 }
},
"right-rear-toe2": {
"right-rear-toe": { "x": 57.03, "y": -7.23, "rotation": 134.43, "width": 109, "height": 77 }
},
"right-rear-toe3": {
"right-rear-toe": { "x": 47.46, "y": -7.64, "rotation": 134.34, "width": 109, "height": 77 }
},
"right-wing": {
"right-wing01": { "x": 170.08, "y": -23.68, "rotation": -130.34, "width": 219, "height": 310 },
"right-wing02": { "x": 171.15, "y": -19.33, "rotation": -130.34, "width": 203, "height": 305 },
"right-wing03": { "x": 166.46, "y": 29.24, "rotation": -130.34, "width": 272, "height": 247 },
"right-wing04": { "x": 42.94, "y": 134.06, "rotation": -130.34, "width": 279, "height": 144 },
"right-wing05": { "x": -8.84, "y": 142.59, "rotation": -130.34, "width": 251, "height": 229 },
"right-wing06": { "x": -123.33, "y": 111.22, "rotation": -130.34, "width": 200, "height": 366 },
"right-wing07": { "x": -40.17, "y": 118.03, "rotation": -130.34, "width": 200, "height": 263 },
"right-wing08": { "x": 48.02, "y": 28.76, "rotation": -130.34, "width": 234, "height": 254 },
"right-wing09": { "x": 128.1, "y": 21.13, "rotation": -130.34, "width": 248, "height": 204 }
}, },
"tail1": { "tail1": {
"tail01": { "x": 22.6, "y": -4.5, "rotation": 163.85, "width": 120, "height": 153 } "tail01": { "x": 22.6, "y": -4.5, "rotation": 163.85, "width": 120, "height": 153 }
@ -178,55 +305,58 @@
}, },
"tail6": { "tail6": {
"tail06": { "x": 28.02, "y": -16.83, "rotation": -175.45, "width": 95, "height": 68 } "tail06": { "x": 28.02, "y": -16.83, "rotation": -175.45, "width": 95, "height": 68 }
},
"thiagobrayner": {
"thiagobrayner": { "y": -95, "width": 350, "height": 31 }
} }
} }
}, },
"animations": { "animations": {
"flying": { "flying": {
"slots": { "slots": {
"L_wing": { "left-wing": {
"attachment": [ "attachment": [
{ "time": 0, "name": "L_wing01" }, { "time": 0, "name": "left-wing01" },
{ "time": 0.0667, "name": "L_wing02" }, { "time": 0.0667, "name": "left-wing02" },
{ "time": 0.1333, "name": "L_wing03" }, { "time": 0.1333, "name": "left-wing03" },
{ "time": 0.2, "name": "L_wing04" }, { "time": 0.2, "name": "left-wing04" },
{ "time": 0.2667, "name": "L_wing05" }, { "time": 0.2667, "name": "left-wing05" },
{ "time": 0.3333, "name": "L_wing06" }, { "time": 0.3333, "name": "left-wing06" },
{ "time": 0.4, "name": "L_wing07" }, { "time": 0.4, "name": "left-wing07" },
{ "time": 0.4667, "name": "L_wing08" }, { "time": 0.4667, "name": "left-wing08" },
{ "time": 0.5333, "name": "L_wing09" }, { "time": 0.5333, "name": "left-wing09" },
{ "time": 0.6, "name": "L_wing01" }, { "time": 0.6, "name": "left-wing01" },
{ "time": 0.7333, "name": "L_wing02" }, { "time": 0.7333, "name": "left-wing02" },
{ "time": 0.8, "name": "L_wing03" }, { "time": 0.8, "name": "left-wing03" },
{ "time": 0.8333, "name": "L_wing04" }, { "time": 0.8333, "name": "left-wing04" },
{ "time": 0.8667, "name": "L_wing05" }, { "time": 0.8667, "name": "left-wing05" },
{ "time": 0.9, "name": "L_wing06" }, { "time": 0.9, "name": "left-wing06" },
{ "time": 0.9333, "name": "L_wing07" }, { "time": 0.9333, "name": "left-wing07" },
{ "time": 0.9667, "name": "L_wing08" }, { "time": 0.9667, "name": "left-wing08" },
{ "time": 1, "name": "L_wing01" } { "time": 1, "name": "left-wing01" }
] ]
}, },
"R_wing": { "right-wing": {
"attachment": [ "attachment": [
{ "time": 0, "name": "R_wing01" }, { "time": 0, "name": "right-wing01" },
{ "time": 0.0667, "name": "R_wing02" }, { "time": 0.0667, "name": "right-wing02" },
{ "time": 0.1333, "name": "R_wing03" }, { "time": 0.1333, "name": "right-wing03" },
{ "time": 0.2, "name": "R_wing04" }, { "time": 0.2, "name": "right-wing04" },
{ "time": 0.2667, "name": "R_wing05" }, { "time": 0.2667, "name": "right-wing05" },
{ "time": 0.3333, "name": "R_wing06" }, { "time": 0.3333, "name": "right-wing06" },
{ "time": 0.4, "name": "R_wing07" }, { "time": 0.4, "name": "right-wing07" },
{ "time": 0.4667, "name": "R_wing08" }, { "time": 0.4667, "name": "right-wing08" },
{ "time": 0.5333, "name": "R_wing09" }, { "time": 0.5333, "name": "right-wing09" },
{ "time": 0.6, "name": "R_wing01" }, { "time": 0.6, "name": "right-wing01" },
{ "time": 0.7333, "name": "R_wing02" }, { "time": 0.7333, "name": "right-wing02" },
{ "time": 0.7667, "name": "R_wing02" }, { "time": 0.7667, "name": "right-wing02" },
{ "time": 0.8, "name": "R_wing03" }, { "time": 0.8, "name": "right-wing03" },
{ "time": 0.8333, "name": "R_wing04" }, { "time": 0.8333, "name": "right-wing04" },
{ "time": 0.8667, "name": "R_wing05" }, { "time": 0.8667, "name": "right-wing05" },
{ "time": 0.9, "name": "R_wing06" }, { "time": 0.9, "name": "right-wing06" },
{ "time": 0.9333, "name": "R_wing07" }, { "time": 0.9333, "name": "right-wing07" },
{ "time": 0.9667, "name": "R_wing08" }, { "time": 0.9667, "name": "right-wing08" },
{ "time": 1, "name": "R_wing01" } { "time": 1, "name": "right-wing01" }
] ]
} }
}, },
@ -307,7 +437,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_rear_thigh": { "right-rear-thigh": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0, "curve": "stepped" }, { "time": 0, "angle": 0, "curve": "stepped" },
{ "time": 0.5, "angle": 0, "curve": "stepped" }, { "time": 0.5, "angle": 0, "curve": "stepped" },
@ -424,7 +554,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_rear_leg": { "right-rear-leg": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": -14.22 }, { "time": 0.1667, "angle": -14.22 },
@ -442,7 +572,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_rear_toe3": { "right-rear-toe3": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.5, "angle": -36.06 }, { "time": 0.5, "angle": -36.06 },
@ -459,7 +589,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_rear_toe2": { "right-rear-toe2": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.5, "angle": -20.32 }, { "time": 0.5, "angle": -20.32 },
@ -476,7 +606,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_rear_toe1": { "right-rear-toe1": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.5, "angle": -18.71 }, { "time": 0.5, "angle": -18.71 },
@ -537,7 +667,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_front_thigh": { "left-front-thigh": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": -19.19 }, { "time": 0.1667, "angle": -19.19 },
@ -556,7 +686,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_front_thigh": { "right-front-thigh": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": -12.96 }, { "time": 0.1667, "angle": -12.96 },
@ -574,7 +704,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_front_leg": { "left-front-leg": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": 37.77 }, { "time": 0.1667, "angle": 37.77 },
@ -592,7 +722,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_front_toe1": { "left-front-toe1": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": -16.09 }, { "time": 0.1667, "angle": -16.09 },
@ -610,7 +740,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_front_toe2": { "left-front-toe2": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0, "curve": "stepped" }, { "time": 0, "angle": 0, "curve": "stepped" },
{ "time": 0.5, "angle": 0, "curve": "stepped" }, { "time": 0.5, "angle": 0, "curve": "stepped" },
@ -627,7 +757,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_front_toe4": { "left-front-toe4": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.5, "angle": 26.52 }, { "time": 0.5, "angle": 26.52 },
@ -644,7 +774,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_front_toe3": { "left-front-toe3": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.5, "angle": 16.99 }, { "time": 0.5, "angle": 16.99 },
@ -661,7 +791,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_front_leg": { "right-front-leg": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": 26.07 }, { "time": 0.1667, "angle": 26.07 },
@ -679,7 +809,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_front_toe1": { "right-front-toe1": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": 29.24 }, { "time": 0.1667, "angle": 29.24 },
@ -697,7 +827,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_front_toe2": { "right-front-toe2": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": 24.9 }, { "time": 0.1667, "angle": 24.9 },
@ -715,7 +845,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"R_front_toe3": { "right-front-toe3": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.1667, "angle": 11.01 }, { "time": 0.1667, "angle": 11.01 },
@ -733,7 +863,7 @@
{ "time": 1, "x": 1, "y": 1 } { "time": 1, "x": 1, "y": 1 }
] ]
}, },
"L_rear_leg": { "left-rear-leg": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, { "time": 0, "angle": 0 },
{ "time": 0.3667, "angle": 25.19 }, { "time": 0.3667, "angle": 25.19 },
@ -747,7 +877,7 @@
{ "time": 0, "x": 1, "y": 1 } { "time": 0, "x": 1, "y": 1 }
] ]
}, },
"COG": { "center": {
"rotate": [ "rotate": [
{ {
"time": 0, "time": 0,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 KiB

After

Width:  |  Height:  |  Size: 593 KiB

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 6bc52290ef03f2846ba38d67e2823598 guid: 6bc52290ef03f2846ba38d67e2823598
timeCreated: 1487920373 timeCreated: 1497481082
licenseType: Free licenseType: Free
TextureImporter: TextureImporter:
fileIDToRecycleName: fileIDToRecycleName:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 192 KiB

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 12c126994123f12468cf4c5a2684078a guid: 12c126994123f12468cf4c5a2684078a
timeCreated: 1487920372 timeCreated: 1497481081
licenseType: Free licenseType: Free
TextureImporter: TextureImporter:
fileIDToRecycleName: fileIDToRecycleName:

View File

@ -1,4 +1,4 @@
Copyright (c) 2013, ODI EntertainmenT Copyright (c) 2013, Thiago Brayner - www.thiagobrayner.com
The project file and images in this "dragon" project are provided for The project file and images in this "dragon" project are provided for
demonstration purposes only and may not be redistributed for any reason nor demonstration purposes only and may not be redistributed for any reason nor

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 91aa25fdfcac76c47a07fab9862f8c09
folderAsset: yes
timeCreated: 1497484602
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,293 @@
spineboy.png
size: 2048,1024
format: RGBA8888
filter: Linear,Linear
repeat: none
crosshair
rotate: false
xy: 1862, 497
size: 89, 89
orig: 89, 89
offset: 0, 0
index: -1
dust01
rotate: true
xy: 748, 372
size: 96, 73
orig: 96, 73
offset: 0, 0
index: -1
dust02
rotate: false
xy: 934, 431
size: 86, 88
orig: 86, 88
offset: 0, 0
index: -1
dust03
rotate: false
xy: 1965, 591
size: 62, 52
orig: 62, 52
offset: 0, 0
index: -1
eye-indifferent
rotate: false
xy: 1870, 649
size: 93, 89
orig: 93, 89
offset: 0, 0
index: -1
eye-surprised
rotate: false
xy: 823, 380
size: 93, 89
orig: 93, 89
offset: 0, 0
index: -1
front-bracer
rotate: true
xy: 1225, 521
size: 58, 80
orig: 58, 80
offset: 0, 0
index: -1
front-fist-closed
rotate: false
xy: 1022, 441
size: 75, 82
orig: 75, 82
offset: 0, 0
index: -1
front-fist-open
rotate: true
xy: 1953, 439
size: 86, 87
orig: 86, 87
offset: 0, 0
index: -1
front-foot
rotate: true
xy: 1799, 602
size: 126, 69
orig: 126, 69
offset: 0, 0
index: -1
front-shin
rotate: true
xy: 278, 2
size: 82, 184
orig: 82, 184
offset: 0, 0
index: -1
front-thigh
rotate: true
xy: 820, 471
size: 48, 112
orig: 48, 112
offset: 0, 0
index: -1
front-upper-arm
rotate: true
xy: 1020, 525
size: 54, 97
orig: 54, 97
offset: 0, 0
index: -1
goggles
rotate: true
xy: 1855, 740
size: 261, 166
orig: 261, 166
offset: 0, 0
index: -1
gun
rotate: false
xy: 1329, 644
size: 210, 203
orig: 210, 203
offset: 0, 0
index: -1
head
rotate: true
xy: 1555, 730
size: 271, 298
orig: 271, 298
offset: 0, 0
index: -1
hoverboard-board
rotate: false
xy: 1061, 849
size: 492, 152
orig: 492, 152
offset: 0, 0
index: -1
hoverboard-thruster
rotate: false
xy: 710, 29
size: 60, 64
orig: 60, 64
offset: 0, 0
index: -1
hoverglow-small
rotate: false
xy: 2, 9
size: 274, 75
orig: 274, 75
offset: 0, 0
index: -1
mouth-grind
rotate: true
xy: 1965, 645
size: 93, 59
orig: 93, 59
offset: 0, 0
index: -1
mouth-oooo
rotate: false
xy: 1870, 588
size: 93, 59
orig: 93, 59
offset: 0, 0
index: -1
mouth-smile
rotate: false
xy: 1953, 527
size: 93, 59
orig: 93, 59
offset: 0, 0
index: -1
muzzle-glow
rotate: false
xy: 820, 521
size: 198, 198
orig: 198, 198
offset: 0, 0
index: -1
muzzle01
rotate: false
xy: 2, 86
size: 474, 275
orig: 474, 275
offset: 0, 0
index: -1
muzzle02
rotate: false
xy: 568, 721
size: 491, 280
orig: 491, 280
offset: 0, 0
index: -1
muzzle03
rotate: false
xy: 2, 363
size: 562, 316
orig: 562, 316
offset: 0, 0
index: -1
muzzle04
rotate: false
xy: 2, 681
size: 564, 320
orig: 564, 320
offset: 0, 0
index: -1
neck
rotate: false
xy: 1020, 678
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
portal-bg
rotate: false
xy: 1061, 581
size: 266, 266
orig: 266, 266
offset: 0, 0
index: -1
portal-flare1
rotate: false
xy: 918, 369
size: 111, 60
orig: 111, 60
offset: 0, 0
index: -1
portal-flare2
rotate: true
xy: 1799, 486
size: 114, 61
orig: 114, 61
offset: 0, 0
index: -1
portal-flare3
rotate: false
xy: 478, 34
size: 115, 59
orig: 115, 59
offset: 0, 0
index: -1
portal-shade
rotate: false
xy: 478, 95
size: 266, 266
orig: 266, 266
offset: 0, 0
index: -1
portal-streaks1
rotate: true
xy: 1541, 476
size: 252, 256
orig: 252, 256
offset: 0, 0
index: -1
portsl-streaks2
rotate: false
xy: 568, 470
size: 250, 249
orig: 250, 249
offset: 0, 0
index: -1
rear-bracer
rotate: false
xy: 1031, 367
size: 56, 72
orig: 56, 72
offset: 0, 0
index: -1
rear-foot
rotate: false
xy: 595, 33
size: 113, 60
orig: 113, 60
offset: 0, 0
index: -1
rear-shin
rotate: true
xy: 1329, 567
size: 75, 178
orig: 75, 178
offset: 0, 0
index: -1
rear-thigh
rotate: true
xy: 1119, 514
size: 65, 104
orig: 65, 104
offset: 0, 0
index: -1
rear-upper-arm
rotate: true
xy: 1099, 465
size: 47, 87
orig: 47, 87
offset: 0, 0
index: -1
torso
rotate: true
xy: 566, 370
size: 98, 180
orig: 98, 180
offset: 0, 0
index: -1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: baa2a4228a0622e48ade89f9329a21db
timeCreated: 1497484603
licenseType: Free
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c4a131ce07ddbbf4fa38e01f472a366f
timeCreated: 1497484603
licenseType: Free
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 775ade7081c168944b4fb20357ce370a
timeCreated: 1497484603
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a6b194f808b1af6499c93410e504af42, type: 3}
m_Name: spineboy_Atlas
m_EditorClassIdentifier:
atlasFile: {fileID: 4900000, guid: baa2a4228a0622e48ade89f9329a21db, type: 3}
materials:
- {fileID: 2100000, guid: 86873d92b9c6412428e6e2d4f827c88b, type: 2}

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 2fc9866d5b475d74b981f97a77312320
timeCreated: 1497484603
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: spineboy_Material
m_Shader: {fileID: 4800000, guid: 1e8a610c9e01c3648bac42585e5fc676, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 775ade7081c168944b4fb20357ce370a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _Cutoff: 0.1
m_Colors: []

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 86873d92b9c6412428e6e2d4f827c88b
timeCreated: 1497484603
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f1b3b4b945939a54ea0b23d3396115fb, type: 3}
m_Name: spineboy_SkeletonData
m_EditorClassIdentifier:
atlasAssets:
- {fileID: 11400000, guid: 2fc9866d5b475d74b981f97a77312320, type: 2}
scale: 0.01
skeletonJSON: {fileID: 4900000, guid: c4a131ce07ddbbf4fa38e01f472a366f, type: 3}
fromAnimation:
- idle
- run
- walk
- run
toAnimation:
- idle-turn
- run-to-idle
- run
- walk
duration:
- 0
- 0.05
- 0.3
- 0.3
defaultMix: 0.1
controller: {fileID: 0}

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 45a15bf53b040de42b2adbc759a40203
timeCreated: 1497484603
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "pT8+kphidZDzlY5lbXpU0cNNzmQ", "hash": "fdIxd7co0AmzNYI1JtoFSg51K0U",
"spine": "3.6.18-beta", "spine": "3.6.30-beta",
"width": 470.71, "width": 470.71,
"height": 731.57, "height": 731.57,
"images": "C:/Program Files (x86)/Spine/examples/spineboy/images/" "images": "C:/Program Files (x86)/Spine/examples/spineboy/images/"
@ -789,21 +789,22 @@
}, },
"muzzle": { "muzzle": {
"color": [ "color": [
{ "time": 0, "color": "0000803e", "curve": "stepped" }, { "time": 0, "color": "00008000", "curve": "stepped" },
{ "time": 0.7667, "color": "0000803e", "curve": "stepped" }, { "time": 0.7667, "color": "fffffffe", "curve": "stepped" },
{ "time": 0.8, "color": "0000803e", "curve": "stepped" }, { "time": 0.8, "color": "ffffff00", "curve": "stepped" },
{ "time": 0.8333, "color": "0000803e", "curve": "stepped" }, { "time": 0.8333, "color": "fffffffe", "curve": "stepped" },
{ "time": 0.8667, "color": "0000803e", "curve": "stepped" }, { "time": 0.8667, "color": "ffffff00", "curve": "stepped" },
{ "time": 0.9, "color": "0000803e", "curve": "stepped" }, { "time": 0.9, "color": "fffffffe", "curve": "stepped" },
{ "time": 0.9333, "color": "0000803e", "curve": "stepped" }, { "time": 0.9333, "color": "ffffff00", "curve": "stepped" },
{ "time": 0.9667, "color": "0000803e", "curve": "stepped" }, { "time": 0.9667, "color": "fffffffe", "curve": "stepped" },
{ "time": 1.1, "color": "0000803e", "curve": "stepped" }, { "time": 1, "color": "ffffff00", "curve": "stepped" },
{ "time": 1.1333, "color": "0000803e", "curve": "stepped" }, { "time": 1.1, "color": "fffffffe", "curve": "stepped" },
{ "time": 1.2, "color": "0000803e", "curve": "stepped" }, { "time": 1.1333, "color": "ffffff00", "curve": "stepped" },
{ "time": 1.2333, "color": "0000803e", "curve": "stepped" }, { "time": 1.2, "color": "fffffffe", "curve": "stepped" },
{ "time": 1.2667, "color": "0000803e", "curve": "stepped" }, { "time": 1.2333, "color": "ffffff00", "curve": "stepped" },
{ "time": 1.3333, "color": "0000803e", "curve": "stepped" }, { "time": 1.2667, "color": "fffffffe", "curve": "stepped" },
{ "time": 2.5333, "color": "0000803e" } { "time": 1.3333, "color": "ffffff00", "curve": "stepped" },
{ "time": 2.5333, "color": "ffffff00" }
], ],
"attachment": [ "attachment": [
{ "time": 0, "name": null }, { "time": 0, "name": null },
@ -1976,7 +1977,9 @@
"slots": { "slots": {
"front_fist": { "front_fist": {
"attachment": [ "attachment": [
{ "time": 0.1, "name": "front_fist_open" } { "time": 0, "name": "front_fist_open" },
{ "time": 0.1, "name": "front_fist_open" },
{ "time": 0.2, "name": "front_fist_open" }
] ]
}, },
"mouth": { "mouth": {
@ -1989,93 +1992,162 @@
"bones": { "bones": {
"torso": { "torso": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 56.42 }, {
{ "time": 0.2, "angle": 8.89 } "time": 0,
"angle": -20.26,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": -5.62 }
],
"translate": [
{
"time": 0,
"x": 0,
"y": 0,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": -6.5, "y": 0 }
] ]
}, },
"neck": { "neck": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 35.39 }, {
{ "time": 0.1333, "angle": 24.95 } "time": 0,
"angle": -0.49,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.1333, "angle": 24.95 },
{ "time": 0.2, "angle": 0 }
] ]
}, },
"head": { "head": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 10.22 }, {
{ "time": 0.2, "angle": -41.3 } "time": 0,
"angle": -46.07,
"curve": [ 0.352, 0, 0.492, 0.6 ]
},
{ "time": 0.2, "angle": -5.51 }
] ]
}, },
"front_upper_arm": { "front_upper_arm": {
"rotate": [ "rotate": [
{ {
"time": 0, "time": 0,
"angle": -310.93, "angle": -73.85,
"curve": [ 0.38, 0.53, 0.745, 1 ] "curve": [ 0.25, 0, 0.275, 1 ]
}, },
{ "time": 0.2, "angle": -112.6 } { "time": 0.2, "angle": -59.85 }
], ],
"translate": [ "translate": [
{ "time": 0, "x": 7.23, "y": -13.13 } {
"time": 0,
"x": -9.77,
"y": 0.42,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": -7.12, "y": -8.24 }
] ]
}, },
"front_bracer": { "front_bracer": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 36.99 }, {
{ "time": 0.2, "angle": -28.65 } "time": 0,
"angle": 75.83,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": 45.47 }
] ]
}, },
"front_fist": { "front_fist": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 13.59 }, {
{ "time": 0.2, "angle": 7.56 } "time": 0,
"angle": 13.59,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": -6.85 }
],
"scale": [
{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
{ "time": 0.2, "x": 1, "y": 1 }
] ]
}, },
"rear_upper_arm": { "rear_upper_arm": {
"rotate": [ "rotate": [
{ {
"time": 0, "time": 0,
"angle": 271.02, "angle": 255.07,
"curve": [ 0.343, 0.36, 0.68, 0.71 ] "curve": [ 0.25, 0, 0.275, 1 ]
}, },
{ "time": 0.2, "angle": -15.84 } { "time": 0.2, "angle": 62.42 }
], ],
"translate": [ "translate": [
{ "time": 0.2, "x": -0.1, "y": -0.46 } {
"time": 0,
"x": 0,
"y": 0,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": -1.83, "y": -16.79 }
] ]
}, },
"rear_bracer": { "rear_bracer": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 0 }, {
{ "time": 0.2, "angle": 40.03 } "time": 0,
"angle": 66.16,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": -17.16 }
] ]
}, },
"gun": { "gun": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 14.98 }, {
{ "time": 0.2, "angle": 39.76 } "time": 0,
"angle": 14.98,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": 0 }
] ]
}, },
"front_thigh": { "front_thigh": {
"rotate": [ "rotate": [
{ {
"time": 0, "time": 0,
"angle": 90.94, "angle": 26.47,
"curve": [ 0.227, 0.27, 0.433, 1 ] "curve": [ 0.25, 0, 0.275, 1 ]
}, },
{ "time": 0.2, "angle": 32.03 } { "time": 0.2, "angle": 0.65 }
], ],
"translate": [ "translate": [
{ "time": 0, "x": 7.21, "y": -4 } {
"time": 0,
"x": 7.21,
"y": -4,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": -13.4, "y": 6.7 }
],
"scale": [
{
"time": 0,
"x": 1,
"y": 1,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": 0.897, "y": 1 }
] ]
}, },
"rear_thigh": { "rear_thigh": {
"rotate": [ "rotate": [
{ {
"time": 0, "time": 0,
"angle": 40.52, "angle": 47.22,
"curve": [ 0.296, 0.3, 0.59, 1 ] "curve": [ 0.25, 0, 0.275, 1 ]
}, },
{ "time": 0.2, "angle": 90.77 } { "time": 0.2, "angle": 30.51 }
], ],
"translate": [ "translate": [
{ "time": 0, "x": -1.96, "y": -0.32 } { "time": 0, "x": -1.96, "y": -0.32 }
@ -2083,33 +2155,66 @@
}, },
"front_shin": { "front_shin": {
"rotate": [ "rotate": [
{ "time": 0, "angle": -96.63 }, {
{ "time": 0.2, "angle": -15.13 } "time": 0,
"angle": -67.69,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": -19.29 }
],
"scale": [
{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
{ "time": 0.2, "x": 1, "y": 1 }
] ]
}, },
"rear_shin": { "rear_shin": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 8 }, {
{ "time": 0.2, "angle": -67.54 } "time": 0,
"angle": -45.94,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": -23.83 }
] ]
}, },
"front_foot": { "front_foot": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 5.4 }, {
{ "time": 0.2, "angle": -16.27 } "time": 0,
"angle": 5.4,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": 5.14 }
],
"scale": [
{
"time": 0,
"x": 1,
"y": 1,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": 0.755, "y": 1.31 }
] ]
}, },
"rear_foot": { "rear_foot": {
"rotate": [ "rotate": [
{ "time": 0, "angle": 2.67 }, {
{ "time": 0.2, "angle": -10.31 } "time": 0,
"angle": -35.72,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "angle": -7.34 }
] ]
}, },
"hip": { "hip": {
"translate": [ "translate": [
{ "time": 0, "x": -75.55, "y": -78.04 }, {
{ "time": 0.1333, "x": -36.48, "y": 12.42 }, "time": 0,
{ "time": 0.2, "x": -36.48, "y": -3 } "x": -32.67,
"y": 15,
"curve": [ 0.25, 0, 0.275, 1 ]
},
{ "time": 0.2, "x": -6.64, "y": -23.02 }
] ]
} }
} }
@ -3745,28 +3850,6 @@
} }
} }
}, },
"lastframehidehead": {
"slots": {
"eye": {
"attachment": [
{ "time": 0, "name": "eye_indifferent" },
{ "time": 2, "name": null }
]
},
"goggles": {
"attachment": [
{ "time": 0, "name": "goggles" },
{ "time": 2, "name": null }
]
},
"head": {
"attachment": [
{ "time": 0, "name": "head" },
{ "time": 2, "name": null }
]
}
}
},
"pole": { "pole": {
"slots": { "slots": {
"eye": { "eye": {
@ -4940,10 +5023,19 @@
}, },
"muzzle": { "muzzle": {
"color": [ "color": [
{ "time": 0.0225, "color": "0000803e", "curve": "stepped" }, {
{ "time": 0.0667, "color": "0000803e", "curve": "stepped" }, "time": 0.0225,
{ "time": 0.1, "color": "0000803e", "curve": "stepped" }, "color": "ffad76fe",
{ "time": 0.1667, "color": "0000803e" } "curve": [ 0.175, 0.43, 0.534, 0.75 ]
},
{
"time": 0.0333,
"color": "ffc197fe",
"curve": [ 0.286, 0.99, 0.774, 1 ]
},
{ "time": 0.0667, "color": "fffffffe" },
{ "time": 0.1, "color": "ffbc8fee" },
{ "time": 0.1667, "color": "ffa18000" }
], ],
"attachment": [ "attachment": [
{ "time": 0.0333, "name": "muzzle" }, { "time": 0.0333, "name": "muzzle" },
@ -4982,6 +5074,12 @@
}, },
{ "time": 0.1667, "x": -9.3, "y": -1.41 }, { "time": 0.1667, "x": -9.3, "y": -1.41 },
{ "time": 0.2667, "x": 0, "y": 0 } { "time": 0.2667, "x": 0, "y": 0 }
],
"scale": [
{ "time": 0, "x": 1, "y": 1 },
{ "time": 0.0243, "x": 1.324, "y": 1 },
{ "time": 0.0539, "x": 0.858, "y": 1.085 },
{ "time": 0.1333, "x": 1, "y": 1 }
] ]
}, },
"rear_bracer": { "rear_bracer": {
@ -5029,220 +5127,6 @@
] ]
} }
}, },
"shoot old": {
"slots": {
"front_fist": {
"attachment": [
{ "time": 0.1333, "name": "front_fist_closed" },
{ "time": 0.4, "name": "front_fist_open" }
]
},
"mouth": {
"attachment": [
{ "time": 0.1333, "name": "mouth_grind" }
]
},
"muzzle": {
"color": [
{ "time": 0.1333, "color": "0000803e", "curve": "stepped" },
{ "time": 0.1667, "color": "0000803e", "curve": "stepped" },
{ "time": 0.2667, "color": "0000803e" }
],
"attachment": [
{ "time": 0.1333, "name": "muzzle" },
{ "time": 0.2667, "name": null }
]
}
},
"bones": {
"gunTip": {
"translate": [
{ "time": 0.1333, "x": 0, "y": 0 },
{ "time": 0.2, "x": 20.93, "y": 1.58 }
],
"scale": [
{ "time": 0.1333, "x": 1, "y": 1 },
{ "time": 0.2, "x": 1.247, "y": 1.517 }
]
},
"gun": {
"rotate": [
{ "time": 0, "angle": 1.91 }
],
"translate": [
{
"time": 0,
"x": 7.95,
"y": 5.85,
"curve": [ 0, 0.3, 0.679, 1 ]
},
{ "time": 0.3, "x": -9.3, "y": -1.41 },
{ "time": 0.4, "x": 0, "y": 0 }
]
},
"rear_bracer": {
"rotate": [
{ "time": 0, "angle": -30.47 }
],
"translate": [
{
"time": 0,
"x": 0,
"y": 0,
"curve": [ 0, 0.3, 0.679, 1 ]
},
{ "time": 0.3, "x": -6, "y": -3.72 },
{ "time": 0.4, "x": 0, "y": 0 }
]
},
"rear_upper_arm": {
"rotate": [
{ "time": 0, "angle": 62.31 }
],
"translate": [
{
"time": 0,
"x": 0,
"y": 0,
"curve": [ 0, 0.3, 0.679, 1 ]
},
{ "time": 0.3, "x": 2.81, "y": 11.42 },
{ "time": 0.4, "x": 0, "y": 0 }
]
},
"aiming gun target": {
"translate": [
{ "time": 0, "x": -0.07, "y": -10.4 }
]
}
},
"ik": {
"aiming constraint": [
{ "time": 0 }
],
"aiming gun constraint": [
{ "time": 0 }
]
}
},
"test": {
"slots": {
"front_foot": {
"color": [
{ "time": 0.6667, "color": "0000803e", "curve": "stepped" },
{ "time": 1.3333, "color": "0000803e" }
]
},
"gun": {
"color": [
{ "time": 0, "color": "0000803e", "curve": "stepped" },
{ "time": 0.6667, "color": "0000803e" },
{ "time": 1.3333, "color": "c9c8483e" }
]
},
"rear_foot": {
"color": [
{ "time": 0.6667, "color": "0000803e", "curve": "stepped" },
{ "time": 1.3333, "color": "0000803e" }
]
}
},
"bones": {
"head": {
"rotate": [
{ "time": 0, "angle": 0 },
{ "time": 0.3333, "angle": -20.72 },
{ "time": 0.6667, "angle": -32.42 },
{ "time": 1, "angle": -5.3 },
{ "time": 1.3333, "angle": 24.96 },
{ "time": 1.6667, "angle": 15.62 },
{ "time": 2, "angle": 0 }
],
"translate": [
{
"time": 0,
"x": 0,
"y": 0,
"curve": [ 0.173, 0.38, 0.575, 0.74 ]
},
{
"time": 0.1667,
"x": 144.2,
"y": -77.59,
"curve": [ 0.372, 0.61, 0.766, 1 ]
},
{
"time": 0.3333,
"x": 217.61,
"y": -192.64,
"curve": [ 0.282, 0, 0.625, 0.32 ]
},
{
"time": 0.5,
"x": 181.21,
"y": -365.66,
"curve": [ 0.314, 0.21, 0.655, 0.54 ]
},
{
"time": 0.6667,
"x": 20.1,
"y": -500.41,
"curve": [ 0.147, 0.28, 0.75, 1 ]
},
{ "time": 0.8333, "x": -194.24, "y": -341.85 },
{ "time": 1, "x": -307.93, "y": -114 },
{
"time": 1.1667,
"x": -330.39,
"y": 121.42,
"curve": [ 0.25, 0, 0.764, 0.49 ]
},
{
"time": 1.3333,
"x": -240.42,
"y": 335.66,
"curve": [ 0.23, 0.37, 0.58, 0.73 ]
},
{
"time": 1.5,
"x": -56.12,
"y": 288.06,
"curve": [ 0.296, 0.61, 0.642, 1 ]
},
{
"time": 1.6667,
"x": 87.63,
"y": 191.34,
"curve": [ 0.239, 0, 0.627, 0.39 ]
},
{
"time": 1.8333,
"x": 60.62,
"y": 95.15,
"curve": [ 0.41, 0.26, 0.804, 0.62 ]
},
{ "time": 2, "x": 0, "y": 0 }
]
}
},
"drawOrder": [
{
"time": 0.6667,
"offsets": [
{ "slot": "head", "offset": -9 },
{ "slot": "eye", "offset": -9 },
{ "slot": "mouth", "offset": -13 },
{ "slot": "goggles", "offset": -13 }
]
},
{ "time": 1.3333 }
],
"events": [
{ "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" },
{ "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" },
{ "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" }
]
},
"walk": { "walk": {
"slots": { "slots": {
"front_fist": { "front_fist": {

View File

@ -15,8 +15,20 @@ MonoBehaviour:
- {fileID: 11400000, guid: b4b8457d6cb8fec49a40be5b71d79e51, type: 2} - {fileID: 11400000, guid: b4b8457d6cb8fec49a40be5b71d79e51, type: 2}
scale: 0.01 scale: 0.01
skeletonJSON: {fileID: 4900000, guid: e3b64d7eaf0de4e45a00b7065166554d, type: 3} skeletonJSON: {fileID: 4900000, guid: e3b64d7eaf0de4e45a00b7065166554d, type: 3}
fromAnimation: [] fromAnimation:
toAnimation: [] - run
duration: [] - pole
defaultMix: 0.15 - idle
- hit
toAnimation:
- pole
- run
- hit
- idle
duration:
- 0
- 0
- 0.05
- 0.05
defaultMix: 0.1
controller: {fileID: 0} controller: {fileID: 0}

View File

Before

Width:  |  Height:  |  Size: 585 KiB

After

Width:  |  Height:  |  Size: 585 KiB

View File

@ -0,0 +1,33 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: spineboy_Material Fill
m_Shader: {fileID: 4800000, guid: 45495790b394f894a967dbf44489b57b, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 49bb65eefe08e424bbf7a38bc98ec638, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- PixelSnap: 0
- _CloakPhase: 0
- _Cutoff: 0.1
- _FillPhase: 0
- _RefractionStrength: 0.01
- _node_3476: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _FillColor: {r: 1, g: 1, b: 1, a: 1}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 128e02fa6a4f5964fa898757a425b354
timeCreated: 1489559535
licenseType: Free
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -25,7 +25,9 @@ Material:
- PixelSnap: 0 - PixelSnap: 0
- _CloakPhase: 0 - _CloakPhase: 0
- _Cutoff: 0.1 - _Cutoff: 0.1
- _FillPhase: 0
- _RefractionStrength: 0.01 - _RefractionStrength: 0.01
- _node_3476: 0 - _node_3476: 0
m_Colors: m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1}
- _FillColor: {r: 1, g: 1, b: 1, a: 1}

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: f5fff1b5caee03642ab77c9984b4bb6a
timeCreated: 1497479335
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: WebGL
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -36,19 +36,16 @@ namespace Spine.Unity.Editor {
[CustomEditor(typeof(SkeletonAnimator))] [CustomEditor(typeof(SkeletonAnimator))]
[CanEditMultipleObjects] [CanEditMultipleObjects]
public class SkeletonAnimatorInspector : SkeletonRendererInspector { public class SkeletonAnimatorInspector : SkeletonRendererInspector {
protected SerializedProperty layerMixModes; protected SerializedProperty mecanimTranslator;
protected SerializedProperty autoReset;
protected override void OnEnable () { protected override void OnEnable () {
base.OnEnable(); base.OnEnable();
autoReset = serializedObject.FindProperty("autoReset"); mecanimTranslator = serializedObject.FindProperty("mecanimTranslator");
layerMixModes = serializedObject.FindProperty("layerMixModes");
} }
protected override void DrawInspectorGUI (bool multi) { protected override void DrawInspectorGUI (bool multi) {
base.DrawInspectorGUI(multi); base.DrawInspectorGUI(multi);
EditorGUILayout.PropertyField(autoReset); EditorGUILayout.PropertyField(mecanimTranslator, true);
EditorGUILayout.PropertyField(layerMixModes, true);
} }
} }
} }

View File

@ -64,6 +64,7 @@ namespace Spine.Unity.Editor {
public static Texture2D mesh; public static Texture2D mesh;
public static Texture2D weights; public static Texture2D weights;
public static Texture2D path; public static Texture2D path;
public static Texture2D clipping;
public static Texture2D skin; public static Texture2D skin;
public static Texture2D skinsRoot; public static Texture2D skinsRoot;
public static Texture2D animation; public static Texture2D animation;
@ -85,39 +86,46 @@ namespace Spine.Unity.Editor {
public static Texture2D unity; public static Texture2D unity;
// public static Texture2D controllerIcon; // public static Texture2D controllerIcon;
static Texture2D LoadIcon (string filename) {
return (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/" + filename);
}
public static void Initialize () { public static void Initialize () {
skeleton = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skeleton.png"); skeleton = LoadIcon("icon-skeleton.png");
nullBone = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-null.png"); nullBone = LoadIcon("icon-null.png");
bone = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-bone.png"); bone = LoadIcon("icon-bone.png");
poseBones = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-poseBones.png"); poseBones = LoadIcon("icon-poseBones.png");
boneNib = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-boneNib.png"); boneNib = LoadIcon("icon-boneNib.png");
slot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-slot.png"); slot = LoadIcon("icon-slot.png");
slotRoot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-slotRoot.png"); slotRoot = LoadIcon("icon-slotRoot.png");
skinPlaceholder = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skinPlaceholder.png"); skinPlaceholder = LoadIcon("icon-skinPlaceholder.png");
genericAttachment = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-attachment.png"); genericAttachment = LoadIcon("icon-attachment.png");
image = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-image.png"); image = LoadIcon("icon-image.png");
boundingBox = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-boundingBox.png"); boundingBox = LoadIcon("icon-boundingBox.png");
mesh = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-mesh.png"); mesh = LoadIcon("icon-mesh.png");
weights = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-weights.png"); weights = LoadIcon("icon-weights.png");
skin = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skin.png"); path = LoadIcon("icon-path.png");
skinsRoot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skinsRoot.png"); clipping = LoadIcon("icon-clipping.png");
animation = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-animation.png");
animationRoot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-animationRoot.png");
spine = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-spine.png");
userEvent = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-event.png");
constraintNib = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-constraintNib.png");
constraintRoot = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-constraints.png"); skin = LoadIcon("icon-skin.png");
constraintTransform = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-constraintTransform.png"); skinsRoot = LoadIcon("icon-skinsRoot.png");
constraintPath = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-constraintPath.png"); animation = LoadIcon("icon-animation.png");
constraintIK = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-constraintIK.png"); animationRoot = LoadIcon("icon-animationRoot.png");
spine = LoadIcon("icon-spine.png");
userEvent = LoadIcon("icon-event.png");
constraintNib = LoadIcon("icon-constraintNib.png");
constraintRoot = LoadIcon("icon-constraints.png");
constraintTransform = LoadIcon("icon-constraintTransform.png");
constraintPath = LoadIcon("icon-constraintPath.png");
constraintIK = LoadIcon("icon-constraintIK.png");
warning = LoadIcon("icon-warning.png");
skeletonUtility = LoadIcon("icon-skeletonUtility.png");
hingeChain = LoadIcon("icon-hingeChain.png");
subMeshRenderer = LoadIcon("icon-subMeshRenderer.png");
warning = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-warning.png");
skeletonUtility = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-skeletonUtility.png");
hingeChain = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-hingeChain.png");
subMeshRenderer = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-subMeshRenderer.png");
path = (Texture2D)AssetDatabase.LoadMainAssetAtPath(SpineEditorUtilities.editorGUIPath + "/icon-path.png");
info = EditorGUIUtility.FindTexture("console.infoicon.sml"); info = EditorGUIUtility.FindTexture("console.infoicon.sml");
unity = EditorGUIUtility.FindTexture("SceneAsset Icon"); unity = EditorGUIUtility.FindTexture("SceneAsset Icon");
@ -125,15 +133,17 @@ namespace Spine.Unity.Editor {
} }
public static Texture2D GetAttachmentIcon (Attachment attachment) { public static Texture2D GetAttachmentIcon (Attachment attachment) {
// Analysis disable once CanBeReplacedWithTryCastAndCheckForNull
if (attachment is RegionAttachment) if (attachment is RegionAttachment)
return Icons.image; return Icons.image;
// Analysis disable once CanBeReplacedWithTryCastAndCheckForNull
else if (attachment is MeshAttachment) else if (attachment is MeshAttachment)
return ((MeshAttachment)attachment).IsWeighted() ? Icons.weights : Icons.mesh; return ((MeshAttachment)attachment).IsWeighted() ? Icons.weights : Icons.mesh;
else if (attachment is BoundingBoxAttachment) else if (attachment is BoundingBoxAttachment)
return Icons.boundingBox; return Icons.boundingBox;
else if (attachment is PathAttachment) else if (attachment is PathAttachment)
return Icons.path; return Icons.path;
else if (attachment is ClippingAttachment)
return Icons.clipping;
else else
return Icons.warning; return Icons.warning;
} }

View File

@ -30,8 +30,6 @@
// Contributed by: Mitch Thompson // Contributed by: Mitch Thompson
//#define FLIPDEBUG
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -42,14 +40,6 @@ namespace Spine.Unity.Modules {
static Transform parentSpaceHelper; static Transform parentSpaceHelper;
#region Inspector #region Inspector
#if FLIPDEBUG
[Header("DEBUG")]
public bool flipXInitially;
public bool flipYInitially;
public bool spawnKinematic;
public bool disableUpdateBones;
#endif
[Header("Hierarchy")] [Header("Hierarchy")]
[SpineBone] [SpineBone]
public string startingBoneName = ""; public string startingBoneName = "";
@ -94,20 +84,12 @@ namespace Spine.Unity.Modules {
IEnumerator Start () { IEnumerator Start () {
if (parentSpaceHelper == null) { if (parentSpaceHelper == null) {
parentSpaceHelper = (new GameObject("Parent Space Helper")).transform; parentSpaceHelper = (new GameObject("Parent Space Helper")).transform;
#if !FLIPDEBUG
parentSpaceHelper.hideFlags = HideFlags.HideInHierarchy;
#endif
} }
targetSkeletonComponent = GetComponent<SkeletonRenderer>() as ISkeletonAnimation; targetSkeletonComponent = GetComponent<SkeletonRenderer>() as ISkeletonAnimation;
if (targetSkeletonComponent == null) Debug.LogError("Attached Spine component does not implement ISkeletonAnimation. This script is not compatible."); if (targetSkeletonComponent == null) Debug.LogError("Attached Spine component does not implement ISkeletonAnimation. This script is not compatible.");
skeleton = targetSkeletonComponent.Skeleton; skeleton = targetSkeletonComponent.Skeleton;
#if FLIPDEBUG
skeleton.flipX = flipXInitially;
skeleton.flipY = flipYInitially;
#endif
if (applyOnStart) { if (applyOnStart) {
yield return null; yield return null;
Apply(); Apply();
@ -144,9 +126,6 @@ namespace Spine.Unity.Modules {
RecursivelyCreateBoneProxies(startingBone); RecursivelyCreateBoneProxies(startingBone);
RootRigidbody = boneTable[startingBone].GetComponent<Rigidbody2D>(); RootRigidbody = boneTable[startingBone].GetComponent<Rigidbody2D>();
#if FLIPDEBUG
if (!RootRigidbody.isKinematic)
#endif
RootRigidbody.isKinematic = pinStartBone; RootRigidbody.isKinematic = pinStartBone;
RootRigidbody.mass = rootMass; RootRigidbody.mass = rootMass;
var boneColliders = new List<Collider2D>(); var boneColliders = new List<Collider2D>();
@ -324,20 +303,12 @@ namespace Spine.Unity.Modules {
var rb = boneGameObject.AddComponent<Rigidbody2D>(); var rb = boneGameObject.AddComponent<Rigidbody2D>();
rb.gravityScale = this.gravityScale; rb.gravityScale = this.gravityScale;
#if FLIPDEBUG
rb.isKinematic = spawnKinematic;
#endif
foreach (Bone child in b.Children) foreach (Bone child in b.Children)
RecursivelyCreateBoneProxies(child); RecursivelyCreateBoneProxies(child);
} }
/// <summary>Performed every skeleton animation update to translate Unity Transforms positions into Spine bone transforms.</summary> /// <summary>Performed every skeleton animation update to translate Unity Transforms positions into Spine bone transforms.</summary>
void UpdateSpineSkeleton (ISkeletonAnimation animatedSkeleton) { void UpdateSpineSkeleton (ISkeletonAnimation animatedSkeleton) {
#if FLIPDEBUG
if (disableUpdateBones) return;
#endif
bool flipX = skeleton.flipX; bool flipX = skeleton.flipX;
bool flipY = skeleton.flipY; bool flipY = skeleton.flipY;
bool flipXOR = flipX ^ flipY; bool flipXOR = flipX ^ flipY;

View File

@ -37,9 +37,6 @@ namespace Spine.Unity {
[RequireComponent(typeof(Animator))] [RequireComponent(typeof(Animator))]
public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation {
public enum MixMode { AlwaysMix, MixNext, SpineStyle }
public MixMode[] layerMixModes = new MixMode[0];
#region Bone Callbacks (ISkeletonAnimation) #region Bone Callbacks (ISkeletonAnimation)
protected event UpdateBonesDelegate _UpdateLocal; protected event UpdateBonesDelegate _UpdateLocal;
protected event UpdateBonesDelegate _UpdateWorld; protected event UpdateBonesDelegate _UpdateWorld;
@ -63,29 +60,40 @@ namespace Spine.Unity {
public event UpdateBonesDelegate UpdateComplete { add { _UpdateComplete += value; } remove { _UpdateComplete -= value; } } public event UpdateBonesDelegate UpdateComplete { add { _UpdateComplete += value; } remove { _UpdateComplete -= value; } }
#endregion #endregion
public class SpineMecanimTranslator { public bool AutoReset {
get { return mecanimTranslator.autoReset; }
set { mecanimTranslator.autoReset = value; }
}
[System.Serializable]
public class MecanimTranslator {
#region Inspector
public bool autoReset = true;
public MixMode[] layerMixModes = new MixMode[0];
#endregion
public enum MixMode { AlwaysMix, MixNext, SpineStyle }
readonly Dictionary<int, Spine.Animation> animationTable = new Dictionary<int, Spine.Animation>(); readonly Dictionary<int, Spine.Animation> animationTable = new Dictionary<int, Spine.Animation>();
readonly Dictionary<AnimationClip, int> clipNameHashCodeTable = new Dictionary<AnimationClip, int>(); readonly Dictionary<AnimationClip, int> clipNameHashCodeTable = new Dictionary<AnimationClip, int>();
readonly List<Animation> previousAnimations = new List<Animation>();
Animator animator; Animator animator;
List<Animation> previousAnimations = new List<Animation>();
public bool autoReset = true;
public void Initialize (Animator animator, SkeletonDataAsset skeletonDataAsset) { public void Initialize (Animator animator, SkeletonDataAsset skeletonDataAsset) {
this.animator = animator; this.animator = animator;
animationTable.Clear(); animationTable.Clear();
clipNameHashCodeTable.Clear(); clipNameHashCodeTable.Clear();
var data = skeletonDataAsset.GetSkeletonData(true); var data = skeletonDataAsset.GetSkeletonData(true);
foreach (var a in data.Animations) foreach (var a in data.Animations)
animationTable.Add(a.Name.GetHashCode(), a); animationTable.Add(a.Name.GetHashCode(), a);
} }
public void Apply (Skeleton skeleton, ref MixMode[] layerMixModes) { public void Apply (Skeleton skeleton) {
if (layerMixModes.Length < animator.layerCount) if (layerMixModes.Length < animator.layerCount)
System.Array.Resize<MixMode>(ref layerMixModes, animator.layerCount); System.Array.Resize<MixMode>(ref layerMixModes, animator.layerCount);
//skeleton.Update(Time.deltaTime); // Doesn't actually do anything, currently. (Spine 3.5). //skeleton.Update(Time.deltaTime); // Doesn't actually do anything, currently. (Spine 3.6).
// Clear Previous // Clear Previous
if (autoReset) { if (autoReset) {
@ -138,7 +146,7 @@ namespace Spine.Unity {
// Always use Mix instead of Applying the first non-zero weighted clip. // Always use Mix instead of Applying the first non-zero weighted clip.
for (int c = 0; c < clipInfo.Length; c++) { for (int c = 0; c < clipInfo.Length; c++) {
var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue;
animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed <0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In); animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed < 0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In);
} }
if (hasNext) { if (hasNext) {
for (int c = 0; c < nextClipInfo.Length; c++) { for (int c = 0; c < nextClipInfo.Length; c++) {
@ -151,13 +159,13 @@ namespace Spine.Unity {
int c = 0; int c = 0;
for (; c < clipInfo.Length; c++) { for (; c < clipInfo.Length; c++) {
var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue;
animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed <0), stateInfo.loop, null, 1f, MixPose.Current, MixDirection.In); animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed < 0), stateInfo.loop, null, 1f, MixPose.Current, MixDirection.In);
break; break;
} }
// Mix the rest // Mix the rest
for (; c < clipInfo.Length; c++) { for (; c < clipInfo.Length; c++) {
var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue; var info = clipInfo[c]; float weight = info.weight * layerWeight; if (weight == 0) continue;
animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed <0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In); animationTable[NameHashCode(info.clip)].Apply(skeleton, 0, AnimationTime(stateInfo.normalizedTime, info.clip.length, stateInfo.loop, stateInfo.speed < 0), stateInfo.loop, null, weight, MixPose.Current, MixDirection.In);
} }
c = 0; c = 0;
@ -206,21 +214,21 @@ namespace Spine.Unity {
} }
} }
public SpineMecanimTranslator translator; public MecanimTranslator mecanimTranslator;
public override void Initialize (bool overwrite) { public override void Initialize (bool overwrite) {
if (valid && !overwrite) return; if (valid && !overwrite) return;
base.Initialize(overwrite); base.Initialize(overwrite);
if (!valid) return; if (!valid) return;
translator = new SpineMecanimTranslator(); mecanimTranslator = mecanimTranslator ?? new MecanimTranslator();
translator.Initialize(GetComponent<Animator>(), this.skeletonDataAsset); mecanimTranslator.Initialize(GetComponent<Animator>(), this.skeletonDataAsset);
} }
public void Update () { public void Update () {
if (!valid) return; if (!valid) return;
translator.Apply(skeleton, ref layerMixModes); mecanimTranslator.Apply(skeleton);
// UpdateWorldTransform and Bone Callbacks // UpdateWorldTransform and Bone Callbacks
{ {