diff --git a/Assets/Art/Idle-Sheet.png.meta b/Assets/Art/Idle-Sheet.png.meta new file mode 100644 index 0000000..df7c26e --- /dev/null +++ b/Assets/Art/Idle-Sheet.png.meta @@ -0,0 +1,390 @@ +fileFormatVersion: 2 +guid: ee688c75d9060e742a4b07b60973dbd0 +TextureImporter: + internalIDToNameTable: + - first: + 213: -3145328045451892686 + second: Idle-Sheet_0 + - first: + 213: -6552843917330368855 + second: Idle-Sheet_1 + - first: + 213: 7309844833446704383 + second: Idle-Sheet_2 + - first: + 213: -1701584443341091289 + second: Idle-Sheet_3 + - first: + 213: 4619437029804489033 + second: Idle-Sheet_4 + - first: + 213: -4551553420487462637 + second: Idle-Sheet_5 + - first: + 213: -8319592003026277099 + second: Idle-Sheet_6 + - first: + 213: -3047600694729459556 + second: Idle-Sheet_7 + - first: + 213: 3010836181190408298 + second: Idle-Sheet_8 + - first: + 213: 8233634471385200856 + second: Idle-Sheet_9 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Idle-Sheet_0 + rect: + serializedVersion: 2 + x: 8 + y: 29 + width: 15 + height: 31 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 23824ccaecc8954d0800000000000000 + internalID: -3145328045451892686 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_1 + rect: + serializedVersion: 2 + x: 38 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 9a6b1f6fc2f9f05a0800000000000000 + internalID: -6552843917330368855 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_2 + rect: + serializedVersion: 2 + x: 70 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ff4b0d49529c17560800000000000000 + internalID: 7309844833446704383 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_3 + rect: + serializedVersion: 2 + x: 102 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 72ec253d6f1c268e0800000000000000 + internalID: -1701584443341091289 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_4 + rect: + serializedVersion: 2 + x: 134 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 94938c7f0898b1040800000000000000 + internalID: 4619437029804489033 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_5 + rect: + serializedVersion: 2 + x: 4 + y: 0 + width: 21 + height: 26 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 31171ab7742a5d0c0800000000000000 + internalID: -4551553420487462637 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_6 + rect: + serializedVersion: 2 + x: 38 + y: 2 + width: 22 + height: 25 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 51d207ff62fda8c80800000000000000 + internalID: -8319592003026277099 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_7 + rect: + serializedVersion: 2 + x: 69 + y: 6 + width: 19 + height: 21 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c98ba65a05fb4b5d0800000000000000 + internalID: -3047600694729459556 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_8 + rect: + serializedVersion: 2 + x: 106 + y: 3 + width: 15 + height: 24 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a687fb00e83a8c920800000000000000 + internalID: 3010836181190408298 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Idle-Sheet_9 + rect: + serializedVersion: 2 + x: 138 + y: 5 + width: 15 + height: 22 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8d873559deeb34270800000000000000 + internalID: 8233634471385200856 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + Idle-Sheet_0: -3145328045451892686 + Idle-Sheet_1: -6552843917330368855 + Idle-Sheet_2: 7309844833446704383 + Idle-Sheet_3: -1701584443341091289 + Idle-Sheet_4: 4619437029804489033 + Idle-Sheet_5: -4551553420487462637 + Idle-Sheet_6: -8319592003026277099 + Idle-Sheet_7: -3047600694729459556 + Idle-Sheet_8: 3010836181190408298 + Idle-Sheet_9: 8233634471385200856 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Idle.aseprite.meta b/Assets/Art/Idle.aseprite.meta new file mode 100644 index 0000000..a527f73 --- /dev/null +++ b/Assets/Art/Idle.aseprite.meta @@ -0,0 +1,305 @@ +fileFormatVersion: 2 +guid: 00487e6dd5045c34a8701203824577f4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 62a9f0aa5b59740cfbadc7e5f9823bb0, type: 3} + importerVersion: 2 + textureImporterSettings: + alphaSource: 1 + mipMapMode: 0 + enableMipMap: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + convertToNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + swizzle: 50462976 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + nPOTScale: 1 + sRGBTexture: 1 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 0 + flipbookColumns: 0 + ignorePngGamma: 0 + cookieMode: 0 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + normalMap: 0 + textureFormat: 0 + maxTextureSize: 0 + lightmap: 0 + compressionQuality: 0 + linearTexture: 0 + grayScaleToAlpha: 0 + rGBM: 0 + cubemapConvolutionSteps: 0 + cubemapConvolutionExponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + previousAsepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + asepriteImporterSettings: + fileImportMode: 1 + importHiddenLayers: 0 + layerImportMode: 1 + defaultPivotSpace: 0 + defaultPivotAlignment: 7 + customPivotPosition: {x: 0.5, y: 0.5} + mosaicPadding: 4 + spritePadding: 0 + generateModelPrefab: 1 + generateAnimationClips: 1 + addSortingGroup: 1 + addShadowCasters: 0 + generateIndividualEvents: 1 + generateSpriteAtlas: 1 + importFileNodeState: 1 + platformSettingsDirtyTick: 0 + textureAssetName: + singleSpriteImportData: + - name: + originalName: + pivot: {x: 0, y: 0} + alignment: 0 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + spriteID: + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 0, y: 0} + animatedSpriteImportData: + - name: Frame_0 + originalName: + pivot: {x: 0.57894737, y: 0} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 4 + y: 4 + width: 19 + height: 59 + spriteID: 9c0ffe55b715a7846bb2fb9d02c48665 + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 4, y: 4} + - name: Frame_1 + originalName: + pivot: {x: 0.45000002, y: -0.054545455} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 31 + y: 4 + width: 20 + height: 55 + spriteID: b0071601a00eb95428a706dcf63e2246 + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 31, y: 4} + - name: Frame_2 + originalName: + pivot: {x: 0.5882353, y: -0.13725491} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 59 + y: 4 + width: 17 + height: 51 + spriteID: fed4daef1ccd2994eba43ec6b39ca733 + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 59, y: 4} + - name: Frame_3 + originalName: + pivot: {x: 0.5294118, y: -0.074074075} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 31 + y: 67 + width: 17 + height: 54 + spriteID: 17bdc4c31380669428614f4d18fd64ea + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 31, y: 67} + - name: Frame_4 + originalName: + pivot: {x: 0.5294118, y: -0.11538462} + alignment: 9 + border: {x: 0, y: 0, z: 0, w: 0} + customData: + rect: + serializedVersion: 2 + x: 4 + y: 71 + width: 17 + height: 52 + spriteID: c5c59e2cf43ada64cb43c9fd997f1c30 + spriteBone: [] + spriteOutline: [] + vertices: [] + spritePhysicsOutline: [] + indices: + edges: [] + tessellationDetail: 0 + uvTransform: {x: 4, y: 71} + spriteSheetImportData: [] + tileSetImportData: [] + asepriteLayers: + - layerIndex: 0 + uuid: + value0: 1266177044 + value1: 0 + value2: 0 + value3: 0 + guid: 0 + name: Idle + layerFlags: 0 + layerType: 0 + blendMode: 0 + cells: + - name: Frame_0 + frameIndex: 0 + additiveSortOrder: 0 + cellRect: + x: 5 + y: 0 + width: 19 + height: 59 + spriteId: 9c0ffe55b715a7846bb2fb9d02c48665 + - name: Frame_1 + frameIndex: 1 + additiveSortOrder: 0 + cellRect: + x: 7 + y: 3 + width: 20 + height: 55 + spriteId: b0071601a00eb95428a706dcf63e2246 + - name: Frame_2 + frameIndex: 2 + additiveSortOrder: 0 + cellRect: + x: 6 + y: 7 + width: 17 + height: 51 + spriteId: fed4daef1ccd2994eba43ec6b39ca733 + - name: Frame_3 + frameIndex: 3 + additiveSortOrder: 0 + cellRect: + x: 7 + y: 4 + width: 17 + height: 54 + spriteId: 17bdc4c31380669428614f4d18fd64ea + - name: Frame_4 + frameIndex: 4 + additiveSortOrder: 0 + cellRect: + x: 7 + y: 6 + width: 17 + height: 52 + spriteId: c5c59e2cf43ada64cb43c9fd997f1c30 + linkedCells: [] + tileCells: [] + tileSetIndex: 0 + parentIndex: -1 + tileSets: [] + platformSettings: [] + generatePhysicsShape: 0 + secondarySpriteTextures: [] + spritePackingTag: + canvasSize: {x: 32, y: 64} + previousTextureSize: {x: 128, y: 128} diff --git a/Assets/Art/WhiteIdle-Sheet.png.meta b/Assets/Art/WhiteIdle-Sheet.png.meta new file mode 100644 index 0000000..89bc6dc --- /dev/null +++ b/Assets/Art/WhiteIdle-Sheet.png.meta @@ -0,0 +1,390 @@ +fileFormatVersion: 2 +guid: 066772fcfdc602a4a9de77ec278f6b15 +TextureImporter: + internalIDToNameTable: + - first: + 213: 8755586062601758735 + second: WhiteIdle-Sheet_0 + - first: + 213: -6498563521012007108 + second: WhiteIdle-Sheet_1 + - first: + 213: -355294566065011671 + second: WhiteIdle-Sheet_2 + - first: + 213: 6461784275695469678 + second: WhiteIdle-Sheet_3 + - first: + 213: 2172644080437676170 + second: WhiteIdle-Sheet_4 + - first: + 213: 298177540469929514 + second: WhiteIdle-Sheet_5 + - first: + 213: 7511295215646650169 + second: WhiteIdle-Sheet_6 + - first: + 213: -5570797389715581006 + second: WhiteIdle-Sheet_7 + - first: + 213: -7292519459637379912 + second: WhiteIdle-Sheet_8 + - first: + 213: 2272829048438686400 + second: WhiteIdle-Sheet_9 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: WhiteIdle-Sheet_0 + rect: + serializedVersion: 2 + x: 8 + y: 29 + width: 15 + height: 31 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: f082db58227128970800000000000000 + internalID: 8755586062601758735 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_1 + rect: + serializedVersion: 2 + x: 38 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c3f74c398e670d5a0800000000000000 + internalID: -6498563521012007108 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_2 + rect: + serializedVersion: 2 + x: 70 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 924811f797db11bf0800000000000000 + internalID: -355294566065011671 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_3 + rect: + serializedVersion: 2 + x: 102 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e648800109edca950800000000000000 + internalID: 6461784275695469678 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_4 + rect: + serializedVersion: 2 + x: 134 + y: 27 + width: 18 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a88c7dda748c62e10800000000000000 + internalID: 2172644080437676170 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_5 + rect: + serializedVersion: 2 + x: 4 + y: 0 + width: 21 + height: 26 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a26b5bba4e6532400800000000000000 + internalID: 298177540469929514 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_6 + rect: + serializedVersion: 2 + x: 38 + y: 2 + width: 22 + height: 25 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 93fa5bbb33b7d3860800000000000000 + internalID: 7511295215646650169 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_7 + rect: + serializedVersion: 2 + x: 69 + y: 6 + width: 19 + height: 21 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 2b754561a4d80b2b0800000000000000 + internalID: -5570797389715581006 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_8 + rect: + serializedVersion: 2 + x: 106 + y: 3 + width: 15 + height: 24 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8bcb0ba5034cbca90800000000000000 + internalID: -7292519459637379912 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: WhiteIdle-Sheet_9 + rect: + serializedVersion: 2 + x: 138 + y: 5 + width: 15 + height: 22 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 0c280634af5ba8f10800000000000000 + internalID: 2272829048438686400 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + WhiteIdle-Sheet_0: 8755586062601758735 + WhiteIdle-Sheet_1: -6498563521012007108 + WhiteIdle-Sheet_2: -355294566065011671 + WhiteIdle-Sheet_3: 6461784275695469678 + WhiteIdle-Sheet_4: 2172644080437676170 + WhiteIdle-Sheet_5: 298177540469929514 + WhiteIdle-Sheet_6: 7511295215646650169 + WhiteIdle-Sheet_7: -5570797389715581006 + WhiteIdle-Sheet_8: -7292519459637379912 + WhiteIdle-Sheet_9: 2272829048438686400 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Treat.prefab b/Assets/Prefabs/Treat.prefab new file mode 100644 index 0000000..c5073e0 --- /dev/null +++ b/Assets/Prefabs/Treat.prefab @@ -0,0 +1,106 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1000000000000000000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000000000000000001} + - component: {fileID: 1000000000000000002} + - component: {fileID: 1000000000000000003} + m_Layer: 0 + m_Name: Treat + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1000000000000000001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000000000000000000} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1000000000000000002 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000000000000000000} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_MaskInteraction: 0 + m_Sprite: {fileID: 0} + m_Color: {r: 1, g: 0.85, b: 0.2, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 0 + m_SpriteSortPoint: 0 +--- !u!114 &1000000000000000003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000000000000000000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 13a3649e0bdf48b4afa233a4a4b64820, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/Treat.prefab.meta b/Assets/Prefabs/Treat.prefab.meta new file mode 100644 index 0000000..fea98b3 --- /dev/null +++ b/Assets/Prefabs/Treat.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 31e630c3bd57412bb4882033297c1fbf +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Experiment.unity b/Assets/Scenes/Experiment.unity index 4efe4f7..32d382e 100644 --- a/Assets/Scenes/Experiment.unity +++ b/Assets/Scenes/Experiment.unity @@ -183,6 +183,64 @@ BoxCollider2D: m_AutoTiling: 0 m_Size: {x: 3.5, y: 2.07} m_EdgeRadius: 0 +--- !u!1 &200100000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 200100001} + - component: {fileID: 200100002} + m_Layer: 0 + m_Name: Treat Spawner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &200100001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200100000} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &200100002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8c0d77dd1488410bb1718b1f8f96fa7d, type: 3} + m_Name: + m_EditorClassIdentifier: + treatPrefab: {fileID: 1000000000000000000, guid: 31e630c3bd57412bb4882033297c1fbf, type: 3} + treatParent: {fileID: 0} + spawnAreaCenter: {x: 0, y: 2} + spawnAreaSize: {x: 16, y: 8} + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 + groundRaycastHeight: 10 + minSpawnInterval: 2.5 + maxSpawnInterval: 4 + maxTreats: 0 + minSpawnSeparation: 1.5 + maxSampleAttempts: 8 + recentPositionsCount: 6 --- !u!212 &99338071 SpriteRenderer: serializedVersion: 2 @@ -1816,3 +1874,4 @@ SceneRoots: - {fileID: 1118230347} - {fileID: 477169536} - {fileID: 689117240} + - {fileID: 200100001} diff --git a/Assets/Scripts/TreatSpawner.cs b/Assets/Scripts/TreatSpawner.cs new file mode 100644 index 0000000..dd47636 --- /dev/null +++ b/Assets/Scripts/TreatSpawner.cs @@ -0,0 +1,122 @@ +using UnityEngine; +using System.Collections.Generic; + +public class TreatSpawner : MonoBehaviour +{ + [SerializeField] private GameObject treatPrefab; + [SerializeField] private Transform treatParent; + [SerializeField] private Vector2 spawnAreaCenter = Vector2.zero; + [SerializeField] private Vector2 spawnAreaSize = new Vector2(10f, 5f); + [SerializeField] private LayerMask groundMask = ~0; + [SerializeField] private float groundRaycastHeight = 10f; + [SerializeField] private float minSpawnInterval = 1f; + [SerializeField] private float maxSpawnInterval = 2f; + [SerializeField] private int maxTreats = 0; + [SerializeField] private float minSpawnSeparation = 1.5f; + [SerializeField] private int maxSampleAttempts = 8; + [SerializeField] private int recentPositionsCount = 6; + + private float nextSpawnTime; + private readonly Queue recentPositions = new Queue(); + + private void OnEnable() + { + ScheduleNextSpawn(); + } + + private void Update() + { + if (treatPrefab == null || Time.time < nextSpawnTime) + { + return; + } + + if (maxTreats > 0 && treatParent != null && treatParent.childCount >= maxTreats) + { + ScheduleNextSpawn(); + return; + } + + SpawnTreat(); + ScheduleNextSpawn(); + } + + private void SpawnTreat() + { + var position = FindSpawnPosition(); + + var instance = Instantiate(treatPrefab, position, Quaternion.identity); + if (treatParent != null) + { + instance.transform.SetParent(treatParent); + } + + if (recentPositionsCount > 0) + { + recentPositions.Enqueue(position); + while (recentPositions.Count > recentPositionsCount) + { + recentPositions.Dequeue(); + } + } + } + + private void ScheduleNextSpawn() + { + var min = Mathf.Max(0.01f, minSpawnInterval); + var max = Mathf.Max(min, maxSpawnInterval); + nextSpawnTime = Time.time + Random.Range(min, max); + } + + private Vector2 FindSpawnPosition() + { + var halfSize = spawnAreaSize * 0.5f; + var attempts = Mathf.Max(1, maxSampleAttempts); + + for (var i = 0; i < attempts; i++) + { + var randomX = Random.Range(spawnAreaCenter.x - halfSize.x, spawnAreaCenter.x + halfSize.x); + var rayStart = new Vector2(randomX, spawnAreaCenter.y + groundRaycastHeight); + var hit = Physics2D.Raycast(rayStart, Vector2.down, groundRaycastHeight * 2f, groundMask); + var candidate = hit.collider != null + ? hit.point + : new Vector2(randomX, spawnAreaCenter.y); + + if (IsFarEnough(candidate)) + { + return candidate; + } + } + + var fallbackX = Random.Range(spawnAreaCenter.x - halfSize.x, spawnAreaCenter.x + halfSize.x); + var fallbackStart = new Vector2(fallbackX, spawnAreaCenter.y + groundRaycastHeight); + var fallbackHit = Physics2D.Raycast(fallbackStart, Vector2.down, groundRaycastHeight * 2f, groundMask); + return fallbackHit.collider != null + ? fallbackHit.point + : new Vector2(fallbackX, spawnAreaCenter.y); + } + + private bool IsFarEnough(Vector2 candidate) + { + if (minSpawnSeparation <= 0f || recentPositions.Count == 0) + { + return true; + } + + foreach (var position in recentPositions) + { + if ((candidate - position).sqrMagnitude < minSpawnSeparation * minSpawnSeparation) + { + return false; + } + } + + return true; + } + + private void OnDrawGizmosSelected() + { + Gizmos.color = new Color(1f, 0.85f, 0.1f, 0.35f); + Gizmos.DrawWireCube(spawnAreaCenter, spawnAreaSize); + } +} diff --git a/Assets/Scripts/TreatSpawner.cs.meta b/Assets/Scripts/TreatSpawner.cs.meta new file mode 100644 index 0000000..253057f --- /dev/null +++ b/Assets/Scripts/TreatSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c0d77dd1488410bb1718b1f8f96fa7d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: