Merge branch 'master' into dev

This commit is contained in:
NathanSweet 2016-11-26 23:51:56 +01:00
commit 66b5f49f2e
203 changed files with 20367 additions and 11661 deletions

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-as3 works with data exported from Spine 3.4.02.
spine-as3 works with data exported from Spine 3.5.xx.
spine-as3 supports all Spine features, including meshes. If using the `spine.flash` classes for rendering, meshes are not supported.

View File

@ -14,7 +14,7 @@ com.powerflasher.fdt.core.PassManifests=true
com.powerflasher.fdt.core.PassRsls=false
com.powerflasher.fdt.core.PassSwcs=true
com.powerflasher.fdt.core.PlatformType=WEB
com.powerflasher.fdt.core.PlayerVersion=22.0
com.powerflasher.fdt.core.PlayerVersion=23.0
com.powerflasher.fdt.core.ProjectTypeHint=Web
com.powerflasher.fdt.core.Runtime=Flash_Player
com.powerflasher.fdt.core.SdkName=Flex 4.6.0

View File

@ -14,7 +14,7 @@ com.powerflasher.fdt.core.PassManifests=true
com.powerflasher.fdt.core.PassRsls=false
com.powerflasher.fdt.core.PassSwcs=true
com.powerflasher.fdt.core.PlatformType=WEB
com.powerflasher.fdt.core.PlayerVersion=22.0
com.powerflasher.fdt.core.PlayerVersion=23.0
com.powerflasher.fdt.core.ProjectTypeHint=Web
com.powerflasher.fdt.core.Runtime=Flash_Player
com.powerflasher.fdt.core.SdkName=Flex 4.6.0

View File

@ -727,7 +727,7 @@ public class SkeletonJson {
import spine.attachments.MeshAttachment;
internal class LinkedMesh {
class LinkedMesh {
internal var parent:String, skin:String;
internal var slotIndex:int;
internal var mesh:MeshAttachment;

View File

@ -95,10 +95,8 @@ public class AnimationState {
next = next.mixingFrom;
}
continue;
}
updateMixingFrom(current, delta, true);
}
} else {
updateMixingFrom(current, delta, true);
// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
@ -107,6 +105,7 @@ public class AnimationState {
continue;
}
}
updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
@ -114,27 +113,22 @@ public class AnimationState {
queue.drain();
}
private function updateMixingFrom (entry:TrackEntry, delta:Number, canEnd:Boolean):void {
private function updateMixingFrom (entry:TrackEntry, delta:Number):void {
var from:TrackEntry = entry.mixingFrom;
if (from == null) return;
updateMixingFrom(from, delta);
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
if (entry.mixTime >= entry.mixDuration && from.mixingFrom == null && entry.mixTime > 0) {
entry.mixingFrom = null;
queue.end(from);
var newFrom:TrackEntry = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null) return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
var mixingFromDelta:Number = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackLast = from.nextTrackLast;
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * entry.timeScale;
}
public function apply (skeleton:Skeleton):void {
@ -149,7 +143,10 @@ public class AnimationState {
// Apply mixing from entries first.
var mix:Number = current.alpha;
if (current.mixingFrom != null) mix *= applyMixingFrom(current, skeleton);
if (current.mixingFrom != null)
mix *= applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
// Apply current entry.
var animationLast:Number = current.animationLast, animationTime:Number = current.getAnimationTime();
@ -388,11 +385,11 @@ public class AnimationState {
if (current != null) {
if (current.nextTrackLast == -1) {
// Don't mix from an entry that was never applied.
tracks[trackIndex] = null;
tracks[trackIndex] = current.mixingFrom;
queue.interrupt(current);
queue.end(current);
disposeNext(current);
current = null;
current = current.mixingFrom;
} else
disposeNext(current);
}

View File

@ -12,7 +12,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-c works with data exported from Spine 3.4.02.
spine-c works with data exported from Spine 3.5.xx.
spine-c supports all Spine features.

View File

@ -138,6 +138,9 @@ void spAnimationState_clearListenerNotifications(spAnimationState* self);
float spTrackEntry_getAnimationTime (spTrackEntry* entry);
/** Use this to dispose static memory before your app exits to appease your memory leak detector*/
void spAnimationState_disposeStatics ();
#ifdef SPINE_SHORT_NAMES
typedef spEventType EventType;
#define ANIMATION_START SP_ANIMATION_START

View File

@ -611,7 +611,7 @@ void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skelet
if (mixingOut && setupPose) {
const char* attachmentName = slot->data->attachmentName;
spSlot_setAttachment(slot, attachmentName ? 0 : spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName));
spSlot_setAttachment(slot, attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0);
return;
}

View File

@ -33,12 +33,16 @@
#include <limits.h>
static spAnimation* SP_EMPTY_ANIMATION = 0;
void spAnimationState_disposeStatics () {
if (SP_EMPTY_ANIMATION) spAnimation_dispose(SP_EMPTY_ANIMATION);
SP_EMPTY_ANIMATION = 0;
}
/* Forward declaration of some "private" functions so we can keep
the same function order in C as we have method order in Java */
void _spAnimationState_disposeTrackEntry (spTrackEntry* entry);
void _spAnimationState_disposeTrackEntries (spAnimationState* state, spTrackEntry* entry);
void _spAnimationState_updateMixingFrom (spAnimationState* self, spTrackEntry* entry, float delta, int /*boolean*/ canEnd);
void _spAnimationState_updateMixingFrom (spAnimationState* self, spTrackEntry* entry, float delta);
float _spAnimationState_applyMixingFrom (spAnimationState* self, spTrackEntry* entry, spSkeleton* skeleton);
void _spAnimationState_applyRotateTimeline (spAnimationState* self, spTimeline* timeline, spSkeleton* skeleton, float time, float alpha, int /*boolean*/ setupPose, float* timelinesRotation, int i, int /*boolean*/ firstFrame);
void _spAnimationState_queueEvents (spAnimationState* self, spTrackEntry* entry, float animationTime);
@ -67,6 +71,7 @@ _spEventQueue* _spEventQueue_create (_spAnimationState* state) {
void _spEventQueue_free (_spEventQueue* self) {
FREE(self->objects);
FREE(self);
}
void _spEventQueue_ensureCapacity (_spEventQueue* self, int newElements) {
@ -74,7 +79,7 @@ void _spEventQueue_ensureCapacity (_spEventQueue* self, int newElements) {
_spEventQueueItem* newObjects;
self->objectsCapacity <<= 1;
newObjects = CALLOC(_spEventQueueItem, self->objectsCapacity);
memcpy(newObjects, self->objects, self->objectsCount);
memcpy(newObjects, self->objects, sizeof(_spEventQueueItem) * self->objectsCount);
FREE(self->objects);
self->objects = newObjects;
}
@ -152,8 +157,8 @@ void _spEventQueue_drain (_spEventQueue* self) {
if (self->state->super.listener) self->state->super.listener(SUPER(self->state), type, entry, 0);
/* Fall through. */
case SP_ANIMATION_DISPOSE:
if (entry->listener) entry->listener(SUPER(self->state), type, entry, 0);
if (self->state->super.listener) self->state->super.listener(SUPER(self->state), type, entry, 0);
if (entry->listener) entry->listener(SUPER(self->state), SP_ANIMATION_DISPOSE, entry, 0);
if (self->state->super.listener) self->state->super.listener(SUPER(self->state), SP_ANIMATION_DISPOSE, entry, 0);
_spAnimationState_disposeTrackEntry(entry);
break;
case SP_ANIMATION_EVENT:
@ -170,6 +175,9 @@ void _spEventQueue_drain (_spEventQueue* self) {
}
void _spAnimationState_disposeTrackEntry (spTrackEntry* entry) {
if (entry->mixingFrom) _spAnimationState_disposeTrackEntry(entry->mixingFrom);
FREE(entry->timelinesFirst);
FREE(entry->timelinesRotation);
FREE(entry);
}
@ -214,6 +222,7 @@ void spAnimationState_dispose (spAnimationState* self) {
_spEventQueue_free(internal->queue);
FREE(internal->events);
FREE(internal->propertyIDs);
FREE(internal);
}
void spAnimationState_update (spAnimationState* self, float delta) {
@ -253,9 +262,7 @@ void spAnimationState_update (spAnimationState* self, float delta) {
}
continue;
}
_spAnimationState_updateMixingFrom(self, current, delta, 1);
} else {
_spAnimationState_updateMixingFrom(self, current, delta, 1);
/* Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom. */
if (current->trackLast >= current->trackEnd && current->mixingFrom == 0) {
self->tracks[i] = 0;
@ -264,6 +271,7 @@ void spAnimationState_update (spAnimationState* self, float delta) {
continue;
}
}
_spAnimationState_updateMixingFrom(self, current, delta);
current->trackTime += currentDelta;
}
@ -271,30 +279,23 @@ void spAnimationState_update (spAnimationState* self, float delta) {
_spEventQueue_drain(internal->queue);
}
void _spAnimationState_updateMixingFrom (spAnimationState* self, spTrackEntry* entry, float delta, int /*boolean*/ canEnd) {
spTrackEntry* from = entry->mixingFrom;
spTrackEntry* newFrom;
float mixingFromDelta;
void _spAnimationState_updateMixingFrom (spAnimationState* self, spTrackEntry* entry, float delta) {
spTrackEntry* from = entry->mixingFrom;
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
if (!from) return;
_spAnimationState_updateMixingFrom(self, from, delta);
if (canEnd && entry->mixTime >= entry->mixDuration && entry->mixTime > 0) {
if (entry->mixTime >= entry->mixDuration && from->mixingFrom == 0 && entry->mixTime > 0) {
entry->mixingFrom = 0;
_spEventQueue_end(internal->queue, from);
newFrom = from->mixingFrom;
entry->mixingFrom = newFrom;
if (!newFrom) return;
entry->mixTime = from->mixTime;
entry->mixDuration = from->mixDuration;
from = newFrom;
return;
}
from->animationLast = from->nextAnimationLast;
from->trackLast = from->nextTrackLast;
mixingFromDelta = delta * from->timeScale;
from->trackTime += mixingFromDelta;
entry->mixTime += mixingFromDelta;
_spAnimationState_updateMixingFrom(self, from, delta, canEnd && from->alpha == 1);
from->trackTime += delta * from->timeScale;
entry->mixTime += delta * entry->timeScale;
}
void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) {
@ -318,7 +319,10 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) {
/* Apply mixing from entries first. */
mix = current->alpha;
if (current->mixingFrom) mix *= _spAnimationState_applyMixingFrom(self, current, skeleton);
if (current->mixingFrom)
mix *= _spAnimationState_applyMixingFrom(self, current, skeleton);
else if (current->trackTime >= current->trackEnd)
mix = 0;
/* Apply current entry. */
animationLast = current->animationLast; animationTime = spTrackEntry_getAnimationTime(current);
@ -593,11 +597,11 @@ spTrackEntry* spAnimationState_setAnimation (spAnimationState* self, int trackIn
if (current) {
if (current->nextTrackLast == -1) {
/* Don't mix from an entry that was never applied. */
self->tracks[trackIndex] = 0;
self->tracks[trackIndex] = current->mixingFrom;
_spEventQueue_interrupt(internal->queue, current);
_spEventQueue_end(internal->queue, current);
_spAnimationState_disposeNext(self, current);
current = 0;
current = current->mixingFrom;
} else
_spAnimationState_disposeNext(self, current);
}
@ -771,7 +775,7 @@ void _spAnimationState_ensureCapacityPropertyIDs(spAnimationState* self, int cap
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
if (internal->propertyIDsCapacity < capacity) {
int *newPropertyIDs = CALLOC(int, capacity << 1);
memcpy(newPropertyIDs, internal->propertyIDs, internal->propertyIDsCount);
memcpy(newPropertyIDs, internal->propertyIDs, sizeof(int) * internal->propertyIDsCount);
FREE(internal->propertyIDs);
internal->propertyIDs = newPropertyIDs;
internal->propertyIDsCapacity = capacity << 1;
@ -788,6 +792,7 @@ int _spAnimationState_addPropertyID(spAnimationState* self, int id) {
_spAnimationState_ensureCapacityPropertyIDs(self, internal->propertyIDsCount + 1);
internal->propertyIDs[internal->propertyIDsCount] = id;
internal->propertyIDsCount++;
return 1;
}

View File

@ -112,7 +112,7 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/
self->boundingBoxes = MALLOC(spBoundingBoxAttachment*, skeleton->slotsCount);
newPolygons = CALLOC(spPolygon*, skeleton->slotsCount);
memcpy(newPolygons, self->polygons, internal->capacity);
memcpy(newPolygons, self->polygons, sizeof(spPolygon*) * internal->capacity);
FREE(self->polygons);
self->polygons = newPolygons;

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-cocos2d-objc works with data exported from Spine 3.4.02.
spine-cocos2d-objc works with data exported from Spine 3.5.xx.
spine-cocos2d-objc supports all Spine features.

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-cocos2dx works with data exported from Spine 3.4.02.
spine-cocos2dx works with data exported from Spine 3.5.xx.
spine-cocos2dx supports all Spine features.

View File

@ -64,11 +64,11 @@ bool SpineboyExample::init () {
log("%d event: %s, %d, %f, %s", entry->trackIndex, event->data->name, event->intValue, event->floatValue, event->stringValue);
});
skeletonNode->setMix("walk", "jump", 0.2f);
skeletonNode->setMix("jump", "run", 0.2f);
skeletonNode->setMix("walk", "jump", 0.4);
skeletonNode->setMix("jump", "run", 0.4);
skeletonNode->setAnimation(0, "walk", true);
spTrackEntry* jumpEntry = skeletonNode->addAnimation(0, "jump", false, 3);
skeletonNode->addAnimation(0, "run", true);
spTrackEntry* jumpEntry = skeletonNode->addAnimation(0, "jump", false, 1);
skeletonNode->addAnimation(0, "run", true);
skeletonNode->setTrackStartListener(jumpEntry, [] (spTrackEntry* entry) {
log("jumped!");

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-corona works with data exported from Spine 3.4.02.
spine-corona works with data exported from Spine 3.5.xx.
spine-corona supports all Spine features.

View File

@ -61,7 +61,15 @@ function loadSkeleton(atlasFile, jsonFile, x, y, scale, animation, skin)
print(entry.trackIndex.." event: "..entry.animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'")
end
animationState:setAnimationByName(0, animation, true)
if atlasFile == "spineboy.atlas" then
animationStateData:setMix("walk", "jump", 0.4)
animationStateData:setMix("jump", "run", 0.4);
animationState:setAnimationByName(0, "walk", true)
local jumpEntry = animationState:addAnimationByName(0, "jump", false, 3)
animationState:addAnimationByName(0, "run", true, 0)
else
animationState:setAnimationByName(0, animation, true)
end
-- return the skeleton an animation state
return { skeleton = skeleton, state = animationState }

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-csharp works with data exported from Spine 3.5.x.
spine-csharp works with data exported from Spine 3.5.xx.
spine-csharp supports all Spine features.

View File

@ -581,7 +581,7 @@ namespace Spine {
}
float[] frames = this.frames;
if (time < frames[0]) {
if (time < frames[0]) { // Time is before first frame.
if (setupPose) {
attachmentName = slot.data.attachmentName;
slot.Attachment = attachmentName == null ? null : skeleton.GetAttachment(slotIndex, attachmentName);

View File

@ -102,9 +102,7 @@ namespace Spine {
}
continue;
}
UpdateMixingFrom(current, delta, true);
} else {
UpdateMixingFrom(current, delta, true);
// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracksItems[i] = null;
@ -113,6 +111,7 @@ namespace Spine {
continue;
}
}
UpdateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
@ -120,27 +119,22 @@ namespace Spine {
queue.Drain();
}
private void UpdateMixingFrom (TrackEntry entry, float delta, bool canEnd) {
private void UpdateMixingFrom (TrackEntry entry, float delta) {
TrackEntry from = entry.mixingFrom;
if (from == null) return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
UpdateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom == null && entry.mixTime > 0) {
entry.mixingFrom = null;
queue.End(from);
TrackEntry newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null) return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
float mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
UpdateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * entry.timeScale;
}
@ -160,7 +154,10 @@ namespace Spine {
// Apply mixing from entries first.
float mix = current.alpha;
if (current.mixingFrom != null) mix *= ApplyMixingFrom(current, skeleton);
if (current.mixingFrom != null)
mix *= ApplyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd) //
mix = 0; // Set to setup pose the last time the entry will be applied.
// Apply current entry.
float animationLast = current.animationLast, animationTime = current.AnimationTime;
@ -228,7 +225,7 @@ namespace Spine {
if (rotateTimeline != null) {
ApplyRotateTimeline(rotateTimeline, skeleton, animationTime, alpha, setupPose, timelinesRotation, i << 1, firstFrame);
} else {
if (setupPose) {
if (!setupPose) {
if (!attachments && timeline is AttachmentTimeline) continue;
if (!drawOrder && timeline is DrawOrderTimeline) continue;
}
@ -236,7 +233,7 @@ namespace Spine {
}
}
QueueEvents(entry, animationTime);
QueueEvents(from, animationTime);
from.nextAnimationLast = animationTime;
from.nextTrackLast = from.trackTime;
@ -420,11 +417,11 @@ namespace Spine {
if (current != null) {
if (current.nextTrackLast == -1) {
// Don't mix from an entry that was never applied.
tracks.Items[trackIndex] = null;
tracks.Items[trackIndex] = current.mixingFrom;
queue.Interrupt(current);
queue.End(current);
DisposeNext(current);
current = null;
current = current.mixingFrom;
} else {
DisposeNext(current);
}
@ -686,11 +683,11 @@ namespace Spine {
/// <summary>
/// The track time in seconds when this animation will be removed from the track. Defaults to the animation duration for
/// non-looping animations and to <see cref="int.MaxValue"/> for looping animations. If the track end time is reached and no
/// other animations are queued for playback, and mixing from any previous animations is complete, then the track is cleared,
/// leaving skeletons in their previous pose.
/// other animations are queued for playback, and mixing from any previous animations is complete, properties keyed by the animation,
/// are set to the setup pose and the track is cleared.
///
/// It may be desired to use <see cref="AnimationState.AddEmptyAnimation(int, float, float)"/> to mix the skeletons back to the
/// setup pose, rather than leaving them in their previous pose.
/// It may be desired to use <see cref="AnimationState.AddEmptyAnimation(int, float, float)"/> to mix the properties back to the
/// setup pose over time, rather than have it happen instantly.
/// </summary>
public float TrackEnd { get { return trackEnd; } set { trackEnd = value; } }

View File

@ -82,7 +82,7 @@ namespace Spine {
}
if (updateAabb) {
aabbCompute();
AabbCompute();
} else {
minX = int.MinValue;
minY = int.MinValue;
@ -91,7 +91,7 @@ namespace Spine {
}
}
private void aabbCompute () {
private void AabbCompute () {
float minX = int.MaxValue, minY = int.MaxValue, maxX = int.MinValue, maxY = int.MinValue;
ExposedList<Polygon> polygons = Polygons;
for (int i = 0, n = polygons.Count; i < n; i++) {
@ -204,7 +204,7 @@ namespace Spine {
return false;
}
public Polygon getPolygon (BoundingBoxAttachment attachment) {
public Polygon GetPolygon (BoundingBoxAttachment attachment) {
int index = BoundingBoxes.IndexOf(attachment);
return index == -1 ? null : Polygons.Items[index];
}

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-libgdx works with data exported from Spine 3.4.02.
spine-libgdx works with data exported from Spine 3.5.xx.
spine-libgdx supports all Spine features and is the reference runtime implementation.

View File

@ -650,8 +650,8 @@ public class AnimationStateTests {
expect(0, "end", 0.8f, 0.9f), //
expect(0, "dispose", 0.8f, 0.9f), //
expect(-1, "end", 0.1f, 0.9f), //
expect(-1, "dispose", 0.1f, 0.9f) //
expect(-1, "end", 0.2f, 1), //
expect(-1, "dispose", 0.2f, 1) //
);
state.addAnimation(0, "events1", false, 0);
run(0.1f, 10, new TestListener() {

View File

@ -108,9 +108,7 @@ public class AnimationState {
}
continue;
}
updateMixingFrom(current, delta, true);
} else {
updateMixingFrom(current, delta, true);
// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks.set(i, null);
@ -119,6 +117,7 @@ public class AnimationState {
continue;
}
}
updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
@ -126,27 +125,22 @@ public class AnimationState {
queue.drain();
}
private void updateMixingFrom (TrackEntry entry, float delta, boolean canEnd) {
private void updateMixingFrom (TrackEntry entry, float delta) {
TrackEntry from = entry.mixingFrom;
if (from == null) return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom == null && entry.mixTime > 0) {
entry.mixingFrom = null;
queue.end(from);
TrackEntry newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null) return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
float mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * entry.timeScale;
}
/** Poses the skeleton using the track entry animations. There are no side effects other than invoking listeners, so the
@ -163,7 +157,10 @@ public class AnimationState {
// Apply mixing from entries first.
float mix = current.alpha;
if (current.mixingFrom != null) mix *= applyMixingFrom(current, skeleton);
if (current.mixingFrom != null)
mix *= applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd) //
mix = 0; // Set to setup pose the last time the entry will be applied.
// Apply current entry.
float animationLast = current.animationLast, animationTime = current.getAnimationTime();
@ -413,11 +410,11 @@ public class AnimationState {
if (current != null) {
if (current.nextTrackLast == -1) {
// Don't mix from an entry that was never applied.
tracks.set(trackIndex, null);
tracks.set(trackIndex, current.mixingFrom);
queue.interrupt(current);
queue.end(current);
disposeNext(current);
current = null;
current = current.mixingFrom;
} else
disposeNext(current);
}
@ -755,10 +752,10 @@ public class AnimationState {
/** The track time in seconds when this animation will be removed from the track. Defaults to the animation
* {@link Animation#duration} for non-looping animations and the highest float possible for looping animations. If the track
* end time is reached, no other animations are queued for playback, and mixing from any previous animations is complete,
* then the track is cleared, leaving skeletons in their previous pose.
* then the properties keyed by the animation are set to the setup pose and the track is cleared.
* <p>
* It may be desired to use {@link AnimationState#addEmptyAnimation(int, float, float)} to mix the skeletons back to the
* setup pose, rather than leaving them in their previous pose. */
* It may be desired to use {@link AnimationState#addEmptyAnimation(int, float, float)} to mix the properties back to the
* setup pose over time, rather than have it happen instantly. */
public float getTrackEnd () {
return trackEnd;
}

View File

@ -51,7 +51,7 @@ public class SkeletonData {
String version, hash;
// Nonessential.
float fps;
float fps = 30;
String imagesPath;
// --- Bones.

View File

@ -117,7 +117,7 @@ public class SkeletonJson {
skeletonData.version = skeletonMap.getString("spine", null);
skeletonData.width = skeletonMap.getFloat("width", 0);
skeletonData.height = skeletonMap.getFloat("height", 0);
skeletonData.fps = skeletonMap.getFloat("fps", 0);
skeletonData.fps = skeletonMap.getFloat("fps", 30);
skeletonData.imagesPath = skeletonMap.getString("images", null);
}

View File

@ -227,10 +227,8 @@ public class SkeletonViewer extends ApplicationAdapter {
state.setEmptyAnimation(track, 0);
entry = state.addAnimation(track, ui.animationList.getSelected(), ui.loopCheckbox.isChecked(), 0);
entry.setMixDuration(ui.mixSlider.getValue());
entry.setTrackEnd(Integer.MAX_VALUE);
} else {
entry = state.setAnimation(track, ui.animationList.getSelected(), ui.loopCheckbox.isChecked());
entry.setTrackEnd(Integer.MAX_VALUE);
}
entry.setAlpha(ui.alphaSlider.getValue());
}
@ -597,7 +595,10 @@ public class SkeletonViewer extends ApplicationAdapter {
int track = trackButtons.getCheckedIndex();
if (track > 0) {
TrackEntry current = state.getCurrent(track);
if (current != null) current.setAlpha(alphaSlider.getValue());
if (current != null) {
current.setAlpha(alphaSlider.getValue());
current.resetRotationDirections();
}
}
}
});
@ -702,6 +703,12 @@ public class SkeletonViewer extends ApplicationAdapter {
}
void render () {
if (state.getCurrent(ui.trackButtons.getCheckedIndex()) == null) {
ui.animationList.getSelection().setProgrammaticChangeEvents(false);
ui.animationList.setSelected(null);
ui.animationList.getSelection().setProgrammaticChangeEvents(true);
}
statusLabel.pack();
if (minimizeButton.isChecked())
statusLabel.setPosition(10, 25, Align.bottom | Align.left);

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-love works with data exported from Spine 3.4.02.
spine-love works with data exported from Spine 3.5.xx.
spine-love supports all Spine features except for blending modes other than normal.

View File

@ -581,7 +581,7 @@ function Animation.AttachmentTimeline.new (frameCount)
end
function self:getPropertyId ()
return Timeline.attachment * SHL_24 + self.slotIndex
return TimelineType.attachment * SHL_24 + self.slotIndex
end
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
@ -592,7 +592,7 @@ function Animation.AttachmentTimeline.new (frameCount)
if not attachmentName then
slot:setAttachment(nil)
else
skeleton:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
slot:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
end
return;
end
@ -604,7 +604,7 @@ function Animation.AttachmentTimeline.new (frameCount)
if not attachmentName then
slot:setAttachment(nil)
else
skeleton:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
slot:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
end
end
return
@ -619,9 +619,9 @@ function Animation.AttachmentTimeline.new (frameCount)
attachmentName = self.attachmentNames[frameIndex]
if not attachmentName then
skeleton.slots[self.slotIndex]:setAttachment(nil)
slot:setAttachment(nil)
else
skeleton.slots[self.slotIndex]:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
slot:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
end
end
@ -767,7 +767,7 @@ function Animation.EventTimeline.new (frameCount)
}
function self:getPropertyId ()
return Timeline.event * SHL_24
return TimelineType.event * SHL_24
end
function self:getFrameCount ()
@ -824,7 +824,7 @@ function Animation.DrawOrderTimeline.new (frameCount)
}
function self:getPropertyId ()
return Timeline.drawOrder * SHL_24
return TimelineType.drawOrder * SHL_24
end
function self:getFrameCount ()

View File

@ -232,26 +232,22 @@ function AnimationState:update (delta)
end
if not skip then
local next = current.next
if next then
local _next = current.next
if _next then
-- When the next entry's delay is passed, change to the next entry, preserving leftover time.
local nextTime = current.trackLast - next.delay
local nextTime = current.trackLast - _next.delay
if nextTime >= 0 then
next.delay = 0
next.trackTime = nextTime + delta * next.timeScale
_next.delay = 0
_next.trackTime = nextTime + delta * _next.timeScale
current.trackTime = current.trackTime + currentDelta
self:setCurrent(i, next)
while next.mixingFrom do
next.mixTime = next.mixTime + currentDelta
next = next.mixingFrom
self:setCurrent(i, _next)
while _next.mixingFrom do
_next.mixTime = _next.mixTime + currentDelta
_next = _next.mixingFrom
end
skip = true
end
if not skip then
self:updateMixingFrom(current, delta, true);
end
else
self:updateMixingFrom(current, delta, true)
-- Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.
if current.trackLast >= current.trackEnd and current.mixingFrom == nil then
tracks[i] = nil
@ -261,7 +257,10 @@ function AnimationState:update (delta)
end
end
if not skip then current.trackTime = current.trackTime + currentDelta end
if not skip then
self:updateMixingFrom(current, delta)
current.trackTime = current.trackTime + currentDelta
end
end
end
end
@ -269,28 +268,23 @@ function AnimationState:update (delta)
queue:drain()
end
function AnimationState:updateMixingFrom (entry, delta, canEnd)
function AnimationState:updateMixingFrom (entry, delta)
local from = entry.mixingFrom
if from == nil then return end
self:updateMixingFrom(from, delta)
local queue = self.queue
if canEnd and entry.mixTime >= entry.mixDuration and entry.mixTime > 0 then
if entry.mixTime >= entry.mixDuration and from.mixingFrom == nil and entry.mixTime > 0 then
entry.mixingFrom = null
queue:_end(from)
local newFrom = from.mixingFrom
entry.mixingFrom = newFrom
if newFrom == nil then return end
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return
end
from.animationLast = from.nextAnimationLast
from.trackLast = from.nextTrackLast
local mixingFromDelta = delta * from.timeScale
from.trackTime = from.trackTime + mixingFromDelta;
entry.mixTime = entry.mixTime + mixingFromDelta;
self:updateMixingFrom(from, delta, canEnd and from.alpha == 1)
from.trackTime = from.trackTime + delta * from.timeScale;
entry.mixTime = entry.mixTime + delta * entry.timeScale;
end
function AnimationState:apply (skeleton)
@ -305,7 +299,11 @@ function AnimationState:apply (skeleton)
if not (current == nil or current.delay > 0) then
-- Apply mixing from entries first.
local mix = current.alpha
if current.mixingFrom then mix = mix * self:applyMixingFrom(current, skeleton) end
if current.mixingFrom then
mix = mix * self:applyMixingFrom(current, skeleton)
elseif current.trackTime >= current.trackEnd then
mix = 0
end
-- Apply current entry.
local animationLast = current.animationLast
@ -563,11 +561,11 @@ function AnimationState:setAnimation (trackIndex, animation, loop)
if current then
if current.nextTrackLast == -1 then
-- Don't mix from an entry that was never applied.
tracks[trackIndex] = nil
tracks[trackIndex] = current.mixingFrom
queue:interrupt(current)
queue:_end(current)
self:disposeNext(current)
current = nil
current = current.mixingFrom
else
self:disposeNext(current)
end
@ -708,9 +706,9 @@ function AnimationState:_animationsChanged ()
end
-- Set timelinesFirst for all entries, from lowest track to highest.
local i = 1
local n = highest
while i <= n do
local i = 0
local n = highest + 1
while i < n do
local entry = tracks[i]
if entry then
self:setTimelinesFirst(entry);
@ -719,7 +717,7 @@ function AnimationState:_animationsChanged ()
end
i = i + 1
end
while i <= n do
while i < n do
local entry = tracks[i]
if entry then self:checkTimelinesFirst(entry) end
i = i + 1
@ -756,6 +754,7 @@ function AnimationState:checkTimelinesUsage (entry, usageArray)
local n = #entry.animation.timelines
local timelines = entry.animation.timelines
local usage = usageArray
local i = 1
while i <= n do
local id = "" .. timelines[i]:getPropertyId()
local contained = propertyIDs[id] == id

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-lua works with data exported from Spine 3.4.02.
spine-lua works with data exported from Spine 3.5.xx.
spine-lua supports all Spine features.

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-monogame works with data exported from Spine 3.5.x.
spine-monogame works with data exported from Spine 3.5.xx.
spine-monogame supports all Spine features.

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-sfml works with data exported from Spine 3.4.02.
spine-sfml works with data exported from Spine 3.5.xx.
spine-sfml supports all Spine features.

View File

@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-starling works with data exported from Spine 3.4.02.
spine-starling works with data exported from Spine 3.5.xx.
spine-starling supports all Spine features.

View File

@ -14,7 +14,7 @@ com.powerflasher.fdt.core.PassManifests=true
com.powerflasher.fdt.core.PassRsls=false
com.powerflasher.fdt.core.PassSwcs=true
com.powerflasher.fdt.core.PlatformType=WEB
com.powerflasher.fdt.core.PlayerVersion=22.0
com.powerflasher.fdt.core.PlayerVersion=23.0
com.powerflasher.fdt.core.ProjectTypeHint=Web
com.powerflasher.fdt.core.Runtime=Flash_Player
com.powerflasher.fdt.core.SdkName=Flex 4.6.0

View File

@ -64,9 +64,9 @@ public class SpineboyExample extends Sprite {
var skeletonData:SkeletonData = json.readSkeletonData(new SpineboyJson());
var stateData:AnimationStateData = new AnimationStateData(skeletonData);
stateData.setMixByName("run", "jump", 0.2);
stateData.setMixByName("run", "jump", 0.4);
stateData.setMixByName("jump", "run", 0.4);
stateData.setMixByName("jump", "jump", 0.2);
stateData.setMixByName("jump", "jump", 0.4);
skeleton = new SkeletonAnimation(skeletonData, stateData);
skeleton.x = 400;

View File

@ -18,7 +18,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
## Spine version
spine-ts works with data exported from Spine 3.4.02.
spine-ts works with data exported from Spine 3.5.xx.
spine-ts WebGL & Widget backends supports all Spine features. The spine-ts Canvas backend does not support color tinting, mesh attachments or shearing. Mesh attachments are supported by setting `spine.canvas.SkeletonRenderer.useTriangleRendering` to true. Note that this method is slow and may lead to artifacts on some browsers. The spine-ts THREE.JS backend does not support color tinting and blend modes. The THREE.JS backend provides `SkeletonMesh.zOffset` to avoid z-fighting. Adjust to your near/far plane settings.

View File

@ -302,7 +302,7 @@ declare module spine {
trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData);
update(delta: number): void;
updateMixingFrom(entry: TrackEntry, delta: number, canEnd: boolean): void;
updateMixingFrom(entry: TrackEntry, delta: number): void;
apply(skeleton: Skeleton): void;
applyMixingFrom(entry: TrackEntry, skeleton: Skeleton): number;
applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;

View File

@ -1330,10 +1330,8 @@ var spine;
}
continue;
}
this.updateMixingFrom(current, delta, true);
}
else {
this.updateMixingFrom(current, delta, true);
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
this.queue.end(current);
@ -1341,30 +1339,25 @@ var spine;
continue;
}
}
this.updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
this.queue.drain();
};
AnimationState.prototype.updateMixingFrom = function (entry, delta, canEnd) {
AnimationState.prototype.updateMixingFrom = function (entry, delta) {
var from = entry.mixingFrom;
if (from == null)
return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
this.updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {
entry.mixingFrom = null;
this.queue.end(from);
var newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null)
return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
var mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
this.updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * from.timeScale;
};
AnimationState.prototype.apply = function (skeleton) {
if (skeleton == null)
@ -1380,6 +1373,8 @@ var spine;
var mix = current.alpha;
if (current.mixingFrom != null)
mix *= this.applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
var animationLast = current.animationLast, animationTime = current.getAnimationTime();
var timelineCount = current.animation.timelines.length;
var timelines = current.animation.timelines;
@ -1591,11 +1586,11 @@ var spine;
var current = this.expandToIndex(trackIndex);
if (current != null) {
if (current.nextTrackLast == -1) {
this.tracks[trackIndex] = null;
this.tracks[trackIndex] = current.mixingFrom;
this.queue.interrupt(current);
this.queue.end(current);
this.disposeNext(current);
current = null;
current = current.mixingFrom;
}
else
this.disposeNext(current);

File diff suppressed because one or more lines are too long

View File

@ -302,7 +302,7 @@ declare module spine {
trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData);
update(delta: number): void;
updateMixingFrom(entry: TrackEntry, delta: number, canEnd: boolean): void;
updateMixingFrom(entry: TrackEntry, delta: number): void;
apply(skeleton: Skeleton): void;
applyMixingFrom(entry: TrackEntry, skeleton: Skeleton): number;
applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;

View File

@ -1330,10 +1330,8 @@ var spine;
}
continue;
}
this.updateMixingFrom(current, delta, true);
}
else {
this.updateMixingFrom(current, delta, true);
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
this.queue.end(current);
@ -1341,30 +1339,25 @@ var spine;
continue;
}
}
this.updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
this.queue.drain();
};
AnimationState.prototype.updateMixingFrom = function (entry, delta, canEnd) {
AnimationState.prototype.updateMixingFrom = function (entry, delta) {
var from = entry.mixingFrom;
if (from == null)
return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
this.updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {
entry.mixingFrom = null;
this.queue.end(from);
var newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null)
return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
var mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
this.updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * from.timeScale;
};
AnimationState.prototype.apply = function (skeleton) {
if (skeleton == null)
@ -1380,6 +1373,8 @@ var spine;
var mix = current.alpha;
if (current.mixingFrom != null)
mix *= this.applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
var animationLast = current.animationLast, animationTime = current.getAnimationTime();
var timelineCount = current.animation.timelines.length;
var timelines = current.animation.timelines;
@ -1591,11 +1586,11 @@ var spine;
var current = this.expandToIndex(trackIndex);
if (current != null) {
if (current.nextTrackLast == -1) {
this.tracks[trackIndex] = null;
this.tracks[trackIndex] = current.mixingFrom;
this.queue.interrupt(current);
this.queue.end(current);
this.disposeNext(current);
current = null;
current = current.mixingFrom;
}
else
this.disposeNext(current);

File diff suppressed because one or more lines are too long

View File

@ -214,7 +214,7 @@ declare module spine {
trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData);
update(delta: number): void;
updateMixingFrom(entry: TrackEntry, delta: number, canEnd: boolean): void;
updateMixingFrom(entry: TrackEntry, delta: number): void;
apply(skeleton: Skeleton): void;
applyMixingFrom(entry: TrackEntry, skeleton: Skeleton): number;
applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;

View File

@ -983,10 +983,8 @@ var spine;
}
continue;
}
this.updateMixingFrom(current, delta, true);
}
else {
this.updateMixingFrom(current, delta, true);
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
this.queue.end(current);
@ -994,30 +992,25 @@ var spine;
continue;
}
}
this.updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
this.queue.drain();
};
AnimationState.prototype.updateMixingFrom = function (entry, delta, canEnd) {
AnimationState.prototype.updateMixingFrom = function (entry, delta) {
var from = entry.mixingFrom;
if (from == null)
return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
this.updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {
entry.mixingFrom = null;
this.queue.end(from);
var newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null)
return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
var mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
this.updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * from.timeScale;
};
AnimationState.prototype.apply = function (skeleton) {
if (skeleton == null)
@ -1033,6 +1026,8 @@ var spine;
var mix = current.alpha;
if (current.mixingFrom != null)
mix *= this.applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
var animationLast = current.animationLast, animationTime = current.getAnimationTime();
var timelineCount = current.animation.timelines.length;
var timelines = current.animation.timelines;
@ -1244,11 +1239,11 @@ var spine;
var current = this.expandToIndex(trackIndex);
if (current != null) {
if (current.nextTrackLast == -1) {
this.tracks[trackIndex] = null;
this.tracks[trackIndex] = current.mixingFrom;
this.queue.interrupt(current);
this.queue.end(current);
this.disposeNext(current);
current = null;
current = current.mixingFrom;
}
else
this.disposeNext(current);

File diff suppressed because one or more lines are too long

View File

@ -214,7 +214,7 @@ declare module spine {
trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData);
update(delta: number): void;
updateMixingFrom(entry: TrackEntry, delta: number, canEnd: boolean): void;
updateMixingFrom(entry: TrackEntry, delta: number): void;
apply(skeleton: Skeleton): void;
applyMixingFrom(entry: TrackEntry, skeleton: Skeleton): number;
applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;

View File

@ -983,10 +983,8 @@ var spine;
}
continue;
}
this.updateMixingFrom(current, delta, true);
}
else {
this.updateMixingFrom(current, delta, true);
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
this.queue.end(current);
@ -994,30 +992,25 @@ var spine;
continue;
}
}
this.updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
this.queue.drain();
};
AnimationState.prototype.updateMixingFrom = function (entry, delta, canEnd) {
AnimationState.prototype.updateMixingFrom = function (entry, delta) {
var from = entry.mixingFrom;
if (from == null)
return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
this.updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {
entry.mixingFrom = null;
this.queue.end(from);
var newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null)
return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
var mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
this.updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * from.timeScale;
};
AnimationState.prototype.apply = function (skeleton) {
if (skeleton == null)
@ -1033,6 +1026,8 @@ var spine;
var mix = current.alpha;
if (current.mixingFrom != null)
mix *= this.applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
var animationLast = current.animationLast, animationTime = current.getAnimationTime();
var timelineCount = current.animation.timelines.length;
var timelines = current.animation.timelines;
@ -1244,11 +1239,11 @@ var spine;
var current = this.expandToIndex(trackIndex);
if (current != null) {
if (current.nextTrackLast == -1) {
this.tracks[trackIndex] = null;
this.tracks[trackIndex] = current.mixingFrom;
this.queue.interrupt(current);
this.queue.end(current);
this.disposeNext(current);
current = null;
current = current.mixingFrom;
}
else
this.disposeNext(current);

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -214,7 +214,7 @@ declare module spine {
trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData);
update(delta: number): void;
updateMixingFrom(entry: TrackEntry, delta: number, canEnd: boolean): void;
updateMixingFrom(entry: TrackEntry, delta: number): void;
apply(skeleton: Skeleton): void;
applyMixingFrom(entry: TrackEntry, skeleton: Skeleton): number;
applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, setupPose: boolean, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;

View File

@ -983,10 +983,8 @@ var spine;
}
continue;
}
this.updateMixingFrom(current, delta, true);
}
else {
this.updateMixingFrom(current, delta, true);
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
this.queue.end(current);
@ -994,30 +992,25 @@ var spine;
continue;
}
}
this.updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
this.queue.drain();
};
AnimationState.prototype.updateMixingFrom = function (entry, delta, canEnd) {
AnimationState.prototype.updateMixingFrom = function (entry, delta) {
var from = entry.mixingFrom;
if (from == null)
return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
this.updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {
entry.mixingFrom = null;
this.queue.end(from);
var newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null)
return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
var mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
this.updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * from.timeScale;
};
AnimationState.prototype.apply = function (skeleton) {
if (skeleton == null)
@ -1033,6 +1026,8 @@ var spine;
var mix = current.alpha;
if (current.mixingFrom != null)
mix *= this.applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
var animationLast = current.animationLast, animationTime = current.getAnimationTime();
var timelineCount = current.animation.timelines.length;
var timelines = current.animation.timelines;
@ -1244,11 +1239,11 @@ var spine;
var current = this.expandToIndex(trackIndex);
if (current != null) {
if (current.nextTrackLast == -1) {
this.tracks[trackIndex] = null;
this.tracks[trackIndex] = current.mixingFrom;
this.queue.interrupt(current);
this.queue.end(current);
this.disposeNext(current);
current = null;
current = current.mixingFrom;
}
else
this.disposeNext(current);

File diff suppressed because one or more lines are too long

View File

@ -80,10 +80,8 @@ module spine {
next = next.mixingFrom;
}
continue;
}
this.updateMixingFrom(current, delta, true);
} else {
this.updateMixingFrom(current, delta, true);
}
} else {
// Clear the track when there is no next entry, the track end time is reached, and there is no mixingFrom.
if (current.trackLast >= current.trackEnd && current.mixingFrom == null) {
tracks[i] = null;
@ -92,6 +90,7 @@ module spine {
continue;
}
}
this.updateMixingFrom(current, delta);
current.trackTime += currentDelta;
}
@ -99,27 +98,22 @@ module spine {
this.queue.drain();
}
updateMixingFrom (entry: TrackEntry, delta: number, canEnd: boolean) {
updateMixingFrom (entry: TrackEntry, delta: number) {
let from = entry.mixingFrom;
if (from == null) return;
if (canEnd && entry.mixTime >= entry.mixDuration && entry.mixTime > 0) {
this.updateMixingFrom(from, delta);
if (entry.mixTime >= entry.mixDuration && from.mixingFrom != null && entry.mixTime > 0) {
entry.mixingFrom = null;
this.queue.end(from);
let newFrom = from.mixingFrom;
entry.mixingFrom = newFrom;
if (newFrom == null) return;
entry.mixTime = from.mixTime;
entry.mixDuration = from.mixDuration;
from = newFrom;
return;
}
from.animationLast = from.nextAnimationLast;
from.trackLast = from.nextTrackLast;
let mixingFromDelta = delta * from.timeScale;
from.trackTime += mixingFromDelta;
entry.mixTime += mixingFromDelta;
this.updateMixingFrom(from, delta, canEnd && from.alpha == 1);
from.trackLast = from.nextTrackLast;
from.trackTime += delta * from.timeScale;
entry.mixTime += delta * from.timeScale;
}
apply (skeleton: Skeleton) {
@ -135,7 +129,10 @@ module spine {
// Apply mixing from entries first.
let mix = current.alpha;
if (current.mixingFrom != null) mix *= this.applyMixingFrom(current, skeleton);
if (current.mixingFrom != null)
mix *= this.applyMixingFrom(current, skeleton);
else if (current.trackTime >= current.trackEnd)
mix = 0;
// Apply current entry.
let animationLast = current.animationLast, animationTime = current.getAnimationTime();
@ -369,11 +366,11 @@ module spine {
if (current != null) {
if (current.nextTrackLast == -1) {
// Don't mix from an entry that was never applied.
this.tracks[trackIndex] = null;
this.tracks[trackIndex] = current.mixingFrom;
this.queue.interrupt(current);
this.queue.end(current);
this.disposeNext(current);
current = null;
current = current.mixingFrom;
} else
this.disposeNext(current);
}

View File

@ -116,8 +116,17 @@ function loadSkeleton (name, initialAnimation, premultipliedAlpha, skin) {
var bounds = calculateBounds(skeleton);
// Create an AnimationState, and set the initial animation in looping mode.
var animationState = new spine.AnimationState(new spine.AnimationStateData(skeleton.data));
animationState.setAnimation(0, initialAnimation, true);
animationStateData = new spine.AnimationStateData(skeleton.data);
var animationState = new spine.AnimationState(animationStateData);
if (name == "spineboy") {
animationStateData.setMix("walk", "jump", 0.4)
animationStateData.setMix("jump", "run", 0.4);
animationState.setAnimation(0, "walk", true);
var jumpEntry = animationState.addAnimation(0, "jump", false, 3);
animationState.addAnimation(0, "run", true, 0);
} else {
animationState.setAnimation(0, initialAnimation, true);
}
animationState.addListener({
start: function(track) {
console.log("Animation on track " + track.trackIndex + " started");

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -111,6 +116,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 189134935}
m_Father: {fileID: 289700665}
@ -145,6 +151,7 @@ MonoBehaviour:
startingLoop: 1
timeScale: 1
freeze: 0
unscaledTime: 0
--- !u!222 &57002146
CanvasRenderer:
m_ObjectHideFlags: 0
@ -177,6 +184,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 57002144}
m_RootOrder: 0
@ -307,6 +315,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 941001663}
- {fileID: 774800194}
@ -341,6 +350,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 57002144}
- {fileID: 1384013133}
@ -348,7 +358,7 @@ RectTransform:
m_RootOrder: 0
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_AnchoredPosition: {x: 0.000004069, y: 0}
m_SizeDelta: {x: 0, y: 1872}
m_Pivot: {x: 0, y: 1}
--- !u!1 &611702901
@ -434,6 +444,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
@ -463,6 +474,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 249902688}
m_RootOrder: 1
@ -541,6 +553,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1351078838}
m_Father: {fileID: 941001663}
@ -588,7 +601,7 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 1918252544}
m_HandleRect: {fileID: 1918252543}
m_Direction: 0
m_Value: 1
m_Value: 0
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
@ -656,6 +669,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 2133858527}
- {fileID: 852403708}
@ -757,6 +771,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1384013133}
m_RootOrder: 0
@ -828,6 +843,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1918252543}
m_Father: {fileID: 852403708}
@ -863,6 +879,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1066372096}
m_Father: {fileID: 289700665}
@ -897,6 +914,7 @@ MonoBehaviour:
startingLoop: 1
timeScale: 1
freeze: 0
unscaledTime: 0
--- !u!222 &1384013135
CanvasRenderer:
m_ObjectHideFlags: 0
@ -930,6 +948,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1582800778}
m_Father: {fileID: 941001663}
@ -977,8 +996,8 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 2091633436}
m_HandleRect: {fileID: 2091633435}
m_Direction: 2
m_Value: 0
m_Size: 1
m_Value: 1
m_Size: 0.2719017
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -1042,6 +1061,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 2091633435}
m_Father: {fileID: 1428602577}
@ -1109,6 +1129,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
@ -1138,6 +1159,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1351078838}
m_RootOrder: 0
@ -1205,6 +1227,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1582800778}
m_RootOrder: 0
@ -1273,6 +1296,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 289700665}
m_Father: {fileID: 941001663}

View File

@ -31,188 +31,174 @@
// Contributed by: Mitch Thompson
using UnityEngine;
using System.Collections;
using Spine.Unity;
[RequireComponent(typeof(CharacterController))]
public class BasicPlatformerController : MonoBehaviour {
namespace Spine.Unity.Examples {
[RequireComponent(typeof(CharacterController))]
public class BasicPlatformerController : MonoBehaviour {
#if UNITY_4_5
[Header("Controls")]
#endif
public string XAxis = "Horizontal";
public string YAxis = "Vertical";
public string JumpButton = "Jump";
[Header("Controls")]
public string XAxis = "Horizontal";
public string YAxis = "Vertical";
public string JumpButton = "Jump";
#if UNITY_4_5
[Header("Moving")]
#endif
public float walkSpeed = 4;
public float runSpeed = 10;
public float gravity = 65;
[Header("Moving")]
public float walkSpeed = 4;
public float runSpeed = 10;
public float gravity = 65;
#if UNITY_4_5
[Header("Jumping")]
#endif
public float jumpSpeed = 25;
public float jumpDuration = 0.5f;
public float jumpInterruptFactor = 100;
public float forceCrouchVelocity = 25;
public float forceCrouchDuration = 0.5f;
[Header("Jumping")]
public float jumpSpeed = 25;
public float jumpDuration = 0.5f;
public float jumpInterruptFactor = 100;
public float forceCrouchVelocity = 25;
public float forceCrouchDuration = 0.5f;
#if UNITY_4_5
[Header("Graphics")]
#endif
public Transform graphicsRoot;
public SkeletonAnimation skeletonAnimation;
[Header("Graphics")]
public Transform graphicsRoot;
public SkeletonAnimation skeletonAnimation;
#if UNITY_4_5
[Header("Animation")]
#endif
[SpineAnimation(dataField: "skeletonAnimation")]
public string walkName = "Walk";
[SpineAnimation(dataField: "skeletonAnimation")]
public string runName = "Run";
[SpineAnimation(dataField: "skeletonAnimation")]
public string idleName = "Idle";
[SpineAnimation(dataField: "skeletonAnimation")]
public string jumpName = "Jump";
[SpineAnimation(dataField: "skeletonAnimation")]
public string fallName = "Fall";
[SpineAnimation(dataField: "skeletonAnimation")]
public string crouchName = "Crouch";
[Header("Animation")]
[SpineAnimation(dataField: "skeletonAnimation")]
public string walkName = "Walk";
[SpineAnimation(dataField: "skeletonAnimation")]
public string runName = "Run";
[SpineAnimation(dataField: "skeletonAnimation")]
public string idleName = "Idle";
[SpineAnimation(dataField: "skeletonAnimation")]
public string jumpName = "Jump";
[SpineAnimation(dataField: "skeletonAnimation")]
public string fallName = "Fall";
[SpineAnimation(dataField: "skeletonAnimation")]
public string crouchName = "Crouch";
#if UNITY_4_5
[Header("Audio")]
#endif
public AudioSource jumpAudioSource;
public AudioSource hardfallAudioSource;
public AudioSource footstepAudioSource;
[SpineEvent]
public string footstepEventName = "Footstep";
CharacterController controller;
Vector2 velocity = Vector2.zero;
Vector2 lastVelocity = Vector2.zero;
bool lastGrounded = false;
float jumpEndTime = 0;
bool jumpInterrupt = false;
float forceCrouchEndTime;
Quaternion flippedRotation = Quaternion.Euler(0, 180, 0);
[Header("Audio")]
public AudioSource jumpAudioSource;
public AudioSource hardfallAudioSource;
public AudioSource footstepAudioSource;
[SpineEvent]
public string footstepEventName = "Footstep";
CharacterController controller;
Vector2 velocity = Vector2.zero;
Vector2 lastVelocity = Vector2.zero;
bool lastGrounded = false;
float jumpEndTime = 0;
bool jumpInterrupt = false;
float forceCrouchEndTime;
Quaternion flippedRotation = Quaternion.Euler(0, 180, 0);
void Awake () {
controller = GetComponent<CharacterController>();
}
void Start () {
// Register a callback for Spine Events (in this case, Footstep)
skeletonAnimation.state.Event += HandleEvent;
}
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
// Play some sound if footstep event fired
if (e.Data.Name == footstepEventName) {
footstepAudioSource.Stop();
footstepAudioSource.pitch = GetRandomPitch(0.2f);
footstepAudioSource.Play();
}
}
void Update () {
//control inputs
float x = Input.GetAxis(XAxis);
float y = Input.GetAxis(YAxis);
//check for force crouch
bool crouching = (controller.isGrounded && y < -0.5f) || (forceCrouchEndTime > Time.time);
velocity.x = 0;
//Calculate control velocity
if (!crouching) {
if (Input.GetButtonDown(JumpButton) && controller.isGrounded) {
//jump
jumpAudioSource.Stop();
jumpAudioSource.Play();
velocity.y = jumpSpeed;
jumpEndTime = Time.time + jumpDuration;
} else if (Time.time < jumpEndTime && Input.GetButtonUp(JumpButton)) {
jumpInterrupt = true;
}
if (x != 0) {
//walk or run
velocity.x = Mathf.Abs(x) > 0.6f ? runSpeed : walkSpeed;
velocity.x *= Mathf.Sign(x);
}
if (jumpInterrupt) {
//interrupt jump and smoothly cut Y velocity
if (velocity.y > 0) {
velocity.y = Mathf.MoveTowards(velocity.y, 0, Time.deltaTime * 100);
} else {
jumpInterrupt = false;
}
}
void Awake () {
controller = GetComponent<CharacterController>();
}
//apply gravity F = mA (Learn it, love it, live it)
velocity.y -= gravity * Time.deltaTime;
//move
controller.Move(new Vector3(velocity.x, velocity.y, 0) * Time.deltaTime);
if (controller.isGrounded) {
//cancel out Y velocity if on ground
velocity.y = -gravity * Time.deltaTime;
jumpInterrupt = false;
void Start () {
// Register a callback for Spine Events (in this case, Footstep)
skeletonAnimation.state.Event += HandleEvent;
}
Vector2 deltaVelocity = lastVelocity - velocity;
if (!lastGrounded && controller.isGrounded) {
//detect hard fall
if ((gravity * Time.deltaTime) - deltaVelocity.y > forceCrouchVelocity) {
forceCrouchEndTime = Time.time + forceCrouchDuration;
hardfallAudioSource.Play();
} else {
//play footstep audio if light fall because why not
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
// Play some sound if footstep event fired
if (e.Data.Name == footstepEventName) {
footstepAudioSource.Stop();
footstepAudioSource.pitch = GetRandomPitch(0.2f);
footstepAudioSource.Play();
}
}
//graphics updates
if (controller.isGrounded) {
if (crouching) { //crouch
skeletonAnimation.AnimationName = crouchName;
} else {
if (x == 0) //idle
skeletonAnimation.AnimationName = idleName;
else //move
skeletonAnimation.AnimationName = Mathf.Abs(x) > 0.6f ? runName : walkName;
void Update () {
//control inputs
float x = Input.GetAxis(XAxis);
float y = Input.GetAxis(YAxis);
//check for force crouch
bool crouching = (controller.isGrounded && y < -0.5f) || (forceCrouchEndTime > Time.time);
velocity.x = 0;
//Calculate control velocity
if (!crouching) {
if (Input.GetButtonDown(JumpButton) && controller.isGrounded) {
//jump
jumpAudioSource.Stop();
jumpAudioSource.Play();
velocity.y = jumpSpeed;
jumpEndTime = Time.time + jumpDuration;
} else if (Time.time < jumpEndTime && Input.GetButtonUp(JumpButton)) {
jumpInterrupt = true;
}
if (x != 0) {
//walk or run
velocity.x = Mathf.Abs(x) > 0.6f ? runSpeed : walkSpeed;
velocity.x *= Mathf.Sign(x);
}
if (jumpInterrupt) {
//interrupt jump and smoothly cut Y velocity
if (velocity.y > 0) {
velocity.y = Mathf.MoveTowards(velocity.y, 0, Time.deltaTime * 100);
} else {
jumpInterrupt = false;
}
}
}
} else {
if (velocity.y > 0) //jump
skeletonAnimation.AnimationName = jumpName;
else //fall
skeletonAnimation.AnimationName = fallName;
}
//flip left or right
if (x > 0)
graphicsRoot.localRotation = Quaternion.identity;
else if (x < 0)
//apply gravity F = mA (Learn it, love it, live it)
velocity.y -= gravity * Time.deltaTime;
//move
controller.Move(new Vector3(velocity.x, velocity.y, 0) * Time.deltaTime);
if (controller.isGrounded) {
//cancel out Y velocity if on ground
velocity.y = -gravity * Time.deltaTime;
jumpInterrupt = false;
}
Vector2 deltaVelocity = lastVelocity - velocity;
if (!lastGrounded && controller.isGrounded) {
//detect hard fall
if ((gravity * Time.deltaTime) - deltaVelocity.y > forceCrouchVelocity) {
forceCrouchEndTime = Time.time + forceCrouchDuration;
hardfallAudioSource.Play();
} else {
//play footstep audio if light fall because why not
footstepAudioSource.Play();
}
}
//graphics updates
if (controller.isGrounded) {
if (crouching) { //crouch
skeletonAnimation.AnimationName = crouchName;
} else {
if (x == 0) //idle
skeletonAnimation.AnimationName = idleName;
else //move
skeletonAnimation.AnimationName = Mathf.Abs(x) > 0.6f ? runName : walkName;
}
} else {
if (velocity.y > 0) //jump
skeletonAnimation.AnimationName = jumpName;
else //fall
skeletonAnimation.AnimationName = fallName;
}
//flip left or right
if (x > 0)
graphicsRoot.localRotation = Quaternion.identity;
else if (x < 0)
graphicsRoot.localRotation = flippedRotation;
//store previous state
lastVelocity = velocity;
lastGrounded = controller.isGrounded;
//store previous state
lastVelocity = velocity;
lastGrounded = controller.isGrounded;
}
static float GetRandomPitch (float maxOffset) {
return 1f + Random.Range(-maxOffset, maxOffset);
}
}
#region Utility
static float GetRandomPitch (float maxOffset) {
return 1f + Random.Range(-maxOffset, maxOffset);
}
#endregion
}
}

View File

@ -31,22 +31,23 @@
// Contributed by: Mitch Thompson
using UnityEngine;
using System.Collections;
public class ConstrainedCamera : MonoBehaviour {
public Transform target;
public Vector3 offset;
public Vector3 min;
public Vector3 max;
public float smoothing = 5f;
namespace Spine.Unity.Examples {
public class ConstrainedCamera : MonoBehaviour {
public Transform target;
public Vector3 offset;
public Vector3 min;
public Vector3 max;
public float smoothing = 5f;
// Update is called once per frame
void LateUpdate () {
Vector3 goalPoint = target.position + offset;
goalPoint.x = Mathf.Clamp(goalPoint.x, min.x, max.x);
goalPoint.y = Mathf.Clamp(goalPoint.y, min.y, max.y);
goalPoint.z = Mathf.Clamp(goalPoint.z, min.z, max.z);
// Update is called once per frame
void LateUpdate () {
Vector3 goalPoint = target.position + offset;
goalPoint.x = Mathf.Clamp(goalPoint.x, min.x, max.x);
goalPoint.y = Mathf.Clamp(goalPoint.y, min.y, max.y);
goalPoint.z = Mathf.Clamp(goalPoint.z, min.z, max.z);
transform.position = Vector3.Lerp(transform.position, goalPoint, smoothing * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position, goalPoint, smoothing * Time.deltaTime);
}
}
}
}

View File

@ -32,54 +32,54 @@ using UnityEngine;
using System.Collections;
using Spine.Unity;
public class Raptor : MonoBehaviour {
namespace Spine.Unity.Examples {
public class Raptor : MonoBehaviour {
#region Inspector
[SpineAnimation]
public string walk = "walk";
#region Inspector
[SpineAnimation]
public string walk = "walk";
[SpineAnimation]
public string gungrab = "gungrab";
[SpineAnimation]
public string gungrab = "gungrab";
[SpineAnimation]
public string gunkeep = "gunkeep";
[SpineAnimation]
public string gunkeep = "gunkeep";
[SpineEvent]
public string footstepEvent = "footstep";
[SpineEvent]
public string footstepEvent = "footstep";
public AudioSource footstepAudioSource;
#endregion
public AudioSource footstepAudioSource;
#endregion
SkeletonAnimation skeletonAnimation;
SkeletonAnimation skeletonAnimation;
void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.state.Event += HandleEvent;
StartCoroutine(GunGrabRoutine());
}
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data.Name == footstepEvent) {
footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f);
footstepAudioSource.Play();
void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.state.Event += HandleEvent;
StartCoroutine(GunGrabRoutine());
}
}
IEnumerator GunGrabRoutine () {
// Play the walk animation on track 0.
skeletonAnimation.state.SetAnimation(0, walk, true);
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data.Name == footstepEvent) {
footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f);
footstepAudioSource.Play();
}
}
// Repeatedly play the gungrab and gunkeep animation on track 1.
while (true) {
yield return new WaitForSeconds(Random.Range(0.5f, 3f));
skeletonAnimation.state.SetAnimation(1, gungrab, false);
IEnumerator GunGrabRoutine () {
// Play the walk animation on track 0.
skeletonAnimation.state.SetAnimation(0, walk, true);
yield return new WaitForSeconds(Random.Range(0.5f, 3f));
skeletonAnimation.state.SetAnimation(1, gunkeep, false);
// Repeatedly play the gungrab and gunkeep animation on track 1.
while (true) {
yield return new WaitForSeconds(Random.Range(0.5f, 3f));
skeletonAnimation.state.SetAnimation(1, gungrab, false);
yield return new WaitForSeconds(Random.Range(0.5f, 3f));
skeletonAnimation.state.SetAnimation(1, gunkeep, false);
}
}
}
}
}

View File

@ -32,61 +32,64 @@ using UnityEngine;
using System.Collections;
using Spine.Unity;
public class SpineBeginnerTwo : MonoBehaviour {
namespace Spine.Unity.Examples {
public class SpineBeginnerTwo : MonoBehaviour {
#region Inspector
// [SpineAnimation] attribute allows an Inspector dropdown of Spine animation names coming form SkeletonAnimation.
[SpineAnimation]
public string runAnimationName;
#region Inspector
// [SpineAnimation] attribute allows an Inspector dropdown of Spine animation names coming form SkeletonAnimation.
[SpineAnimation]
public string runAnimationName;
[SpineAnimation]
public string idleAnimationName;
[SpineAnimation]
public string idleAnimationName;
[SpineAnimation]
public string walkAnimationName;
[SpineAnimation]
public string walkAnimationName;
[SpineAnimation]
public string shootAnimationName;
#endregion
[SpineAnimation]
public string shootAnimationName;
#endregion
SkeletonAnimation skeletonAnimation;
SkeletonAnimation skeletonAnimation;
// Spine.AnimationState and Spine.Skeleton are not Unity-serialized objects. You will not see them as fields in the inspector.
public Spine.AnimationState spineAnimationState;
public Spine.Skeleton skeleton;
// Spine.AnimationState and Spine.Skeleton are not Unity-serialized objects. You will not see them as fields in the inspector.
public Spine.AnimationState spineAnimationState;
public Spine.Skeleton skeleton;
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 = GetComponent<SkeletonAnimation>();
spineAnimationState = skeletonAnimation.state;
skeleton = skeletonAnimation.skeleton;
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 = GetComponent<SkeletonAnimation>();
spineAnimationState = skeletonAnimation.state;
skeleton = skeletonAnimation.skeleton;
StartCoroutine(DoDemoRoutine());
}
/// <summary>This is an infinitely repeating Unity Coroutine. Read the Unity documentation on Coroutines to learn more.</summary>
IEnumerator DoDemoRoutine () {
while (true) {
// SetAnimation is the basic way to set an animation.
// SetAnimation sets the animation and starts playing it from the beginning.
// Common Mistake: If you keep calling it in Update, it will keep showing the first pose of the animation, do don't do that.
StartCoroutine(DoDemoRoutine());
}
spineAnimationState.SetAnimation(0, walkAnimationName, true);
yield return new WaitForSeconds(1.5f);
/// <summary>This is an infinitely repeating Unity Coroutine. Read the Unity documentation on Coroutines to learn more.</summary>
IEnumerator DoDemoRoutine () {
// skeletonAnimation.AnimationName = runAnimationName; // this line also works for quick testing/simple uses.
spineAnimationState.SetAnimation(0, runAnimationName, true);
yield return new WaitForSeconds(1.5f);
while (true) {
// SetAnimation is the basic way to set an animation.
// SetAnimation sets the animation and starts playing it from the beginning.
// 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);
yield return new WaitForSeconds(1f);
spineAnimationState.SetAnimation(0, walkAnimationName, true);
yield return new WaitForSeconds(1.5f);
skeleton.FlipX = true; // skeleton allows you to flip the skeleton.
yield return new WaitForSeconds(0.5f);
skeleton.FlipX = false;
yield return new WaitForSeconds(0.5f);
// skeletonAnimation.AnimationName = runAnimationName; // this line also works for quick testing/simple uses.
spineAnimationState.SetAnimation(0, runAnimationName, true);
yield return new WaitForSeconds(1.5f);
spineAnimationState.SetAnimation(0, idleAnimationName, true);
yield return new WaitForSeconds(1f);
skeleton.FlipX = true; // skeleton allows you to flip the skeleton.
yield return new WaitForSeconds(0.5f);
skeleton.FlipX = false;
yield return new WaitForSeconds(0.5f);
}
}
}
}

View File

@ -32,20 +32,22 @@ using UnityEngine;
using System.Collections;
using Spine.Unity;
public class SpineBlinkPlayer : MonoBehaviour {
const int BlinkTrack = 1;
namespace Spine.Unity.Examples {
public class SpineBlinkPlayer : MonoBehaviour {
const int BlinkTrack = 1;
[SpineAnimation]
public string blinkAnimation;
public float minimumDelay = 0.15f;
public float maximumDelay = 3f;
[SpineAnimation]
public string blinkAnimation;
public float minimumDelay = 0.15f;
public float maximumDelay = 3f;
IEnumerator Start () {
var skeletonAnimation = GetComponent<SkeletonAnimation>(); if (skeletonAnimation == null) yield break;
while (true) {
skeletonAnimation.state.SetAnimation(SpineBlinkPlayer.BlinkTrack, blinkAnimation, false);
yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay));
IEnumerator Start () {
var skeletonAnimation = GetComponent<SkeletonAnimation>(); if (skeletonAnimation == null) yield break;
while (true) {
skeletonAnimation.state.SetAnimation(SpineBlinkPlayer.BlinkTrack, blinkAnimation, false);
yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay));
}
}
}
}
}

View File

@ -31,34 +31,33 @@
using UnityEngine;
using System.Collections;
public class SpineboyBeginnerInput : MonoBehaviour {
namespace Spine.Unity.Examples {
public class SpineboyBeginnerInput : MonoBehaviour {
#region Inspector
public string horizontalAxis = "Horizontal";
public string attackButton = "Fire1";
public string jumpButton = "Jump";
#region Inspector
public string horizontalAxis = "Horizontal";
public string attackButton = "Fire1";
public string jumpButton = "Jump";
public SpineboyBeginnerModel model;
public SpineboyBeginnerModel model;
void OnValidate () {
if (model == null)
model = GetComponent<SpineboyBeginnerModel>();
}
#endregion
void OnValidate () {
if (model == null)
model = GetComponent<SpineboyBeginnerModel>();
void Update () {
if (model == null) return;
float currentHorizontal = Input.GetAxisRaw(horizontalAxis);
model.TryMove(currentHorizontal);
if (Input.GetButton(attackButton))
model.TryShoot();
if (Input.GetButtonDown(jumpButton))
model.TryJump();
}
}
#endregion
void Update () {
if (model == null) return;
float currentHorizontal = Input.GetAxisRaw(horizontalAxis);
model.TryMove(currentHorizontal);
if (Input.GetButton(attackButton))
model.TryShoot();
if (Input.GetButtonDown(jumpButton))
model.TryJump();
}
}

View File

@ -31,83 +31,85 @@
using UnityEngine;
using System.Collections;
[SelectionBase]
public class SpineboyBeginnerModel : MonoBehaviour {
namespace Spine.Unity.Examples {
[SelectionBase]
public class SpineboyBeginnerModel : MonoBehaviour {
#region Inspector
[Header("Current State")]
public SpineBeginnerBodyState state;
public bool facingLeft;
[Range(-1f, 1f)]
public float currentSpeed;
#region Inspector
[Header("Current State")]
public SpineBeginnerBodyState state;
public bool facingLeft;
[Range(-1f, 1f)]
public float currentSpeed;
[Header("Balance")]
public float shootInterval = 0.12f;
#endregion
[Header("Balance")]
public float shootInterval = 0.12f;
#endregion
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.
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.
#region API
public void TryJump () {
StartCoroutine(JumpRoutine());
}
public void TryShoot () {
float currentTime = Time.time;
if (currentTime - lastShootTime > shootInterval) {
lastShootTime = currentTime;
if (ShootEvent != null) ShootEvent(); // Fire the "ShootEvent" event.
}
}
public void TryMove (float speed) {
currentSpeed = speed; // show the "speed" in the Inspector.
if (speed != 0) {
bool speedIsNegative = (speed < 0f);
facingLeft = speedIsNegative; // Change facing direction whenever speed is not 0.
}
if (state != SpineBeginnerBodyState.Jumping) {
state = (speed == 0) ? SpineBeginnerBodyState.Idle : SpineBeginnerBodyState.Running;
#region API
public void TryJump () {
StartCoroutine(JumpRoutine());
}
}
#endregion
public void TryShoot () {
float currentTime = Time.time;
IEnumerator JumpRoutine () {
if (state == SpineBeginnerBodyState.Jumping) yield break; // Don't jump when already jumping.
state = SpineBeginnerBodyState.Jumping;
// Terribly-coded Fake jumping.
{
var pos = transform.localPosition;
const float jumpTime = 1.2f;
const float half = jumpTime * 0.5f;
const float jumpPower = 20f;
for (float t = 0; t < half; t += Time.deltaTime) {
float d = jumpPower * (half - t);
transform.Translate((d * Time.deltaTime) * Vector3.up);
yield return null;
if (currentTime - lastShootTime > shootInterval) {
lastShootTime = currentTime;
if (ShootEvent != null) ShootEvent(); // Fire the "ShootEvent" event.
}
for (float t = 0; t < half; t += Time.deltaTime) {
float d = jumpPower * t;
transform.Translate((d * Time.deltaTime) * Vector3.down);
yield return null;
}
transform.localPosition = pos;
}
state = SpineBeginnerBodyState.Idle;
public void TryMove (float speed) {
currentSpeed = speed; // show the "speed" in the Inspector.
if (speed != 0) {
bool speedIsNegative = (speed < 0f);
facingLeft = speedIsNegative; // Change facing direction whenever speed is not 0.
}
if (state != SpineBeginnerBodyState.Jumping) {
state = (speed == 0) ? SpineBeginnerBodyState.Idle : SpineBeginnerBodyState.Running;
}
}
#endregion
IEnumerator JumpRoutine () {
if (state == SpineBeginnerBodyState.Jumping) yield break; // Don't jump when already jumping.
state = SpineBeginnerBodyState.Jumping;
// Fake jumping.
{
var pos = transform.localPosition;
const float jumpTime = 1.2f;
const float half = jumpTime * 0.5f;
const float jumpPower = 20f;
for (float t = 0; t < half; t += Time.deltaTime) {
float d = jumpPower * (half - t);
transform.Translate((d * Time.deltaTime) * Vector3.up);
yield return null;
}
for (float t = 0; t < half; t += Time.deltaTime) {
float d = jumpPower * t;
transform.Translate((d * Time.deltaTime) * Vector3.down);
yield return null;
}
transform.localPosition = pos;
}
state = SpineBeginnerBodyState.Idle;
}
}
}
public enum SpineBeginnerBodyState {
Idle,
Running,
Jumping
public enum SpineBeginnerBodyState {
Idle,
Running,
Jumping
}
}

View File

@ -32,113 +32,115 @@ using UnityEngine;
using System.Collections;
using Spine.Unity;
public class SpineboyBeginnerView : MonoBehaviour {
#region Inspector
[Header("Components")]
public SpineboyBeginnerModel model;
public SkeletonAnimation skeletonAnimation;
//public ParticleSystem gunParticles;
namespace Spine.Unity.Examples {
public class SpineboyBeginnerView : MonoBehaviour {
[SpineAnimation] public string run, idle, shoot, jump;
[SpineEvent] public string footstepEventName;
#region Inspector
[Header("Components")]
public SpineboyBeginnerModel model;
public SkeletonAnimation skeletonAnimation;
[Header("Audio")]
public float footstepPitchOffset = 0.2f;
public float gunsoundPitchOffset = 0.13f;
public AudioSource footstepSource, gunSource, jumpSource;
[SpineAnimation] public string run, idle, shoot, jump;
[SpineEvent] public string footstepEventName;
[Header("Effects")]
public ParticleSystem gunParticles;
#endregion
[Header("Audio")]
public float footstepPitchOffset = 0.2f;
public float gunsoundPitchOffset = 0.13f;
public AudioSource footstepSource, gunSource, jumpSource;
SpineBeginnerBodyState previousViewState;
[Header("Effects")]
public ParticleSystem gunParticles;
#endregion
void Start () {
if (skeletonAnimation == null) return;
model.ShootEvent += PlayShoot;
skeletonAnimation.state.Event += HandleEvent;
}
SpineBeginnerBodyState previousViewState;
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data.Name == footstepEventName)
PlayFootstepSound();
}
void Update () {
if (skeletonAnimation == null) return;
if (model == null) return;
if (skeletonAnimation.skeleton.FlipX != model.facingLeft) { // Detect changes in model.facingLeft
Turn(model.facingLeft);
void Start () {
if (skeletonAnimation == null) return;
model.ShootEvent += PlayShoot;
skeletonAnimation.state.Event += HandleEvent;
}
// Detect changes in model.state
var currentModelState = model.state;
if (previousViewState != currentModelState) {
PlayNewStableAnimation();
}
previousViewState = currentModelState;
}
void PlayNewStableAnimation () {
var newModelState = model.state;
string nextAnimation;
// Add conditionals to not interrupt transient animations.
if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) {
PlayFootstepSound();
void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) {
if (e.Data.Name == footstepEventName)
PlayFootstepSound();
}
if (newModelState == SpineBeginnerBodyState.Jumping) {
jumpSource.Play();
nextAnimation = jump;
} else {
if (newModelState == SpineBeginnerBodyState.Running) {
nextAnimation = run;
} else {
nextAnimation = idle;
void Update () {
if (skeletonAnimation == null) return;
if (model == null) return;
if (skeletonAnimation.skeleton.FlipX != model.facingLeft) { // Detect changes in model.facingLeft
Turn(model.facingLeft);
}
// Detect changes in model.state
var currentModelState = model.state;
if (previousViewState != currentModelState) {
PlayNewStableAnimation();
}
previousViewState = currentModelState;
}
skeletonAnimation.state.SetAnimation(0, nextAnimation, true);
void PlayNewStableAnimation () {
var newModelState = model.state;
string nextAnimation;
// Add conditionals to not interrupt transient animations.
if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) {
PlayFootstepSound();
}
if (newModelState == SpineBeginnerBodyState.Jumping) {
jumpSource.Play();
nextAnimation = jump;
} else {
if (newModelState == SpineBeginnerBodyState.Running) {
nextAnimation = run;
} else {
nextAnimation = idle;
}
}
skeletonAnimation.state.SetAnimation(0, nextAnimation, true);
}
void PlayFootstepSound () {
footstepSource.Play();
footstepSource.pitch = GetRandomPitch(footstepPitchOffset);
}
[ContextMenu("Check Tracks")]
void CheckTracks () {
var state = skeletonAnimation.state;
Debug.Log(state.GetCurrent(0));
Debug.Log(state.GetCurrent(1));
}
#region Transient Actions
public void PlayShoot () {
// Play the shoot animation on track 1.
skeletonAnimation.state.SetAnimation(1, shoot, false);
//skeletonAnimation.state.AddEmptyAnimation(1, 0.1f, 0f);
gunSource.pitch = GetRandomPitch(gunsoundPitchOffset);
gunSource.Play();
gunParticles.randomSeed = (uint)Random.Range(0, 100);
gunParticles.Play();
}
public void Turn (bool facingLeft) {
skeletonAnimation.skeleton.FlipX = facingLeft;
// Maybe play a transient turning animation too, then call ChangeStableAnimation.
}
#endregion
#region Utility
public float GetRandomPitch (float maxPitchOffset) {
return 1f + Random.Range(-maxPitchOffset, maxPitchOffset);
}
#endregion
}
void PlayFootstepSound () {
footstepSource.Play();
footstepSource.pitch = GetRandomPitch(footstepPitchOffset);
}
[ContextMenu("Check Tracks")]
void CheckTracks () {
var state = skeletonAnimation.state;
Debug.Log(state.GetCurrent(0));
Debug.Log(state.GetCurrent(1));
}
#region Transient Actions
public void PlayShoot () {
// Play the shoot animation on track 1.
skeletonAnimation.state.SetAnimation(1, shoot, false);
//skeletonAnimation.state.AddEmptyAnimation(1, 0.1f, 0f);
gunSource.pitch = GetRandomPitch(gunsoundPitchOffset);
gunSource.Play();
gunParticles.randomSeed = (uint)Random.Range(0, 100);
gunParticles.Play();
}
public void Turn (bool facingLeft) {
skeletonAnimation.skeleton.FlipX = facingLeft;
// Maybe play a transient turning animation too, then call ChangeStableAnimation.
}
#endregion
#region Utility
public float GetRandomPitch (float maxPitchOffset) {
return 1f + Random.Range(-maxPitchOffset, maxPitchOffset);
}
#endregion
}

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -168,6 +173,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
@ -248,9 +254,9 @@ MonoBehaviour:
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
frontFacing: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName:
@ -265,17 +271,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 5a3598dafa118754db95756064347da7, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -298,6 +307,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -108,7 +113,7 @@ Light:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 133751936}
m_Enabled: 1
serializedVersion: 6
serializedVersion: 7
m_Type: 1
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1.1
@ -116,8 +121,9 @@ Light:
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 1
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
@ -130,10 +136,10 @@ Light:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 1
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
m_AreaSize: {x: 1, y: 1}
--- !u!4 &133751938
Transform:
m_ObjectHideFlags: 0
@ -147,53 +153,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!1001 &244083694
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 3300000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
propertyPath: m_Mesh
value:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
m_RootGameObject: {fileID: 2143290130}
m_IsPrefabParent: 0
--- !u!1 &560289061
GameObject:
m_ObjectHideFlags: 0
@ -220,17 +179,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -348,7 +310,7 @@ Transform:
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 100000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
m_PrefabInternal: {fileID: 244083694}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 2143290134}
@ -367,7 +329,7 @@ MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11400000, guid: d51ed5943e10bcb4394b5eec480293f8,
type: 2}
m_PrefabInternal: {fileID: 244083694}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2143290130}
m_Enabled: 1
m_EditorHideFlags: 0
@ -381,6 +343,7 @@ MonoBehaviour:
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 1
calculateTangents: 0
logErrors: 0
@ -393,11 +356,14 @@ MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 2300000, guid: d51ed5943e10bcb4394b5eec480293f8,
type: 2}
m_PrefabInternal: {fileID: 244083694}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2143290130}
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}
@ -413,13 +379,13 @@ MeshRenderer:
- {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -431,14 +397,14 @@ MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 3300000, guid: d51ed5943e10bcb4394b5eec480293f8,
type: 2}
m_PrefabInternal: {fileID: 244083694}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2143290130}
m_Mesh: {fileID: 0}
--- !u!4 &2143290134
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2}
m_PrefabInternal: {fileID: 244083694}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2143290130}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,8 @@
fileFormatVersion: 2
guid: c5673b83016f67a4c99772dfb7b3c437
guid: 9b55bcfc2181c68418e59ee61ef5afc9
timeCreated: 1480087951
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -168,6 +173,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.02, y: 0.02, z: 0.1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 2142418131}
m_Father: {fileID: 0}
@ -232,9 +238,9 @@ MonoBehaviour:
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
frontFacing: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: run
@ -249,18 +255,21 @@ MeshRenderer:
m_Enabled: 0
m_CastShadows: 1
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 0}
- {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2}
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -283,6 +292,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 6.75, y: -0.08, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1769987563}
- {fileID: 1619823304}
@ -327,17 +337,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2}
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 1
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -360,6 +373,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1918225119}
m_RootOrder: 0
@ -390,6 +404,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1.3629907, y: 3.7230203, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 93048079}
m_RootOrder: 2
@ -402,17 +417,20 @@ ParticleSystemRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 1
m_ReflectionProbeUsage: 0
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -449,14 +467,15 @@ MonoBehaviour:
boneName: front_fist
followZPosition: 0
followBoneRotation: 0
resetOnAwake: 1
followSkeletonFlip: 0
initializeOnAwake: 1
--- !u!198 &565117365
ParticleSystem:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 565117361}
serializedVersion: 2
serializedVersion: 4
lengthInSec: 5
startDelay:
scalar: 0
@ -494,12 +513,13 @@ ParticleSystem:
m_RotationOrder: 4
minMaxState: 0
speed: 1
randomSeed: 0
looping: 1
prewarm: 0
playOnAwake: 1
moveWithTransform: 0
autoRandomSeed: 1
scalingMode: 1
randomSeed: 0
InitialModule:
serializedVersion: 2
enabled: 1
@ -574,6 +594,7 @@ ParticleSystem:
m_RotationOrder: 4
minMaxState: 0
startColor:
serializedVersion: 2
maxGradient:
key0:
serializedVersion: 2
@ -660,12 +681,8 @@ ParticleSystem:
atime7: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
minColor:
serializedVersion: 2
rgba: 4294967295
maxColor:
serializedVersion: 2
rgba: 4278224127
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 0.5176471, b: 0, a: 1}
minMaxState: 0
startSize:
scalar: 0.5
@ -702,6 +719,76 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 0
startSizeY:
scalar: 1
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 0
startSizeZ:
scalar: 1
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 0
startRotationX:
scalar: 0
maxCurve:
@ -810,6 +897,7 @@ ParticleSystem:
randomizeRotationDirection: 0
gravityModifier: 0
maxNumParticles: 100
size3D: 0
rotation3D: 0
ShapeModule:
serializedVersion: 2
@ -925,6 +1013,77 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
y:
scalar: 1
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
z:
scalar: 1
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
separateAxes: 0
RotationModule:
enabled: 0
x:
@ -1036,6 +1195,7 @@ ParticleSystem:
ColorModule:
enabled: 0
gradient:
serializedVersion: 2
maxGradient:
key0:
serializedVersion: 2
@ -1122,17 +1282,13 @@ ParticleSystem:
atime7: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
minColor:
serializedVersion: 2
rgba: 4294967295
maxColor:
serializedVersion: 2
rgba: 4294967295
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
minMaxState: 1
UVModule:
enabled: 0
frameOverTime:
scalar: 1
scalar: 0.9999
maxCurve:
serializedVersion: 2
m_Curve:
@ -1166,11 +1322,47 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
startFrame:
scalar: 0
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 0
tilesX: 1
tilesY: 1
animationType: 0
rowIndex: 0
cycles: 1
uvChannelMask: -1
randomRow: 1
VelocityModule:
enabled: 0
@ -1612,7 +1804,78 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
y:
scalar: 1
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
z:
scalar: 1
maxCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
minMaxState: 1
range: {x: 0, y: 1}
separateAxes: 0
RotationBySpeedModule:
enabled: 0
x:
@ -1725,6 +1988,7 @@ ParticleSystem:
ColorBySpeedModule:
enabled: 0
gradient:
serializedVersion: 2
maxGradient:
key0:
serializedVersion: 2
@ -1811,17 +2075,13 @@ ParticleSystem:
atime7: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
minColor:
serializedVersion: 2
rgba: 4294967295
maxColor:
serializedVersion: 2
rgba: 4294967295
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
minMaxState: 1
range: {x: 0, y: 1}
CollisionModule:
enabled: 0
serializedVersion: 2
serializedVersion: 3
type: 0
collisionMode: 0
plane0: {fileID: 0}
@ -1936,6 +2196,7 @@ ParticleSystem:
m_RotationOrder: 4
minMaxState: 0
minKillSpeed: 0
maxKillSpeed: 10000
radiusScale: 1
collidesWith:
serializedVersion: 2
@ -1946,6 +2207,19 @@ ParticleSystem:
collisionMessages: 0
collidesWithDynamic: 1
interiorCollisions: 1
TriggerModule:
enabled: 0
collisionShape0: {fileID: 0}
collisionShape1: {fileID: 0}
collisionShape2: {fileID: 0}
collisionShape3: {fileID: 0}
collisionShape4: {fileID: 0}
collisionShape5: {fileID: 0}
inside: 1
outside: 0
enter: 0
exit: 0
radiusScale: 1
SubModule:
enabled: 0
subEmitterBirth: {fileID: 0}
@ -2037,6 +2311,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.02, y: 0.02, z: 0.1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1618699050}
m_Father: {fileID: 0}
@ -2071,17 +2346,20 @@ SpriteRenderer:
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 0
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 1
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2101,6 +2379,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5.5483284, y: 48.482475, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1675659861}
m_RootOrder: 0
@ -2129,6 +2408,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.06, y: 0, z: 0}
m_LocalScale: {x: 4.661441, y: 48.482475, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1675659861}
m_RootOrder: 1
@ -2141,17 +2421,20 @@ SpriteRenderer:
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 0
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 1
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2187,6 +2470,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.44, y: 0, z: 0}
m_LocalScale: {x: 0.44441086, y: 48.482475, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1675659861}
m_RootOrder: 2
@ -2199,17 +2483,20 @@ SpriteRenderer:
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 0
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 1
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2303,6 +2590,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
@ -2332,6 +2620,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 624843597}
m_RootOrder: 0
@ -2422,17 +2711,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2}
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 1
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2455,6 +2747,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 93048079}
m_RootOrder: 1
@ -2482,6 +2775,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.5889997, y: 0.001999855, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 774732877}
- {fileID: 1149289854}
@ -2526,17 +2820,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2}
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 1
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2559,6 +2856,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1918225119}
m_RootOrder: 1
@ -2600,17 +2898,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2}
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 1
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2633,6 +2934,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 93048079}
m_RootOrder: 0
@ -2692,9 +2994,9 @@ MonoBehaviour:
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
frontFacing: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName:
@ -2709,18 +3011,21 @@ MeshRenderer:
m_Enabled: 0
m_CastShadows: 1
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 0}
- {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2}
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -2743,6 +3048,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -6.18, y: -3.53, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 122287543}
- {fileID: 1698487795}
@ -2791,6 +3097,7 @@ RectTransform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 51877973}
m_RootOrder: 0

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -108,9 +113,10 @@ Transform:
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 36219066}
m_LocalRotation: {x: 0, y: 0, z: -0.52048814, w: 0.8538689}
m_LocalRotation: {x: -0, y: -0, z: -0.5187491, w: 0.8549265}
m_LocalPosition: {x: -2.3325999, y: 1.2458895, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 973814792}
m_RootOrder: 1
@ -146,16 +152,14 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3}
m_Name:
m_EditorClassIdentifier:
boneName: rear_foot_goal
parentReference: {fileID: 0}
mode: 0
zPosition: 1
position: 1
rotation: 1
scale: 1
flip: 0
flipX: 0
zPosition: 1
overrideAlpha: 1
boneName: rear_foot_goal
parentReference: {fileID: 0}
--- !u!1 &44654812
GameObject:
m_ObjectHideFlags: 0
@ -180,6 +184,7 @@ Transform:
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 973814792}
m_Father: {fileID: 120294521}
@ -212,6 +217,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.15, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 44654813}
m_Father: {fileID: 0}
@ -247,9 +253,9 @@ MonoBehaviour:
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
frontFacing: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: walk
@ -264,17 +270,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4e2feebfcaa26a54ab19f1ff3e0eae35, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -310,9 +319,10 @@ Transform:
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 973814791}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1984548219}
- {fileID: 36219067}
@ -329,16 +339,14 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3}
m_Name:
m_EditorClassIdentifier:
boneName: root
parentReference: {fileID: 0}
mode: 0
zPosition: 1
position: 1
rotation: 1
scale: 1
flip: 0
flipX: 0
zPosition: 1
overrideAlpha: 1
boneName: root
parentReference: {fileID: 0}
--- !u!1 &976394122
GameObject:
m_ObjectHideFlags: 0
@ -422,6 +430,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -12}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
@ -452,17 +461,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -497,6 +509,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: -0.08522272, w: 0.996362}
m_LocalPosition: {x: 0.29366082, y: 0.13593975, z: 2}
m_LocalScale: {x: 13, y: 1, z: 2.6603487}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
@ -549,25 +562,24 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3}
m_Name:
m_EditorClassIdentifier:
boneName: front_foot_goal
parentReference: {fileID: 0}
mode: 0
zPosition: 1
position: 1
rotation: 1
scale: 1
flip: 0
flipX: 0
zPosition: 1
overrideAlpha: 1
boneName: front_foot_goal
parentReference: {fileID: 0}
--- !u!4 &1984548219
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1984548216}
m_LocalRotation: {x: 0, y: 0, z: -0.008202955, w: 0.9999664}
m_LocalRotation: {x: -0, y: -0, z: -0.00795751, w: 0.99996835}
m_LocalPosition: {x: 2.9748998, y: 0.3312556, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 973814792}
m_RootOrder: 0

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -172,12 +177,174 @@ RectTransform:
m_Children:
- {fileID: 2122594306}
m_Father: {fileID: 0}
m_RootOrder: 6
m_RootOrder: 5
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}
--- !u!1 &138285500
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 183998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 138285507}
- 33: {fileID: 138285506}
- 23: {fileID: 138285505}
- 114: {fileID: 138285504}
- 114: {fileID: 138285503}
- 114: {fileID: 138285502}
- 60: {fileID: 138285501}
m_Layer: 0
m_Name: Raggedy Spineboy
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!60 &138285501
PolygonCollider2D:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 6083998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_Offset: {x: 0, y: 0}
m_Points:
m_Paths:
- - {x: -0.25825587, y: 3.1820273}
- {x: 0.31586242, y: 3.1818907}
- {x: 0.55882263, y: 2.040349}
- {x: 0.434707, y: 0.0013669459}
- {x: -0.45539615, y: 0.0013672132}
- {x: -0.61691463, y: 2.0021477}
--- !u!114 &138285502
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3}
m_Name:
m_EditorClassIdentifier:
groundMask:
serializedVersion: 2
m_Bits: 4294967295
restoreDuration: 0.5
launchVelocity: {x: 40, y: 85}
--- !u!114 &138285503
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3}
m_Name:
m_EditorClassIdentifier:
startingBoneName: hip
stopBoneNames: []
applyOnStart: 0
disableIK: 1
disableOtherConstraints: 0
pinStartBone: 0
gravityScale: 3
thickness: 0.125
rotationLimit: 20
rootMass: 40
massFalloffFactor: 0.504
colliderLayer: 0
mix: 1
--- !u!114 &138285504
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483994, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2}
initialSkinName: default
separatorSlotNames: []
zSpacing: 0
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: animation
loop: 1
timeScale: 1
--- !u!23 &138285505
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 2383998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2}
m_SubsetIndices:
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_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &138285506
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_Mesh: {fileID: 0}
--- !u!4 &138285507
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 138285500}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -2.55, y: -3.07, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
--- !u!1 &279948894
GameObject:
m_ObjectHideFlags: 0
@ -219,17 +386,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -310,17 +480,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -334,60 +507,6 @@ MeshFilter:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 281786970}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &410436501
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.x
value: 4.67
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.y
value: -3.07
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_Mesh
value:
objectReference: {fileID: 0}
- target: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: colliderLayer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: groundMask.m_Bits
value: 4294967295
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_IsPrefabParent: 0
--- !u!1 &469940167
GameObject:
m_ObjectHideFlags: 0
@ -442,17 +561,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -466,60 +588,168 @@ MeshFilter:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 469940167}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &678089918
Prefab:
--- !u!1 &689192947
GameObject:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.x
value: -2.55
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.y
value: -3.07
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_Mesh
value:
objectReference: {fileID: 0}
- target: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: colliderLayer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: groundMask.m_Bits
value: 4294967295
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_IsPrefabParent: 0
m_PrefabParentObject: {fileID: 183998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 689192954}
- 33: {fileID: 689192953}
- 23: {fileID: 689192952}
- 114: {fileID: 689192951}
- 114: {fileID: 689192950}
- 114: {fileID: 689192949}
- 60: {fileID: 689192948}
m_Layer: 0
m_Name: Raggedy Spineboy
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!60 &689192948
PolygonCollider2D:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 6083998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_Offset: {x: 0, y: 0}
m_Points:
m_Paths:
- - {x: -0.25825587, y: 3.1820273}
- {x: 0.31586242, y: 3.1818907}
- {x: 0.55882263, y: 2.040349}
- {x: 0.434707, y: 0.0013669459}
- {x: -0.45539615, y: 0.0013672132}
- {x: -0.61691463, y: 2.0021477}
--- !u!114 &689192949
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3}
m_Name:
m_EditorClassIdentifier:
groundMask:
serializedVersion: 2
m_Bits: 4294967295
restoreDuration: 0.5
launchVelocity: {x: 40, y: 85}
--- !u!114 &689192950
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3}
m_Name:
m_EditorClassIdentifier:
startingBoneName: hip
stopBoneNames: []
applyOnStart: 0
disableIK: 1
disableOtherConstraints: 0
pinStartBone: 0
gravityScale: 3
thickness: 0.125
rotationLimit: 20
rootMass: 40
massFalloffFactor: 0.504
colliderLayer: 0
mix: 1
--- !u!114 &689192951
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483994, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2}
initialSkinName: default
separatorSlotNames: []
zSpacing: 0
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: animation
loop: 1
timeScale: 1
--- !u!23 &689192952
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 2383998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2}
m_SubsetIndices:
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_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &689192953
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_Mesh: {fileID: 0}
--- !u!4 &689192954
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 689192947}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 4.67, y: -3.07, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
--- !u!1 &890899334
GameObject:
m_ObjectHideFlags: 0
@ -561,17 +791,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -639,17 +872,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -712,7 +948,7 @@ Transform:
- {fileID: 1446269955}
- {fileID: 469940168}
m_Father: {fileID: 0}
m_RootOrder: 5
m_RootOrder: 4
--- !u!1 &1332258640
GameObject:
m_ObjectHideFlags: 0
@ -841,17 +1077,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -878,6 +1117,168 @@ Transform:
m_Children: []
m_Father: {fileID: 1241879115}
m_RootOrder: 1
--- !u!1 &1417061241
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 183998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1417061248}
- 33: {fileID: 1417061247}
- 23: {fileID: 1417061246}
- 114: {fileID: 1417061245}
- 114: {fileID: 1417061244}
- 114: {fileID: 1417061243}
- 60: {fileID: 1417061242}
m_Layer: 0
m_Name: Raggedy Spineboy
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!60 &1417061242
PolygonCollider2D:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 6083998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_Offset: {x: 0, y: 0}
m_Points:
m_Paths:
- - {x: -0.25825587, y: 3.1820273}
- {x: 0.31586242, y: 3.1818907}
- {x: 0.55882263, y: 2.040349}
- {x: 0.434707, y: 0.0013669459}
- {x: -0.45539615, y: 0.0013672132}
- {x: -0.61691463, y: 2.0021477}
--- !u!114 &1417061243
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3}
m_Name:
m_EditorClassIdentifier:
groundMask:
serializedVersion: 2
m_Bits: 4294967295
restoreDuration: 0.5
launchVelocity: {x: 40, y: 85}
--- !u!114 &1417061244
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3}
m_Name:
m_EditorClassIdentifier:
startingBoneName: hip
stopBoneNames: []
applyOnStart: 0
disableIK: 1
disableOtherConstraints: 0
pinStartBone: 0
gravityScale: 3
thickness: 0.125
rotationLimit: 20
rootMass: 40
massFalloffFactor: 0.504
colliderLayer: 0
mix: 1
--- !u!114 &1417061245
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11483994, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2}
initialSkinName: default
separatorSlotNames: []
zSpacing: 0
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: animation
loop: 1
timeScale: 1
--- !u!23 &1417061246
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 2383998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2}
m_SubsetIndices:
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_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &1417061247
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_Mesh: {fileID: 0}
--- !u!4 &1417061248
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1417061241}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 2.5, y: -3.06, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
--- !u!1 &1442886939
GameObject:
m_ObjectHideFlags: 0
@ -919,17 +1320,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -1010,17 +1414,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -1034,60 +1441,6 @@ MeshFilter:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1446269954}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &1702096498
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.x
value: 2.5
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.y
value: -3.06
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
- target: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: m_Mesh
value:
objectReference: {fileID: 0}
- target: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: colliderLayer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
propertyPath: groundMask.m_Bits
value: 4294967295
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2}
m_IsPrefabParent: 0
--- !u!1 &1938155299
GameObject:
m_ObjectHideFlags: 0
@ -1217,17 +1570,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -1338,7 +1694,7 @@ Light:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2147465172}
m_Enabled: 1
serializedVersion: 6
serializedVersion: 7
m_Type: 2
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 2
@ -1348,6 +1704,7 @@ Light:
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
@ -1360,10 +1717,10 @@ Light:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 1
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
m_AreaSize: {x: 1, y: 1}
--- !u!4 &2147465174
Transform:
m_ObjectHideFlags: 0
@ -1376,4 +1733,4 @@ Transform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_RootOrder: 3

View File

@ -13,7 +13,7 @@ SceneSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@ -37,12 +37,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 6
serializedVersion: 7
m_GIWorkflowMode: 1
m_LightmapsMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@ -53,17 +53,22 @@ LightmapSettings:
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 3
serializedVersion: 4
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_Padding: 2
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
@ -85,6 +90,99 @@ NavMeshSettings:
cellSize: 0.16666666
manualCellSize: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &351144566
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 351144570}
- 33: {fileID: 351144569}
- 23: {fileID: 351144568}
- 114: {fileID: 351144567}
m_Layer: 0
m_Name: Spine GameObject (spineboy)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &351144567
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: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2}
initialSkinName: default
separatorSlotNames: []
zSpacing: 0
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
logErrors: 0
disableRenderingOnOverride: 1
_animationName: idle
loop: 1
timeScale: 1
--- !u!23 &351144568
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 351144566}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2}
m_SubsetIndices:
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_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &351144569
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 351144566}
m_Mesh: {fileID: 0}
--- !u!4 &351144570
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 351144566}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.3, y: -3.48, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
--- !u!1 &795271513
GameObject:
m_ObjectHideFlags: 0
@ -98,7 +196,7 @@ GameObject:
- 114: {fileID: 795271515}
- 114: {fileID: 795271514}
m_Layer: 0
m_Name: Gauge
m_Name: Spine GameObject (gauge)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -115,7 +213,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c888ce38da699d143a68153f26379a37, type: 3}
m_Name:
m_EditorClassIdentifier:
fillPercent: 0.388
fillPercent: 1
fillAnimationName: Fill
--- !u!114 &795271515
MonoBehaviour:
@ -135,9 +233,9 @@ MonoBehaviour:
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 0
frontFacing: 0
logErrors: 0
disableRenderingOnOverride: 1
--- !u!23 &795271516
@ -149,17 +247,20 @@ MeshRenderer:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 9ab9bdbda020b3e46b5a3b0558ef591d, type: 2}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
@ -173,9 +274,11 @@ Transform:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 795271513}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: 4.09, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1025516230}
m_Father: {fileID: 0}
m_RootOrder: 1
--- !u!33 &795271518
@ -185,6 +288,127 @@ MeshFilter:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 795271513}
m_Mesh: {fileID: 0}
--- !u!1 &1025516229
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1025516230}
- 114: {fileID: 1025516231}
m_Layer: 0
m_Name: Attack Spineboy
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1025516230
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1025516229}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2.672, y: -1.3108752, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1695530253}
m_Father: {fileID: 795271517}
m_RootOrder: 0
--- !u!114 &1025516231
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1025516229}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7eab8e63d650dc74c80d142cd4b9fe4b, type: 3}
m_Name:
m_EditorClassIdentifier:
spineboy: {fileID: 351144567}
gauge: {fileID: 795271514}
healthText: {fileID: 1847717249}
--- !u!1 &1053578423
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 224: {fileID: 1053578424}
- 222: {fileID: 1053578426}
- 114: {fileID: 1053578425}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1053578424
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1053578423}
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1695530253}
m_RootOrder: 0
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 436.7, y: 225.4}
m_SizeDelta: {x: 339.8, y: 53.2}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1053578425
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1053578423}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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: 36
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 3
m_MaxSize: 48
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: 'Press Spacebar to Attack Spineboy!
The health bar is a Spine skeleton.'
--- !u!222 &1053578426
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1053578423}
--- !u!1 &1611520402
GameObject:
m_ObjectHideFlags: 0
@ -268,6 +492,158 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!1 &1695530249
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 224: {fileID: 1695530253}
- 223: {fileID: 1695530252}
- 114: {fileID: 1695530251}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1695530251
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1695530249}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 &1695530252
Canvas:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1695530249}
m_Enabled: 1
serializedVersion: 2
m_RenderMode: 2
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &1695530253
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1695530249}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1053578424}
- {fileID: 1847717248}
m_Father: {fileID: 1025516230}
m_RootOrder: 0
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 2.672, y: -2.779125}
m_SizeDelta: {x: 1920, y: 1080}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1847717247
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 224: {fileID: 1847717248}
- 222: {fileID: 1847717250}
- 114: {fileID: 1847717249}
m_Layer: 5
m_Name: Health Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1847717248
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1847717247}
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 1695530253}
m_RootOrder: 1
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -13, y: 343}
m_SizeDelta: {x: 339.8, y: 53.2}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1847717249
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1847717247}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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: 36
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 3
m_MaxSize: 48
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: 100/100
--- !u!222 &1847717250
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1847717247}

View File

@ -0,0 +1,852 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
SceneSettings:
m_ObjectHideFlags: 0
m_PVSData:
m_PVSObjectsArray: []
m_PVSPortalsArray: []
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.007352948, g: 0.007352948, b: 0.007352948, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 7
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 4
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
m_RuntimeCPUUsage: 25
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
accuratePlacement: 0
minRegionArea: 2
cellSize: 0.16666667
manualCellSize: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &188173730
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 188173732}
- 108: {fileID: 188173731}
m_Layer: 0
m_Name: '[LIGHT] Spotlight'
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &188173731
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 188173730}
m_Enabled: 1
serializedVersion: 7
m_Type: 0
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 2.57
m_Range: 12.94
m_SpotAngle: 56
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.1
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &188173732
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 188173730}
m_LocalRotation: {x: 0.28993335, y: -0.20459291, z: -0.5390386, w: 0.7638834}
m_LocalPosition: {x: -1.85, y: 2.64, z: -6.397}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 12.793, y: -40.131, z: -75.40501}
m_Children: []
m_Father: {fileID: 195821303}
m_RootOrder: 1
--- !u!1 &195821302
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 195821303}
m_Layer: 0
m_Name: LIGHTS
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &195821303
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 195821302}
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 935283315}
- {fileID: 188173732}
- {fileID: 1387304066}
- {fileID: 770573971}
m_Father: {fileID: 0}
m_RootOrder: 4
--- !u!1 &770573969
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 770573971}
- 108: {fileID: 770573970}
m_Layer: 0
m_Name: '[LIGHT] Green Spotlight'
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &770573970
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 770573969}
m_Enabled: 1
serializedVersion: 7
m_Type: 0
m_Color: {r: 0.07586217, g: 1, b: 0, a: 1}
m_Intensity: 2.68
m_Range: 15
m_SpotAngle: 37
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &770573971
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 770573969}
m_LocalRotation: {x: 0.0023665242, y: -0.5134523, z: -0.8581137, w: 0.0014160047}
m_LocalPosition: {x: 4.56, y: -8.77, z: -3.03}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 241.77, y: 179.351, z: 0.57199097}
m_Children: []
m_Father: {fileID: 195821303}
m_RootOrder: 3
--- !u!1 &845252278
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 845252281}
- 33: {fileID: 845252280}
- 23: {fileID: 845252279}
m_Layer: 0
m_Name: Wall
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &845252279
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 845252278}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &845252280
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 845252278}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &845252281
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 845252278}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.28, y: 0.77, z: 2}
m_LocalScale: {x: 19.353024, y: 6.9264994, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
--- !u!1 &933136133
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 933136137}
- 33: {fileID: 933136136}
- 23: {fileID: 933136135}
- 114: {fileID: 933136134}
m_Layer: 0
m_Name: stretchyman static
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &933136134
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 933136133}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e075b9a3e08e2f74fbd651c858ab16ed, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 162719d41016c854abf0355feb0e14e8, type: 2}
initialSkinName: default
separatorSlotNames: []
zSpacing: 0
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 1
logErrors: 0
disableRenderingOnOverride: 1
--- !u!23 &933136135
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 933136133}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 824cfb62bcbe3db49a3ce6db7e3757d1, type: 2}
m_SubsetIndices:
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_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &933136136
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 933136133}
m_Mesh: {fileID: 0}
--- !u!4 &933136137
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 933136133}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -5.61, y: -3.69, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
--- !u!1 &935283313
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 935283315}
- 108: {fileID: 935283314}
m_Layer: 0
m_Name: '[LIGHT] Point light'
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &935283314
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 935283313}
m_Enabled: 1
serializedVersion: 7
m_Type: 2
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1
m_Range: 5
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &935283315
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 935283313}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -5.81, y: 0.56, z: -0.9}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 195821303}
m_RootOrder: 0
--- !u!1 &1313996752
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1313996753}
- 212: {fileID: 1313996754}
m_Layer: 0
m_Name: New Sprite
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1313996753
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1313996752}
m_LocalRotation: {x: 0.27059805, y: 0.65328157, z: 0.27059805, w: 0.6532815}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 90.00001, z: 45}
m_Children: []
m_Father: {fileID: 1387304066}
m_RootOrder: 0
--- !u!212 &1313996754
SpriteRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1313996752}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
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_SelectedWireframeHidden: 1
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: 718074e4e56a5404e824bf8e6571ea7d, type: 3}
m_Color: {r: 1, g: 0, b: 0, a: 1}
m_FlipX: 0
m_FlipY: 0
--- !u!1 &1387304064
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1387304066}
- 108: {fileID: 1387304065}
- 114: {fileID: 1387304067}
m_Layer: 0
m_Name: '[LIGHT] Rotating light'
m_TagString: Untagged
m_Icon: {fileID: 5132851093641282708, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &1387304065
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1387304064}
m_Enabled: 1
serializedVersion: 7
m_Type: 1
m_Color: {r: 1, g: 0.14482759, b: 0, a: 1}
m_Intensity: 1.96
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1387304066
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1387304064}
m_LocalRotation: {x: -0.7059173, y: -0.04099956, z: 0.705917, w: -0.04099958}
m_LocalPosition: {x: 0.077, y: 3.594, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: -186.648, y: 89.99999, z: 0}
m_Children:
- {fileID: 1313996753}
- {fileID: 1443231423}
m_Father: {fileID: 195821303}
m_RootOrder: 2
--- !u!114 &1387304067
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1387304064}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 12e291cb54756d04c9dd53ad6e00a126, type: 3}
m_Name:
m_EditorClassIdentifier:
direction: {x: 1, y: 0, z: 0}
speed: 1.5
--- !u!1 &1443231422
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1443231423}
- 212: {fileID: 1443231424}
m_Layer: 0
m_Name: New Sprite (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1443231423
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1443231422}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.70710677}
m_LocalPosition: {x: 0, y: 0.015, z: -0.234}
m_LocalScale: {x: 1.5390148, y: 1.5390143, z: 1.5390143}
m_LocalEulerAnglesHint: {x: 0, y: 90.00001, z: 0}
m_Children: []
m_Father: {fileID: 1387304066}
m_RootOrder: 1
--- !u!212 &1443231424
SpriteRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1443231422}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_SubsetIndices:
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_SelectedWireframeHidden: 1
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 7
m_Sprite: {fileID: 21300000, guid: 718074e4e56a5404e824bf8e6571ea7d, type: 3}
m_Color: {r: 0, g: 0, b: 0, a: 1}
m_FlipX: 0
m_FlipY: 0
--- !u!1 &1628453470
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1628453474}
- 33: {fileID: 1628453473}
- 23: {fileID: 1628453472}
- 114: {fileID: 1628453471}
m_Layer: 0
m_Name: stretchyman animated
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1628453471
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1628453470}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 11400000, guid: 162719d41016c854abf0355feb0e14e8, type: 2}
initialSkinName: default
separatorSlotNames: []
zSpacing: 0
renderMeshes: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
calculateNormals: 0
calculateTangents: 1
logErrors: 0
disableRenderingOnOverride: 1
_animationName: sneak
loop: 1
timeScale: 0.25
--- !u!23 &1628453472
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1628453470}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 824cfb62bcbe3db49a3ce6db7e3757d1, type: 2}
m_SubsetIndices:
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_SelectedWireframeHidden: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!33 &1628453473
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1628453470}
m_Mesh: {fileID: 0}
--- !u!4 &1628453474
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1628453470}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -6.47, y: -3.59, z: 1.03}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
--- !u!1 &1667748200
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1667748205}
- 20: {fileID: 1667748204}
- 92: {fileID: 1667748203}
- 124: {fileID: 1667748202}
- 81: {fileID: 1667748201}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1667748201
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1667748200}
m_Enabled: 1
--- !u!124 &1667748202
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1667748200}
m_Enabled: 1
--- !u!92 &1667748203
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1667748200}
m_Enabled: 1
--- !u!20 &1667748204
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1667748200}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.029411793, g: 0.028979266, b: 0.028979266, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &1667748205
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1667748200}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0862248ab668ce749845b0d7de5c6355
timeCreated: 1479531945
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +1,4 @@
/******************************************************************************
/******************************************************************************
* Spine Runtimes Software License v2.5
*
* Copyright (c) 2013-2016, Esoteric Software
@ -28,22 +28,36 @@
* POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
// Contributed by: Mitch Thompson
using UnityEngine;
using Spine.Unity;
using UnityEngine.UI;
public class Chimera : MonoBehaviour {
namespace Spine.Unity.Examples {
public class AttackSpineboy : MonoBehaviour {
public SkeletonDataAsset skeletonDataSource;
public SkeletonAnimation spineboy;
public SpineGauge gauge;
public Text healthText;
[SpineAttachment(currentSkinOnly: false, returnAttachmentPath: true, dataField: "skeletonDataSource")]
public string attachmentPath;
int currentHealth = 100;
const int maxHealth = 100;
[SpineSlot]
public string targetSlot;
void Update () {
if (Input.GetKeyDown(KeyCode.Space)) {
currentHealth -= 10;
healthText.text = currentHealth + "/" + maxHealth;
void Start() {
GetComponent<SkeletonRenderer>().skeleton.FindSlot(targetSlot).Attachment = SpineAttachment.GetAttachment(attachmentPath, skeletonDataSource);
if (currentHealth > 0) {
spineboy.state.SetAnimation(0, "hit", false);
spineboy.state.AddAnimation(0, "idle", true, 0);
gauge.fillPercent = (float)currentHealth/(float)maxHealth;
} else {
if (currentHealth >= 0) {
gauge.fillPercent = 0;
spineboy.state.SetAnimation(0, "death", false).TrackEnd = float.PositiveInfinity;
}
}
}
}
}
}

View File

@ -1,5 +1,7 @@
fileFormatVersion: 2
guid: 5053fe97a7657b5418b0c307b7338b0c
guid: 7eab8e63d650dc74c80d142cd4b9fe4b
timeCreated: 1480095094
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []

View File

@ -34,69 +34,71 @@ using UnityEngine;
using System.Collections;
using Spine.Unity;
public class FootSoldierExample : MonoBehaviour {
[SpineAnimation("Idle")]
public string idleAnimation;
namespace Spine.Unity.Examples {
public class FootSoldierExample : MonoBehaviour {
[SpineAnimation("Idle")]
public string idleAnimation;
[SpineAnimation]
public string attackAnimation;
[SpineAnimation]
public string attackAnimation;
[SpineAnimation]
public string moveAnimation;
[SpineAnimation]
public string moveAnimation;
[SpineSlot]
public string eyesSlot;
[SpineSlot]
public string eyesSlot;
[SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")]
public string eyesOpenAttachment;
[SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")]
public string eyesOpenAttachment;
[SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")]
public string blinkAttachment;
[SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")]
public string blinkAttachment;
[Range(0, 0.2f)]
public float blinkDuration = 0.05f;
[Range(0, 0.2f)]
public float blinkDuration = 0.05f;
public KeyCode attackKey = KeyCode.Mouse0;
public KeyCode rightKey = KeyCode.D;
public KeyCode leftKey = KeyCode.A;
public KeyCode attackKey = KeyCode.Mouse0;
public KeyCode rightKey = KeyCode.D;
public KeyCode leftKey = KeyCode.A;
public float moveSpeed = 3;
public float moveSpeed = 3;
private SkeletonAnimation skeletonAnimation;
SkeletonAnimation skeletonAnimation;
void Awake() {
skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.OnRebuild += Apply;
}
void Awake () {
skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.OnRebuild += Apply;
}
void Apply(SkeletonRenderer skeletonRenderer) {
StartCoroutine("Blink");
}
void Apply (SkeletonRenderer skeletonRenderer) {
StartCoroutine("Blink");
}
void Update() {
if (Input.GetKey(attackKey)) {
skeletonAnimation.AnimationName = attackAnimation;
} else {
if (Input.GetKey(rightKey)) {
skeletonAnimation.AnimationName = moveAnimation;
skeletonAnimation.skeleton.FlipX = false;
transform.Translate(moveSpeed * Time.deltaTime, 0, 0);
} else if(Input.GetKey(leftKey)) {
skeletonAnimation.AnimationName = moveAnimation;
skeletonAnimation.skeleton.FlipX = true;
transform.Translate(-moveSpeed * Time.deltaTime, 0, 0);
void Update () {
if (Input.GetKey(attackKey)) {
skeletonAnimation.AnimationName = attackAnimation;
} else {
skeletonAnimation.AnimationName = idleAnimation;
if (Input.GetKey(rightKey)) {
skeletonAnimation.AnimationName = moveAnimation;
skeletonAnimation.skeleton.FlipX = false;
transform.Translate(moveSpeed * Time.deltaTime, 0, 0);
} else if(Input.GetKey(leftKey)) {
skeletonAnimation.AnimationName = moveAnimation;
skeletonAnimation.skeleton.FlipX = true;
transform.Translate(-moveSpeed * Time.deltaTime, 0, 0);
} else {
skeletonAnimation.AnimationName = idleAnimation;
}
}
}
IEnumerator Blink() {
while (true) {
yield return new WaitForSeconds(Random.Range(0.25f, 3f));
skeletonAnimation.skeleton.SetAttachment(eyesSlot, blinkAttachment);
yield return new WaitForSeconds(blinkDuration);
skeletonAnimation.skeleton.SetAttachment(eyesSlot, eyesOpenAttachment);
}
}
}
IEnumerator Blink() {
while (true) {
yield return new WaitForSeconds(Random.Range(0.25f, 3f));
skeletonAnimation.skeleton.SetAttachment(eyesSlot, blinkAttachment);
yield return new WaitForSeconds(blinkDuration);
skeletonAnimation.skeleton.SetAttachment(eyesSlot, eyesOpenAttachment);
}
}
}
}

View File

@ -29,36 +29,40 @@
*****************************************************************************/
using UnityEngine;
using System.Collections;
using Spine;
using Spine.Unity;
public class Goblins : MonoBehaviour {
private bool girlSkin;
private SkeletonAnimation skeletonAnimation;
private Bone headBone;
public void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>();
headBone = skeletonAnimation.skeleton.FindBone("head");
skeletonAnimation.UpdateLocal += UpdateLocal;
}
namespace Spine.Unity.Examples {
public class Goblins : MonoBehaviour {
SkeletonAnimation skeletonAnimation;
Bone headBone;
bool girlSkin;
// This is called after the animation is applied to the skeleton and can be used to adjust the bones dynamically.
public void UpdateLocal (ISkeletonAnimation skeletonRenderer) {
headBone.Rotation += 15;
}
public void OnMouseDown () {
skeletonAnimation.skeleton.SetSkin(girlSkin ? "goblin" : "goblingirl");
skeletonAnimation.skeleton.SetSlotsToSetupPose();
[Range(-360, 360)]
public float extraRotation;
girlSkin = !girlSkin;
public void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>();
headBone = skeletonAnimation.skeleton.FindBone("head");
skeletonAnimation.UpdateLocal += UpdateLocal;
}
// This is called after the animation is applied to the skeleton and can be used to adjust the bones dynamically.
public void UpdateLocal (ISkeletonAnimation skeletonRenderer) {
headBone.Rotation += extraRotation;
}
if (girlSkin) {
skeletonAnimation.skeleton.SetAttachment("right hand item", null);
skeletonAnimation.skeleton.SetAttachment("left hand item", "spear");
} else
skeletonAnimation.skeleton.SetAttachment("left hand item", "dagger");
public void OnMouseDown () {
skeletonAnimation.skeleton.SetSkin(girlSkin ? "goblin" : "goblingirl");
skeletonAnimation.skeleton.SetSlotsToSetupPose();
girlSkin = !girlSkin;
if (girlSkin) {
skeletonAnimation.skeleton.SetAttachment("right hand item", null);
skeletonAnimation.skeleton.SetAttachment("left hand item", "spear");
} else
skeletonAnimation.skeleton.SetAttachment("left hand item", "dagger");
}
}
}
}

View File

@ -0,0 +1,112 @@
/******************************************************************************
* Spine Runtimes Software License v2.5
*
* Copyright (c) 2013-2016, Esoteric Software
* All rights reserved.
*
* You are granted a perpetual, non-exclusive, non-sublicensable, and
* non-transferable license to use, install, execute, and perform the Spine
* Runtimes software and derivative works solely for personal or internal
* use. Without the written permission of Esoteric Software (see Section 2 of
* the Spine Software License Agreement), you may not (a) modify, translate,
* adapt, or develop new applications using the Spine Runtimes or otherwise
* create derivative works or improvements of the Spine Runtimes or (b) remove,
* delete, alter, or obscure any trademarks or any copyright, trademark, patent,
* or other intellectual property or proprietary rights notices on or in the
* Software, including any copy thereof. Redistributions in binary or source
* form must include this license and terms.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
* USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
using UnityEngine;
using Spine.Unity.Modules.AttachmentTools;
namespace Spine.Unity.Examples {
public class MixAndMatch : MonoBehaviour {
#region Inspector
[Header("From AtlasAsset")]
public AtlasAsset handSource;
[SpineAtlasRegion("handSource")] public string handRegion = "hand";
[SpineAttachment] public string handAttachmentName;
[SpineSlot] public string handSlot;
public Vector2 newHandOffset;
public float newHandRotation;
public Texture2D handTexture;
[Header("From Sprite")]
public Sprite dagger;
public string daggerName = "dagger";
[SpineSlot] public string weaponSlot;
[Header("MeshAttachment.SetRegion")]
public bool applyHeadRegion = false;
public AtlasAsset headSource;
[SpineAtlasRegion("headSource")] public string headRegion;
[SpineSlot] public string headSlot;
[SpineAttachment] public string headAttachmentName;
[Header("Runtime Repack")]
public bool repack = true;
public Shader repackedShader;
[Header("Do not assign")]
public Texture2D runtimeAtlas;
public Material runtimeMaterial;
#endregion
void Start () {
var skeletonAnimation = GetComponent<SkeletonAnimation>();
var skeleton = skeletonAnimation.Skeleton;
// All attachment changes will be applied to the skin. We use a clone so other instances will not be affected.
var newSkin = skeleton.UnshareSkin(true, false, skeletonAnimation.AnimationState);
// Case 1: Create an attachment from an atlas.
RegionAttachment newHand = handSource.GetAtlas().FindRegion(handRegion).ToRegionAttachment("new hand");
newHand.SetPositionOffset(newHandOffset);
newHand.rotation = newHandRotation;
newHand.UpdateOffset();
int handSlotIndex = skeleton.FindSlotIndex(handSlot);
handTexture = newHand.GetRegion().ToTexture();
newSkin.AddAttachment(handSlotIndex, handAttachmentName, newHand);
// Case 2: Create an attachment from a Unity Sprite (Sprite texture needs to be Read/Write Enabled in the inspector.
RegionAttachment newWeapon = dagger.ToRegionAttachmentPMAClone(Shader.Find("Spine/Skeleton"));
newWeapon.SetScale(1.5f, 1.5f);
newWeapon.UpdateOffset();
int weaponSlotIndex = skeleton.FindSlotIndex(weaponSlot);
newSkin.AddAttachment(weaponSlotIndex, daggerName, newWeapon);
// Case 3: Change an existing attachment's backing region.
if (applyHeadRegion) {
AtlasRegion spineBoyHead = headSource.GetAtlas().FindRegion(headRegion);
int headSlotIndex = skeleton.FindSlotIndex(headSlot);
var newHead = newSkin.GetAttachment(headSlotIndex, headAttachmentName).GetClone(true);
newHead.SetRegion(spineBoyHead);
newSkin.AddAttachment(headSlotIndex, headAttachmentName, newHead);
}
// Case 4: Repacking a mixed-and-matched skin to minimize draw calls.
// Repacking requires that you set all source textures/sprites/atlases to be Read/Write enabled in the inspector.
if (repack)
newSkin = newSkin.GetRepackedSkin("repacked", repackedShader, out runtimeMaterial, out runtimeAtlas);
skeleton.SetSkin(newSkin);
skeleton.SetToSetupPose();
skeleton.SetAttachment(weaponSlot, daggerName);
}
}
}

View File

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

View File

@ -32,85 +32,76 @@ using UnityEngine;
using System.Collections;
using Spine.Unity;
public class RaggedySpineboy : MonoBehaviour {
namespace Spine.Unity.Examples {
public class RaggedySpineboy : MonoBehaviour {
public LayerMask groundMask;
public float restoreDuration = 0.5f;
public Vector2 launchVelocity = new Vector2(50,100);
public LayerMask groundMask;
public float restoreDuration = 0.5f;
public Vector2 launchVelocity = new Vector2(50,100);
Spine.Unity.Modules.SkeletonRagdoll2D ragdoll;
Collider2D naturalCollider;
Spine.Unity.Modules.SkeletonRagdoll2D ragdoll;
Collider2D naturalCollider;
void Start () {
ragdoll = GetComponent<Spine.Unity.Modules.SkeletonRagdoll2D>();
naturalCollider = GetComponent<Collider2D>();
}
void AddRigidbody () {
var rb = gameObject.AddComponent<Rigidbody2D>();
#if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5
rb.freezeRotation = true;
#else
rb.fixedAngle = true;
#endif
naturalCollider.enabled = true;
}
void RemoveRigidbody () {
Destroy(GetComponent<Rigidbody2D>());
naturalCollider.enabled = false;
}
void Update () {
}
void OnMouseUp () {
if (naturalCollider.enabled) {
Launch();
}
}
void Launch () {
RemoveRigidbody();
ragdoll.Apply();
ragdoll.RootRigidbody.velocity = new Vector2(Random.Range(-launchVelocity.x, launchVelocity.x), launchVelocity.y);
StartCoroutine(WaitUntilStopped());
}
IEnumerator Restore () {
Vector3 estimatedPos = ragdoll.EstimatedSkeletonPosition;
Vector3 rbPosition = ragdoll.RootRigidbody.position;
Vector3 skeletonPoint = estimatedPos;
RaycastHit2D hit = Physics2D.Raycast((Vector2)rbPosition, (Vector2)(estimatedPos - rbPosition), Vector3.Distance(estimatedPos, rbPosition), groundMask);
if (hit.collider != null)
skeletonPoint = hit.point;
ragdoll.RootRigidbody.isKinematic = true;
ragdoll.SetSkeletonPosition(skeletonPoint);
yield return ragdoll.SmoothMix(0, restoreDuration);
ragdoll.Remove();
AddRigidbody();
}
IEnumerator WaitUntilStopped () {
yield return new WaitForSeconds(0.5f);
float t = 0;
while (t < 0.5f) {
if (ragdoll.RootRigidbody.velocity.magnitude > 0.09f)
t = 0;
else
t += Time.deltaTime;
yield return null;
void Start () {
ragdoll = GetComponent<Spine.Unity.Modules.SkeletonRagdoll2D>();
naturalCollider = GetComponent<Collider2D>();
}
StartCoroutine(Restore());
void AddRigidbody () {
var rb = gameObject.AddComponent<Rigidbody2D>();
#if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5
rb.freezeRotation = true;
#else
rb.fixedAngle = true;
#endif
naturalCollider.enabled = true;
}
void RemoveRigidbody () {
Destroy(GetComponent<Rigidbody2D>());
naturalCollider.enabled = false;
}
void OnMouseUp () {
if (naturalCollider.enabled)
Launch();
}
void Launch () {
RemoveRigidbody();
ragdoll.Apply();
ragdoll.RootRigidbody.velocity = new Vector2(Random.Range(-launchVelocity.x, launchVelocity.x), launchVelocity.y);
StartCoroutine(WaitUntilStopped());
}
IEnumerator Restore () {
Vector3 estimatedPos = ragdoll.EstimatedSkeletonPosition;
Vector3 rbPosition = ragdoll.RootRigidbody.position;
Vector3 skeletonPoint = estimatedPos;
RaycastHit2D hit = Physics2D.Raycast((Vector2)rbPosition, (Vector2)(estimatedPos - rbPosition), Vector3.Distance(estimatedPos, rbPosition), groundMask);
if (hit.collider != null)
skeletonPoint = hit.point;
ragdoll.RootRigidbody.isKinematic = true;
ragdoll.SetSkeletonPosition(skeletonPoint);
yield return ragdoll.SmoothMix(0, restoreDuration);
ragdoll.Remove();
AddRigidbody();
}
IEnumerator WaitUntilStopped () {
yield return new WaitForSeconds(0.5f);
float t = 0;
while (t < 0.5f) {
t = (ragdoll.RootRigidbody.velocity.magnitude > 0.09f) ? 0 : t + Time.deltaTime;
yield return null;
}
StartCoroutine(Restore());
}
}
}

View File

@ -0,0 +1,12 @@
using UnityEngine;
namespace Spine.Unity.Examples {
public class Rotator : MonoBehaviour {
public Vector3 direction = new Vector3(0, 0, 1f);
public float speed = 1f;
void Update () {
transform.Rotate(direction * (speed * Time.deltaTime * 100f));
}
}
}

View File

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

View File

@ -29,46 +29,47 @@
*****************************************************************************/
using UnityEngine;
using System.Collections;
using Spine.Unity;
[ExecuteInEditMode]
[RequireComponent(typeof(SkeletonRenderer))]
public class SpineGauge : MonoBehaviour {
namespace Spine.Unity.Examples {
[ExecuteInEditMode]
[RequireComponent(typeof(SkeletonRenderer))]
public class SpineGauge : MonoBehaviour {
#region Inspector
[Range(0,1)]
public float fillPercent = 0;
#region Inspector
[Range(0,1)]
public float fillPercent = 0;
[SpineAnimation]
public string fillAnimationName;
#endregion
[SpineAnimation]
public string fillAnimationName;
#endregion
SkeletonRenderer skeletonRenderer;
Spine.Animation fillAnimation;
SkeletonRenderer skeletonRenderer;
Spine.Animation fillAnimation;
void Awake () {
skeletonRenderer = GetComponent<SkeletonRenderer>();
}
void Update () {
SetGaugePercent(fillPercent);
}
public void SetGaugePercent (float x) {
if (skeletonRenderer == null) return;
var skeleton = skeletonRenderer.skeleton; if (skeleton == null) return;
// Make super-sure that fillAnimation isn't null. Early exit if it is.
if (fillAnimation == null) {
fillAnimation = skeleton.Data.FindAnimation(fillAnimationName);
if (fillAnimation == null) return;
void Awake () {
skeletonRenderer = GetComponent<SkeletonRenderer>();
}
fillAnimation.Apply(skeleton, 0, x, false, null, 1f, true, false);
skeleton.Update(Time.deltaTime);
skeleton.UpdateWorldTransform();
void Update () {
SetGaugePercent(fillPercent);
}
public void SetGaugePercent (float percent) {
if (skeletonRenderer == null) return;
var skeleton = skeletonRenderer.skeleton; if (skeleton == null) return;
// Make super-sure that fillAnimation isn't null.
if (fillAnimation == null) {
fillAnimation = skeleton.Data.FindAnimation(fillAnimationName);
if (fillAnimation == null) return;
}
fillAnimation.Apply(skeleton, 0, percent, false, null, 1f, true, false);
skeleton.Update(Time.deltaTime);
skeleton.UpdateWorldTransform();
}
}
}

View File

@ -33,25 +33,28 @@ using UnityEngine;
using Spine;
using Spine.Unity;
public class Spineboy : MonoBehaviour {
SkeletonAnimation skeletonAnimation;
namespace Spine.Unity.Examples {
public class Spineboy : MonoBehaviour {
SkeletonAnimation skeletonAnimation;
public void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>(); // Get the SkeletonAnimation component for the GameObject this script is attached to.
public void Start () {
skeletonAnimation = GetComponent<SkeletonAnimation>(); // Get the SkeletonAnimation component for the GameObject this script is attached to.
skeletonAnimation.state.Event += HandleEvent;; // Call our method any time an animation fires an event.
skeletonAnimation.state.End += (entry) => Debug.Log("start: " + entry.trackIndex); // A lambda can be used for the callback instead of a method.
skeletonAnimation.state.Event += HandleEvent;; // Call our method any time an animation fires an event.
skeletonAnimation.state.End += (entry) => Debug.Log("start: " + entry.trackIndex); // A lambda can be used for the callback instead of a method.
skeletonAnimation.state.AddAnimation(0, "jump", false, 2); // Queue jump to be played on track 0 two seconds after the starting animation.
skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation.
skeletonAnimation.state.AddAnimation(0, "jump", false, 2); // Queue jump to be played on track 0 two seconds after the starting animation.
skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation.
}
void HandleEvent (TrackEntry trackEntry, Spine.Event e) {
Debug.Log(trackEntry.trackIndex + " " + trackEntry.animation.name + ": event " + e + ", " + e.Int);
}
public void OnMouseDown () {
skeletonAnimation.state.SetAnimation(0, "jump", false); // Set jump to be played on track 0 immediately.
skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation.
}
}
void HandleEvent (TrackEntry trackEntry, Spine.Event e) {
Debug.Log(trackEntry.trackIndex + " " + trackEntry.animation.name + ": event " + e + ", " + e.Int);
}
public void OnMouseDown () {
skeletonAnimation.state.SetAnimation(0, "jump", false); // Set jump to be played on track 0 immediately.
skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation.
}
}

View File

@ -34,48 +34,52 @@ using Spine.Unity;
using Spine.Unity.Modules;
public class SpineboyPole : MonoBehaviour {
public SkeletonAnimation skeletonAnimation;
public SkeletonRenderSeparator separator;
namespace Spine.Unity.Examples {
public class SpineboyPole : MonoBehaviour {
public SkeletonAnimation skeletonAnimation;
public SkeletonRenderSeparator separator;
[Space(18)]
[SpineAnimation]
public string run;
[SpineAnimation]
public string pole;
public float startX;
public float endX;
[Space(18)]
[SpineAnimation]
public string run;
[SpineAnimation]
public string pole;
public float startX;
public float endX;
const float Speed = 18f;
const float RunTimeScale = 1.5f;
const float Speed = 18f;
const float RunTimeScale = 1.5f;
IEnumerator Start () {
var state = skeletonAnimation.state;
IEnumerator Start () {
var state = skeletonAnimation.state;
while (true) {
// Run phase
SetXPosition(startX);
separator.enabled = false; // Disable Separator during run.
state.SetAnimation(0, run, true);
state.TimeScale = RunTimeScale;
while (true) {
// Run phase
SetXPosition(startX);
separator.enabled = false; // Disable Separator during run.
state.SetAnimation(0, run, true);
state.TimeScale = RunTimeScale;
while (transform.localPosition.x < endX) {
transform.Translate(Vector3.right * Speed * Time.deltaTime);
yield return null;
while (transform.localPosition.x < endX) {
transform.Translate(Vector3.right * Speed * Time.deltaTime);
yield return null;
}
// Hit phase
SetXPosition(endX);
separator.enabled = true; // Enable Separator when hit
var poleTrack = state.SetAnimation(0, pole, false);
float duration = poleTrack.TrackEnd;
poleTrack.TrackEnd = float.PositiveInfinity;
yield return new WaitForSeconds(duration + 1f);
}
}
// Hit phase
SetXPosition(endX);
separator.enabled = true; // Enable Separator when hit
var poleTrack = state.SetAnimation(0, pole, false);
yield return new WaitForSpineAnimationComplete(poleTrack);
yield return new WaitForSeconds(1f);
void SetXPosition (float x) {
var tp = transform.localPosition;
tp.x = x;
transform.localPosition = tp;
}
}
void SetXPosition (float x) {
var tp = transform.localPosition;
tp.x = x;
transform.localPosition = tp;
}
}

View File

@ -1,9 +1,30 @@
fileFormatVersion: 2
guid: 6bc52290ef03f2846ba38d67e2823598
timeCreated: 1467205225
timeCreated: 1479419653
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
fileIDToRecycleName:
21300000: L_rear_thigh
21300002: L_wing01
21300004: L_wing02
21300006: L_wing03
21300008: L_wing05
21300010: L_wing06
21300012: R_wing01
21300014: R_wing02
21300016: R_wing03
21300018: R_wing05
21300020: R_wing06
21300022: R_wing07
21300024: R_wing08
21300026: R_wing09
21300028: back
21300030: chest
21300032: front_toeA
21300034: head
21300036: logo
21300038: tail01
21300040: tail03
serializedVersion: 2
mipmaps:
mipMapMode: 0
@ -46,10 +67,285 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
serializedVersion: 2
sprites:
- serializedVersion: 2
name: L_rear_thigh
rect:
serializedVersion: 2
x: 895
y: 856
width: 91
height: 148
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing01
rect:
serializedVersion: 2
x: 814
y: 96
width: 191
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing02
rect:
serializedVersion: 2
x: 714
y: 566
width: 179
height: 269
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing03
rect:
serializedVersion: 2
x: 785
y: 354
width: 186
height: 207
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing05
rect:
serializedVersion: 2
x: 2
y: 797
width: 213
height: 218
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing06
rect:
serializedVersion: 2
x: 2
y: 464
width: 192
height: 331
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing01
rect:
serializedVersion: 2
x: 502
y: 96
width: 310
height: 219
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing02
rect:
serializedVersion: 2
x: 204
y: 358
width: 305
height: 203
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing03
rect:
serializedVersion: 2
x: 511
y: 317
width: 272
height: 247
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing05
rect:
serializedVersion: 2
x: 196
y: 563
width: 251
height: 229
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing06
rect:
serializedVersion: 2
x: 2
y: 96
width: 200
height: 366
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing07
rect:
serializedVersion: 2
x: 449
y: 566
width: 263
height: 200
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing08
rect:
serializedVersion: 2
x: 467
y: 768
width: 234
height: 254
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing09
rect:
serializedVersion: 2
x: 217
y: 794
width: 248
height: 204
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: back
rect:
serializedVersion: 2
x: 703
y: 837
width: 190
height: 185
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: chest
rect:
serializedVersion: 2
x: 895
y: 718
width: 122
height: 136
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: front_toeA
rect:
serializedVersion: 2
x: 976
y: 2
width: 29
height: 50
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: head
rect:
serializedVersion: 2
x: 204
y: 96
width: 296
height: 260
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: logo
rect:
serializedVersion: 2
x: 2
y: 2
width: 897
height: 92
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: tail01
rect:
serializedVersion: 2
x: 895
y: 563
width: 120
height: 153
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: tail03
rect:
serializedVersion: 2
x: 901
y: 2
width: 73
height: 92
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
outline: []
spritePackingTag:
userData:

View File

@ -1,9 +1,28 @@
fileFormatVersion: 2
guid: 12c126994123f12468cf4c5a2684078a
timeCreated: 1467205225
timeCreated: 1479419653
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
fileIDToRecycleName:
21300000: L_front_leg
21300002: L_front_thigh
21300004: L_rear_leg
21300006: L_wing04
21300008: L_wing07
21300010: L_wing08
21300012: L_wing09
21300014: R_front_leg
21300016: R_front_thigh
21300018: R_rear_leg
21300020: R_rear_thigh
21300022: R_wing04
21300024: chin
21300026: front_toeB
21300028: rear-toe
21300030: tail02
21300032: tail04
21300034: tail05
21300036: tail06
serializedVersion: 2
mipmaps:
mipMapMode: 0
@ -46,10 +65,259 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
serializedVersion: 2
sprites:
- serializedVersion: 2
name: L_front_leg
rect:
serializedVersion: 2
x: 391
y: 287
width: 57
height: 84
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_front_thigh
rect:
serializedVersion: 2
x: 446
y: 171
width: 84
height: 72
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_rear_leg
rect:
serializedVersion: 2
x: 888
y: 2
width: 132
height: 168
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing04
rect:
serializedVersion: 2
x: 256
y: 150
width: 188
height: 135
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing07
rect:
serializedVersion: 2
x: 2
y: 148
width: 159
height: 255
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing08
rect:
serializedVersion: 2
x: 705
y: 2
width: 181
height: 164
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: L_wing09
rect:
serializedVersion: 2
x: 499
y: 2
width: 204
height: 167
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_front_leg
rect:
serializedVersion: 2
x: 273
y: 389
width: 101
height: 89
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_front_thigh
rect:
serializedVersion: 2
x: 163
y: 298
width: 108
height: 108
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_rear_leg
rect:
serializedVersion: 2
x: 273
y: 287
width: 116
height: 100
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_rear_thigh
rect:
serializedVersion: 2
x: 163
y: 148
width: 91
height: 148
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: R_wing04
rect:
serializedVersion: 2
x: 2
y: 2
width: 279
height: 144
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: chin
rect:
serializedVersion: 2
x: 283
y: 2
width: 214
height: 146
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: front_toeB
rect:
serializedVersion: 2
x: 590
y: 171
width: 56
height: 57
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: rear-toe
rect:
serializedVersion: 2
x: 2
y: 405
width: 77
height: 105
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: tail02
rect:
serializedVersion: 2
x: 151
y: 408
width: 120
height: 95
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: tail04
rect:
serializedVersion: 2
x: 532
y: 171
width: 56
height: 71
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: tail05
rect:
serializedVersion: 2
x: 648
y: 171
width: 52
height: 59
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: tail06
rect:
serializedVersion: 2
x: 81
y: 405
width: 68
height: 95
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
outline: []
spritePackingTag:
userData:

View File

@ -15,16 +15,14 @@ Material:
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 6bc52290ef03f2846ba38d67e2823598, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 6bc52290ef03f2846ba38d67e2823598, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _Cutoff
second: 0.1
m_Colors: {}
- first:
name: _Cutoff
second: 0.1
m_Colors: []

View File

@ -15,16 +15,14 @@ Material:
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 12c126994123f12468cf4c5a2684078a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 12c126994123f12468cf4c5a2684078a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _Cutoff
second: 0.1
m_Colors: {}
- first:
name: _Cutoff
second: 0.1
m_Colors: []

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 49441e5a1682e564694545bd9b509785
timeCreated: 1467205225
timeCreated: 1479419653
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
@ -46,9 +46,11 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 5
buildTargetSettings: []
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:

View File

@ -15,16 +15,14 @@ Material:
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 49441e5a1682e564694545bd9b509785, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 49441e5a1682e564694545bd9b509785, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _Cutoff
second: 0.1
m_Colors: {}
- first:
name: _Cutoff
second: 0.1
m_Colors: []

View File

@ -1,13 +1,17 @@
fileFormatVersion: 2
guid: ddb89f63d0296cf4f8572b0448bb6b30
timeCreated: 1467205225
timeCreated: 1480096533
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
fileIDToRecycleName:
21300000: Equipment/shield1
21300002: Equipment/shield2
21300004: Equipment/sword1
21300006: Equipment/sword4
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
@ -46,10 +50,64 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: 5
spriteTessellationDetail: -1
textureType: 0
buildTargetSettings: []
spriteSheet:
sprites: []
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Equipment/shield1
rect:
serializedVersion: 2
x: 220
y: 24
width: 118
height: 71
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: Equipment/shield2
rect:
serializedVersion: 2
x: 340
y: 24
width: 111
height: 82
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: Equipment/sword1
rect:
serializedVersion: 2
x: 2
y: 95
width: 161
height: 31
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
- serializedVersion: 2
name: Equipment/sword4
rect:
serializedVersion: 2
x: 2
y: 24
width: 216
height: 69
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
tessellationDetail: -1
outline: []
spritePackingTag:
userData:

View File

@ -15,16 +15,14 @@ Material:
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: ddb89f63d0296cf4f8572b0448bb6b30, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: ddb89f63d0296cf4f8572b0448bb6b30, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _Cutoff
second: 0.1
m_Colors: {}
- first:
name: _Cutoff
second: 0.1
m_Colors: []

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 57b57f94df266f94ea0981915a4472e1
timeCreated: 1467205225
timeCreated: 1479419653
licenseType: Free
TextureImporter:
fileIDToRecycleName: {}
@ -46,9 +46,11 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 5
buildTargetSettings: []
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:

View File

@ -15,16 +15,14 @@ Material:
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 57b57f94df266f94ea0981915a4472e1, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 57b57f94df266f94ea0981915a4472e1, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _Cutoff
second: 0.1
m_Colors: {}
- first:
name: _Cutoff
second: 0.1
m_Colors: []

Some files were not shown because too many files have changed in this diff Show More