├── .gitignore ├── LICENSE ├── README.md ├── TexturePacker-SpriteKit-Swift.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── TexturePacker-SpriteKit-Swift ├── AppDelegate.swift ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Base.lproj │ └── Main.storyboard ├── CapGuy.atlasc │ ├── CapGuy.1.png │ ├── CapGuy.1@2x.png │ └── CapGuy.plist ├── CapGuy.swift ├── CapGuy.tps ├── GameViewController.swift └── MyScene.swift ├── screenshot.png └── sprites ├── Background.png └── capguy ├── turn ├── 0001.png ├── 0002.png ├── 0003.png ├── 0004.png ├── 0005.png ├── 0006.png ├── 0007.png ├── 0008.png ├── 0009.png ├── 0010.png ├── 0011.png └── 0012.png └── walk ├── 0001.png ├── 0002.png ├── 0003.png ├── 0004.png ├── 0005.png ├── 0006.png ├── 0007.png ├── 0008.png ├── 0009.png ├── 0010.png ├── 0011.png ├── 0012.png ├── 0013.png ├── 0014.png ├── 0015.png └── 0016.png /.gitignore: -------------------------------------------------------------------------------- 1 | *xcuserdata* 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | License for Images and Sprites 2 | ------------------------------ 3 | 4 | The images and sprites contained in this project are copyright (c) by CodeAndWeb GmbH and 5 | must not be used outside of the demo project. 6 | 7 | License for SourceCode 8 | ---------------------- 9 | 10 | The MIT License (MIT) 11 | 12 | Copyright (c) 2014 CodeAndWeb GmbH 13 | 14 | Permission is hereby granted, free of charge, to any person obtaining a copy of 15 | this software and associated documentation files (the "Software"), to deal in 16 | the Software without restriction, including without limitation the rights to 17 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 18 | the Software, and to permit persons to whom the Software is furnished to do so, 19 | subject to the following conditions: 20 | 21 | The above copyright notice and this permission notice shall be included in all 22 | copies or substantial portions of the Software. 23 | 24 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 26 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 27 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 28 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SpriteKit sprite sheet example 2 | ============================== 3 | 4 | Simple demo project to explain how to use a texture atlas and Swift class file generated with TexturePacker. 5 | 6 | The complete tutorial is available here: 7 | 8 | https://www.codeandweb.com/texturepacker/tutorials/spritekit-textureatlases-with-swift 9 | 10 | ![screenshot of the demo app](screenshot.png "Screenshot of the demo project") 11 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | AA2C79852A96294E004F5D14 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA2C79842A96294E004F5D14 /* AppDelegate.swift */; }; 11 | AA2C798D2A96294E004F5D14 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA2C798C2A96294E004F5D14 /* GameViewController.swift */; }; 12 | AA2C79902A96294E004F5D14 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA2C798E2A96294E004F5D14 /* Main.storyboard */; }; 13 | AA2C79922A96294F004F5D14 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AA2C79912A96294F004F5D14 /* Assets.xcassets */; }; 14 | AAB281F72A962FA4002E05F8 /* CapGuy.atlasc in Resources */ = {isa = PBXBuildFile; fileRef = AAB281F52A962FA4002E05F8 /* CapGuy.atlasc */; }; 15 | AAB281F82A962FA4002E05F8 /* CapGuy.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAB281F62A962FA4002E05F8 /* CapGuy.swift */; }; 16 | AAB281FA2A964897002E05F8 /* MyScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAB281F92A964897002E05F8 /* MyScene.swift */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | AA2C79812A96294E004F5D14 /* TexturePacker-SpriteKit-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TexturePacker-SpriteKit-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 21 | AA2C79842A96294E004F5D14 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 22 | AA2C798C2A96294E004F5D14 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; 23 | AA2C798F2A96294E004F5D14 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 24 | AA2C79912A96294F004F5D14 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 25 | AAB281F52A962FA4002E05F8 /* CapGuy.atlasc */ = {isa = PBXFileReference; lastKnownFileType = folder; path = CapGuy.atlasc; sourceTree = ""; }; 26 | AAB281F62A962FA4002E05F8 /* CapGuy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapGuy.swift; sourceTree = ""; }; 27 | AAB281F92A964897002E05F8 /* MyScene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyScene.swift; sourceTree = ""; }; 28 | /* End PBXFileReference section */ 29 | 30 | /* Begin PBXFrameworksBuildPhase section */ 31 | AA2C797E2A96294E004F5D14 /* Frameworks */ = { 32 | isa = PBXFrameworksBuildPhase; 33 | buildActionMask = 2147483647; 34 | files = ( 35 | ); 36 | runOnlyForDeploymentPostprocessing = 0; 37 | }; 38 | /* End PBXFrameworksBuildPhase section */ 39 | 40 | /* Begin PBXGroup section */ 41 | AA2C79782A96294E004F5D14 = { 42 | isa = PBXGroup; 43 | children = ( 44 | AA2C79832A96294E004F5D14 /* TexturePacker-SpriteKit-Swift */, 45 | AA2C79822A96294E004F5D14 /* Products */, 46 | ); 47 | sourceTree = ""; 48 | }; 49 | AA2C79822A96294E004F5D14 /* Products */ = { 50 | isa = PBXGroup; 51 | children = ( 52 | AA2C79812A96294E004F5D14 /* TexturePacker-SpriteKit-Swift.app */, 53 | ); 54 | name = Products; 55 | sourceTree = ""; 56 | }; 57 | AA2C79832A96294E004F5D14 /* TexturePacker-SpriteKit-Swift */ = { 58 | isa = PBXGroup; 59 | children = ( 60 | AAB281F92A964897002E05F8 /* MyScene.swift */, 61 | AAB281F52A962FA4002E05F8 /* CapGuy.atlasc */, 62 | AAB281F62A962FA4002E05F8 /* CapGuy.swift */, 63 | AA2C79842A96294E004F5D14 /* AppDelegate.swift */, 64 | AA2C798C2A96294E004F5D14 /* GameViewController.swift */, 65 | AA2C798E2A96294E004F5D14 /* Main.storyboard */, 66 | AA2C79912A96294F004F5D14 /* Assets.xcassets */, 67 | ); 68 | path = "TexturePacker-SpriteKit-Swift"; 69 | sourceTree = ""; 70 | }; 71 | /* End PBXGroup section */ 72 | 73 | /* Begin PBXNativeTarget section */ 74 | AA2C79802A96294E004F5D14 /* TexturePacker-SpriteKit-Swift */ = { 75 | isa = PBXNativeTarget; 76 | buildConfigurationList = AA2C79982A96294F004F5D14 /* Build configuration list for PBXNativeTarget "TexturePacker-SpriteKit-Swift" */; 77 | buildPhases = ( 78 | AA2C797D2A96294E004F5D14 /* Sources */, 79 | AA2C797E2A96294E004F5D14 /* Frameworks */, 80 | AA2C797F2A96294E004F5D14 /* Resources */, 81 | ); 82 | buildRules = ( 83 | ); 84 | dependencies = ( 85 | ); 86 | name = "TexturePacker-SpriteKit-Swift"; 87 | productName = "TexturePacker-SpriteKit-Swift"; 88 | productReference = AA2C79812A96294E004F5D14 /* TexturePacker-SpriteKit-Swift.app */; 89 | productType = "com.apple.product-type.application"; 90 | }; 91 | /* End PBXNativeTarget section */ 92 | 93 | /* Begin PBXProject section */ 94 | AA2C79792A96294E004F5D14 /* Project object */ = { 95 | isa = PBXProject; 96 | attributes = { 97 | BuildIndependentTargetsInParallel = 1; 98 | LastSwiftUpdateCheck = 1430; 99 | LastUpgradeCheck = 1430; 100 | TargetAttributes = { 101 | AA2C79802A96294E004F5D14 = { 102 | CreatedOnToolsVersion = 14.3.1; 103 | }; 104 | }; 105 | }; 106 | buildConfigurationList = AA2C797C2A96294E004F5D14 /* Build configuration list for PBXProject "TexturePacker-SpriteKit-Swift" */; 107 | compatibilityVersion = "Xcode 14.0"; 108 | developmentRegion = en; 109 | hasScannedForEncodings = 0; 110 | knownRegions = ( 111 | en, 112 | Base, 113 | ); 114 | mainGroup = AA2C79782A96294E004F5D14; 115 | productRefGroup = AA2C79822A96294E004F5D14 /* Products */; 116 | projectDirPath = ""; 117 | projectRoot = ""; 118 | targets = ( 119 | AA2C79802A96294E004F5D14 /* TexturePacker-SpriteKit-Swift */, 120 | ); 121 | }; 122 | /* End PBXProject section */ 123 | 124 | /* Begin PBXResourcesBuildPhase section */ 125 | AA2C797F2A96294E004F5D14 /* Resources */ = { 126 | isa = PBXResourcesBuildPhase; 127 | buildActionMask = 2147483647; 128 | files = ( 129 | AA2C79902A96294E004F5D14 /* Main.storyboard in Resources */, 130 | AAB281F72A962FA4002E05F8 /* CapGuy.atlasc in Resources */, 131 | AA2C79922A96294F004F5D14 /* Assets.xcassets in Resources */, 132 | ); 133 | runOnlyForDeploymentPostprocessing = 0; 134 | }; 135 | /* End PBXResourcesBuildPhase section */ 136 | 137 | /* Begin PBXSourcesBuildPhase section */ 138 | AA2C797D2A96294E004F5D14 /* Sources */ = { 139 | isa = PBXSourcesBuildPhase; 140 | buildActionMask = 2147483647; 141 | files = ( 142 | AAB281FA2A964897002E05F8 /* MyScene.swift in Sources */, 143 | AAB281F82A962FA4002E05F8 /* CapGuy.swift in Sources */, 144 | AA2C798D2A96294E004F5D14 /* GameViewController.swift in Sources */, 145 | AA2C79852A96294E004F5D14 /* AppDelegate.swift in Sources */, 146 | ); 147 | runOnlyForDeploymentPostprocessing = 0; 148 | }; 149 | /* End PBXSourcesBuildPhase section */ 150 | 151 | /* Begin PBXVariantGroup section */ 152 | AA2C798E2A96294E004F5D14 /* Main.storyboard */ = { 153 | isa = PBXVariantGroup; 154 | children = ( 155 | AA2C798F2A96294E004F5D14 /* Base */, 156 | ); 157 | name = Main.storyboard; 158 | sourceTree = ""; 159 | }; 160 | /* End PBXVariantGroup section */ 161 | 162 | /* Begin XCBuildConfiguration section */ 163 | AA2C79962A96294F004F5D14 /* Debug */ = { 164 | isa = XCBuildConfiguration; 165 | buildSettings = { 166 | ALWAYS_SEARCH_USER_PATHS = NO; 167 | CLANG_ANALYZER_NONNULL = YES; 168 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 169 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 170 | CLANG_ENABLE_MODULES = YES; 171 | CLANG_ENABLE_OBJC_ARC = YES; 172 | CLANG_ENABLE_OBJC_WEAK = YES; 173 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 174 | CLANG_WARN_BOOL_CONVERSION = YES; 175 | CLANG_WARN_COMMA = YES; 176 | CLANG_WARN_CONSTANT_CONVERSION = YES; 177 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 178 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 179 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 180 | CLANG_WARN_EMPTY_BODY = YES; 181 | CLANG_WARN_ENUM_CONVERSION = YES; 182 | CLANG_WARN_INFINITE_RECURSION = YES; 183 | CLANG_WARN_INT_CONVERSION = YES; 184 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 185 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 186 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 187 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 188 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 189 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 190 | CLANG_WARN_STRICT_PROTOTYPES = YES; 191 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 192 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 193 | CLANG_WARN_UNREACHABLE_CODE = YES; 194 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 195 | COPY_PHASE_STRIP = NO; 196 | DEBUG_INFORMATION_FORMAT = dwarf; 197 | ENABLE_STRICT_OBJC_MSGSEND = YES; 198 | ENABLE_TESTABILITY = YES; 199 | GCC_C_LANGUAGE_STANDARD = gnu11; 200 | GCC_DYNAMIC_NO_PIC = NO; 201 | GCC_NO_COMMON_BLOCKS = YES; 202 | GCC_OPTIMIZATION_LEVEL = 0; 203 | GCC_PREPROCESSOR_DEFINITIONS = ( 204 | "DEBUG=1", 205 | "$(inherited)", 206 | ); 207 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 208 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 209 | GCC_WARN_UNDECLARED_SELECTOR = YES; 210 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 211 | GCC_WARN_UNUSED_FUNCTION = YES; 212 | GCC_WARN_UNUSED_VARIABLE = YES; 213 | IPHONEOS_DEPLOYMENT_TARGET = 16.4; 214 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 215 | MTL_FAST_MATH = YES; 216 | ONLY_ACTIVE_ARCH = YES; 217 | SDKROOT = iphoneos; 218 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 219 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 220 | }; 221 | name = Debug; 222 | }; 223 | AA2C79972A96294F004F5D14 /* Release */ = { 224 | isa = XCBuildConfiguration; 225 | buildSettings = { 226 | ALWAYS_SEARCH_USER_PATHS = NO; 227 | CLANG_ANALYZER_NONNULL = YES; 228 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 229 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 230 | CLANG_ENABLE_MODULES = YES; 231 | CLANG_ENABLE_OBJC_ARC = YES; 232 | CLANG_ENABLE_OBJC_WEAK = YES; 233 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 234 | CLANG_WARN_BOOL_CONVERSION = YES; 235 | CLANG_WARN_COMMA = YES; 236 | CLANG_WARN_CONSTANT_CONVERSION = YES; 237 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 238 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 239 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 240 | CLANG_WARN_EMPTY_BODY = YES; 241 | CLANG_WARN_ENUM_CONVERSION = YES; 242 | CLANG_WARN_INFINITE_RECURSION = YES; 243 | CLANG_WARN_INT_CONVERSION = YES; 244 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 245 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 246 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 247 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 248 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 249 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 250 | CLANG_WARN_STRICT_PROTOTYPES = YES; 251 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 252 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 253 | CLANG_WARN_UNREACHABLE_CODE = YES; 254 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 255 | COPY_PHASE_STRIP = NO; 256 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 257 | ENABLE_NS_ASSERTIONS = NO; 258 | ENABLE_STRICT_OBJC_MSGSEND = YES; 259 | GCC_C_LANGUAGE_STANDARD = gnu11; 260 | GCC_NO_COMMON_BLOCKS = YES; 261 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 262 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 263 | GCC_WARN_UNDECLARED_SELECTOR = YES; 264 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 265 | GCC_WARN_UNUSED_FUNCTION = YES; 266 | GCC_WARN_UNUSED_VARIABLE = YES; 267 | IPHONEOS_DEPLOYMENT_TARGET = 16.4; 268 | MTL_ENABLE_DEBUG_INFO = NO; 269 | MTL_FAST_MATH = YES; 270 | SDKROOT = iphoneos; 271 | SWIFT_COMPILATION_MODE = wholemodule; 272 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 273 | VALIDATE_PRODUCT = YES; 274 | }; 275 | name = Release; 276 | }; 277 | AA2C79992A96294F004F5D14 /* Debug */ = { 278 | isa = XCBuildConfiguration; 279 | buildSettings = { 280 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 281 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 282 | CODE_SIGN_STYLE = Automatic; 283 | CURRENT_PROJECT_VERSION = 1; 284 | GENERATE_INFOPLIST_FILE = YES; 285 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 286 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; 287 | INFOPLIST_KEY_UIMainStoryboardFile = Main; 288 | INFOPLIST_KEY_UIStatusBarHidden = YES; 289 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 290 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 291 | LD_RUNPATH_SEARCH_PATHS = ( 292 | "$(inherited)", 293 | "@executable_path/Frameworks", 294 | ); 295 | MARKETING_VERSION = 1.0; 296 | PRODUCT_BUNDLE_IDENTIFIER = "caw.TexturePacker-SpriteKit-Swift"; 297 | PRODUCT_NAME = "$(TARGET_NAME)"; 298 | SWIFT_EMIT_LOC_STRINGS = YES; 299 | SWIFT_VERSION = 5.0; 300 | TARGETED_DEVICE_FAMILY = "1,2"; 301 | }; 302 | name = Debug; 303 | }; 304 | AA2C799A2A96294F004F5D14 /* Release */ = { 305 | isa = XCBuildConfiguration; 306 | buildSettings = { 307 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 308 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 309 | CODE_SIGN_STYLE = Automatic; 310 | CURRENT_PROJECT_VERSION = 1; 311 | GENERATE_INFOPLIST_FILE = YES; 312 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 313 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; 314 | INFOPLIST_KEY_UIMainStoryboardFile = Main; 315 | INFOPLIST_KEY_UIStatusBarHidden = YES; 316 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 317 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 318 | LD_RUNPATH_SEARCH_PATHS = ( 319 | "$(inherited)", 320 | "@executable_path/Frameworks", 321 | ); 322 | MARKETING_VERSION = 1.0; 323 | PRODUCT_BUNDLE_IDENTIFIER = "caw.TexturePacker-SpriteKit-Swift"; 324 | PRODUCT_NAME = "$(TARGET_NAME)"; 325 | SWIFT_EMIT_LOC_STRINGS = YES; 326 | SWIFT_VERSION = 5.0; 327 | TARGETED_DEVICE_FAMILY = "1,2"; 328 | }; 329 | name = Release; 330 | }; 331 | /* End XCBuildConfiguration section */ 332 | 333 | /* Begin XCConfigurationList section */ 334 | AA2C797C2A96294E004F5D14 /* Build configuration list for PBXProject "TexturePacker-SpriteKit-Swift" */ = { 335 | isa = XCConfigurationList; 336 | buildConfigurations = ( 337 | AA2C79962A96294F004F5D14 /* Debug */, 338 | AA2C79972A96294F004F5D14 /* Release */, 339 | ); 340 | defaultConfigurationIsVisible = 0; 341 | defaultConfigurationName = Release; 342 | }; 343 | AA2C79982A96294F004F5D14 /* Build configuration list for PBXNativeTarget "TexturePacker-SpriteKit-Swift" */ = { 344 | isa = XCConfigurationList; 345 | buildConfigurations = ( 346 | AA2C79992A96294F004F5D14 /* Debug */, 347 | AA2C799A2A96294F004F5D14 /* Release */, 348 | ); 349 | defaultConfigurationIsVisible = 0; 350 | defaultConfigurationName = Release; 351 | }; 352 | /* End XCConfigurationList section */ 353 | }; 354 | rootObject = AA2C79792A96294E004F5D14 /* Project object */; 355 | } 356 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // TexturePacker-SpriteKit-Swift 4 | // 5 | // Copyright (c) 2023 CodeAndWeb GmbH. All rights reserved. 6 | // 7 | 8 | import UIKit 9 | 10 | @main 11 | class AppDelegate: UIResponder, UIApplicationDelegate { 12 | 13 | var window: UIWindow? 14 | 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | // Override point for customization after application launch. 18 | return true 19 | } 20 | 21 | func applicationWillResignActive(_ application: UIApplication) { 22 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 23 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 24 | } 25 | 26 | func applicationDidEnterBackground(_ application: UIApplication) { 27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 28 | } 29 | 30 | func applicationWillEnterForeground(_ application: UIApplication) { 31 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 32 | } 33 | 34 | func applicationDidBecomeActive(_ application: UIApplication) { 35 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 36 | } 37 | 38 | 39 | } 40 | 41 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/CapGuy.atlasc/CapGuy.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/TexturePacker-SpriteKit-Swift/CapGuy.atlasc/CapGuy.1.png -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/CapGuy.atlasc/CapGuy.1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/TexturePacker-SpriteKit-Swift/CapGuy.atlasc/CapGuy.1@2x.png -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/CapGuy.atlasc/CapGuy.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | codeandweb 6 | 7 | generator 8 | TexturePacker 7.0.3 - https://www.codeandweb.com/texturepacker 9 | smartupdate 10 | $TexturePacker:SmartUpdate:11f8fc6d8901d0f793341dca99e0d88b:ac7608d1f04ab193bff21724566c15eb:39d62a0cbe721fda095e2f7e4c4fe22b$ 11 | 12 | format 13 | APPL 14 | images 15 | 16 | 17 | path 18 | CapGuy.1@2x.png 19 | size 20 | {2046,1928} 21 | subimages 22 | 23 | 24 | aliases 25 | 26 | isFullyOpaque 27 | 28 | name 29 | Background@2x.png 30 | spriteOffset 31 | {0,0} 32 | spriteSourceSize 33 | {2044,1536} 34 | textureRect 35 | {{1,1},{2044,1536}} 36 | textureRotated 37 | 38 | 39 | 40 | aliases 41 | 42 | isFullyOpaque 43 | 44 | name 45 | capguy/walk/0015@2x.png 46 | spriteOffset 47 | {22,4} 48 | spriteSourceSize 49 | {187,324} 50 | textureRect 51 | {{1,1539},{161,319}} 52 | textureRotated 53 | 54 | 55 | 56 | aliases 57 | 58 | isFullyOpaque 59 | 60 | name 61 | capguy/walk/0016@2x.png 62 | spriteOffset 63 | {22,4} 64 | spriteSourceSize 65 | {187,324} 66 | textureRect 67 | {{1,1539},{161,319}} 68 | textureRotated 69 | 70 | 71 | 72 | aliases 73 | 74 | isFullyOpaque 75 | 76 | name 77 | capguy/walk/0003@2x.png 78 | spriteOffset 79 | {0,13} 80 | spriteSourceSize 81 | {187,324} 82 | textureRect 83 | {{164,1539},{168,303}} 84 | textureRotated 85 | 86 | 87 | 88 | aliases 89 | 90 | isFullyOpaque 91 | 92 | name 93 | capguy/walk/0004@2x.png 94 | spriteOffset 95 | {0,13} 96 | spriteSourceSize 97 | {187,324} 98 | textureRect 99 | {{164,1539},{168,303}} 100 | textureRotated 101 | 102 | 103 | 104 | aliases 105 | 106 | isFullyOpaque 107 | 108 | name 109 | capguy/turn/0001@2x.png 110 | spriteOffset 111 | {20,16} 112 | spriteSourceSize 113 | {207,329} 114 | textureRect 115 | {{334,1539},{167,302}} 116 | textureRotated 117 | 118 | 119 | 120 | aliases 121 | 122 | isFullyOpaque 123 | 124 | name 125 | capguy/turn/0002@2x.png 126 | spriteOffset 127 | {20,16} 128 | spriteSourceSize 129 | {207,329} 130 | textureRect 131 | {{334,1539},{167,302}} 132 | textureRotated 133 | 134 | 135 | 136 | aliases 137 | 138 | isFullyOpaque 139 | 140 | name 141 | capguy/walk/0001@2x.png 142 | spriteOffset 143 | {15,5} 144 | spriteSourceSize 145 | {187,324} 146 | textureRect 147 | {{503,1539},{158,316}} 148 | textureRotated 149 | 150 | 151 | 152 | aliases 153 | 154 | isFullyOpaque 155 | 156 | name 157 | capguy/walk/0002@2x.png 158 | spriteOffset 159 | {15,5} 160 | spriteSourceSize 161 | {187,324} 162 | textureRect 163 | {{503,1539},{158,316}} 164 | textureRotated 165 | 166 | 167 | 168 | aliases 169 | 170 | isFullyOpaque 171 | 172 | name 173 | capguy/walk/0005@2x.png 174 | spriteOffset 175 | {26,15} 176 | spriteSourceSize 177 | {187,324} 178 | textureRect 179 | {{663,1539},{152,307}} 180 | textureRotated 181 | 182 | 183 | 184 | aliases 185 | 186 | isFullyOpaque 187 | 188 | name 189 | capguy/walk/0006@2x.png 190 | spriteOffset 191 | {26,15} 192 | spriteSourceSize 193 | {187,324} 194 | textureRect 195 | {{663,1539},{152,307}} 196 | textureRotated 197 | 198 | 199 | 200 | aliases 201 | 202 | isFullyOpaque 203 | 204 | name 205 | capguy/turn/0011@2x.png 206 | spriteOffset 207 | {0,17} 208 | spriteSourceSize 209 | {207,329} 210 | textureRect 211 | {{817,1539},{151,307}} 212 | textureRotated 213 | 214 | 215 | 216 | aliases 217 | 218 | isFullyOpaque 219 | 220 | name 221 | capguy/turn/0012@2x.png 222 | spriteOffset 223 | {0,17} 224 | spriteSourceSize 225 | {207,329} 226 | textureRect 227 | {{817,1539},{151,307}} 228 | textureRotated 229 | 230 | 231 | 232 | aliases 233 | 234 | isFullyOpaque 235 | 236 | name 237 | capguy/walk/0013@2x.png 238 | spriteOffset 239 | {32,8} 240 | spriteSourceSize 241 | {187,324} 242 | textureRect 243 | {{970,1539},{146,314}} 244 | textureRotated 245 | 246 | 247 | 248 | aliases 249 | 250 | isFullyOpaque 251 | 252 | name 253 | capguy/walk/0014@2x.png 254 | spriteOffset 255 | {32,8} 256 | spriteSourceSize 257 | {187,324} 258 | textureRect 259 | {{970,1539},{146,314}} 260 | textureRotated 261 | 262 | 263 | 264 | aliases 265 | 266 | isFullyOpaque 267 | 268 | name 269 | capguy/walk/0009@2x.png 270 | spriteOffset 271 | {33,10} 272 | spriteSourceSize 273 | {187,324} 274 | textureRect 275 | {{1118,1539},{139,311}} 276 | textureRotated 277 | 278 | 279 | 280 | aliases 281 | 282 | isFullyOpaque 283 | 284 | name 285 | capguy/walk/0010@2x.png 286 | spriteOffset 287 | {33,10} 288 | spriteSourceSize 289 | {187,324} 290 | textureRect 291 | {{1118,1539},{139,311}} 292 | textureRotated 293 | 294 | 295 | 296 | aliases 297 | 298 | isFullyOpaque 299 | 300 | name 301 | capguy/turn/0003@2x.png 302 | spriteOffset 303 | {38,18} 304 | spriteSourceSize 305 | {207,329} 306 | textureRect 307 | {{1259,1539},{141,306}} 308 | textureRotated 309 | 310 | 311 | 312 | aliases 313 | 314 | isFullyOpaque 315 | 316 | name 317 | capguy/turn/0004@2x.png 318 | spriteOffset 319 | {38,18} 320 | spriteSourceSize 321 | {207,329} 322 | textureRect 323 | {{1259,1539},{141,306}} 324 | textureRotated 325 | 326 | 327 | 328 | aliases 329 | 330 | isFullyOpaque 331 | 332 | name 333 | capguy/walk/0007@2x.png 334 | spriteOffset 335 | {42,17} 336 | spriteSourceSize 337 | {187,324} 338 | textureRect 339 | {{1402,1539},{141,306}} 340 | textureRotated 341 | 342 | 343 | 344 | aliases 345 | 346 | isFullyOpaque 347 | 348 | name 349 | capguy/walk/0008@2x.png 350 | spriteOffset 351 | {42,17} 352 | spriteSourceSize 353 | {187,324} 354 | textureRect 355 | {{1402,1539},{141,306}} 356 | textureRotated 357 | 358 | 359 | 360 | aliases 361 | 362 | isFullyOpaque 363 | 364 | name 365 | capguy/walk/0011@2x.png 366 | spriteOffset 367 | {29,5} 368 | spriteSourceSize 369 | {187,324} 370 | textureRect 371 | {{1545,1539},{135,311}} 372 | textureRotated 373 | 374 | 375 | 376 | aliases 377 | 378 | isFullyOpaque 379 | 380 | name 381 | capguy/walk/0012@2x.png 382 | spriteOffset 383 | {29,5} 384 | spriteSourceSize 385 | {187,324} 386 | textureRect 387 | {{1545,1539},{135,311}} 388 | textureRotated 389 | 390 | 391 | 392 | aliases 393 | 394 | isFullyOpaque 395 | 396 | name 397 | capguy/turn/0007@2x.png 398 | spriteOffset 399 | {6,15} 400 | spriteSourceSize 401 | {207,329} 402 | textureRect 403 | {{1682,1539},{314,129}} 404 | textureRotated 405 | 406 | 407 | 408 | aliases 409 | 410 | isFullyOpaque 411 | 412 | name 413 | capguy/turn/0008@2x.png 414 | spriteOffset 415 | {6,15} 416 | spriteSourceSize 417 | {207,329} 418 | textureRect 419 | {{1682,1539},{314,129}} 420 | textureRotated 421 | 422 | 423 | 424 | aliases 425 | 426 | isFullyOpaque 427 | 428 | name 429 | capguy/turn/0005@2x.png 430 | spriteOffset 431 | {30,17} 432 | spriteSourceSize 433 | {207,329} 434 | textureRect 435 | {{1682,1670},{312,126}} 436 | textureRotated 437 | 438 | 439 | 440 | aliases 441 | 442 | isFullyOpaque 443 | 444 | name 445 | capguy/turn/0006@2x.png 446 | spriteOffset 447 | {30,17} 448 | spriteSourceSize 449 | {207,329} 450 | textureRect 451 | {{1682,1670},{312,126}} 452 | textureRotated 453 | 454 | 455 | 456 | aliases 457 | 458 | isFullyOpaque 459 | 460 | name 461 | capguy/turn/0009@2x.png 462 | spriteOffset 463 | {11,16} 464 | spriteSourceSize 465 | {207,329} 466 | textureRect 467 | {{1682,1798},{300,129}} 468 | textureRotated 469 | 470 | 471 | 472 | aliases 473 | 474 | isFullyOpaque 475 | 476 | name 477 | capguy/turn/0010@2x.png 478 | spriteOffset 479 | {11,16} 480 | spriteSourceSize 481 | {207,329} 482 | textureRect 483 | {{1682,1798},{300,129}} 484 | textureRotated 485 | 486 | 487 | 488 | 489 | 490 | path 491 | CapGuy.1.png 492 | size 493 | {1024,982} 494 | subimages 495 | 496 | 497 | aliases 498 | 499 | isFullyOpaque 500 | 501 | name 502 | Background.png 503 | spriteOffset 504 | {0,0} 505 | spriteSourceSize 506 | {1022,768} 507 | textureRect 508 | {{1,1},{1022,768}} 509 | textureRotated 510 | 511 | 512 | 513 | aliases 514 | 515 | isFullyOpaque 516 | 517 | name 518 | capguy/walk/0015.png 519 | spriteOffset 520 | {10,1} 521 | spriteSourceSize 522 | {94,162} 523 | textureRect 524 | {{1,771},{161,83}} 525 | textureRotated 526 | 527 | 528 | 529 | aliases 530 | 531 | isFullyOpaque 532 | 533 | name 534 | capguy/walk/0016.png 535 | spriteOffset 536 | {10,1} 537 | spriteSourceSize 538 | {94,162} 539 | textureRect 540 | {{1,771},{161,83}} 541 | textureRotated 542 | 543 | 544 | 545 | aliases 546 | 547 | isFullyOpaque 548 | 549 | name 550 | capguy/walk/0001.png 551 | spriteOffset 552 | {7,2} 553 | spriteSourceSize 554 | {94,162} 555 | textureRect 556 | {{164,771},{159,81}} 557 | textureRotated 558 | 559 | 560 | 561 | aliases 562 | 563 | isFullyOpaque 564 | 565 | name 566 | capguy/walk/0002.png 567 | spriteOffset 568 | {7,2} 569 | spriteSourceSize 570 | {94,162} 571 | textureRect 572 | {{164,771},{159,81}} 573 | textureRotated 574 | 575 | 576 | 577 | aliases 578 | 579 | isFullyOpaque 580 | 581 | name 582 | capguy/walk/0013.png 583 | spriteOffset 584 | {15,3} 585 | spriteSourceSize 586 | {94,162} 587 | textureRect 588 | {{325,771},{159,75}} 589 | textureRotated 590 | 591 | 592 | 593 | aliases 594 | 595 | isFullyOpaque 596 | 597 | name 598 | capguy/walk/0014.png 599 | spriteOffset 600 | {15,3} 601 | spriteSourceSize 602 | {94,162} 603 | textureRect 604 | {{325,771},{159,75}} 605 | textureRotated 606 | 607 | 608 | 609 | aliases 610 | 611 | isFullyOpaque 612 | 613 | name 614 | capguy/turn/0007.png 615 | spriteOffset 616 | {2,7} 617 | spriteSourceSize 618 | {104,165} 619 | textureRect 620 | {{486,771},{158,67}} 621 | textureRotated 622 | 623 | 624 | 625 | aliases 626 | 627 | isFullyOpaque 628 | 629 | name 630 | capguy/turn/0008.png 631 | spriteOffset 632 | {2,7} 633 | spriteSourceSize 634 | {104,165} 635 | textureRect 636 | {{486,771},{158,67}} 637 | textureRotated 638 | 639 | 640 | 641 | aliases 642 | 643 | isFullyOpaque 644 | 645 | name 646 | capguy/walk/0009.png 647 | spriteOffset 648 | {16,4} 649 | spriteSourceSize 650 | {94,162} 651 | textureRect 652 | {{646,771},{157,71}} 653 | textureRotated 654 | 655 | 656 | 657 | aliases 658 | 659 | isFullyOpaque 660 | 661 | name 662 | capguy/walk/0010.png 663 | spriteOffset 664 | {16,4} 665 | spriteSourceSize 666 | {94,162} 667 | textureRect 668 | {{646,771},{157,71}} 669 | textureRotated 670 | 671 | 672 | 673 | aliases 674 | 675 | isFullyOpaque 676 | 677 | name 678 | capguy/turn/0001.png 679 | spriteOffset 680 | {9,7} 681 | spriteSourceSize 682 | {104,165} 683 | textureRect 684 | {{486,840},{153,86}} 685 | textureRotated 686 | 687 | 688 | 689 | aliases 690 | 691 | isFullyOpaque 692 | 693 | name 694 | capguy/turn/0002.png 695 | spriteOffset 696 | {9,7} 697 | spriteSourceSize 698 | {104,165} 699 | textureRect 700 | {{486,840},{153,86}} 701 | textureRotated 702 | 703 | 704 | 705 | aliases 706 | 707 | isFullyOpaque 708 | 709 | name 710 | capguy/walk/0003.png 711 | spriteOffset 712 | {0,6} 713 | spriteSourceSize 714 | {94,162} 715 | textureRect 716 | {{325,848},{153,85}} 717 | textureRotated 718 | 719 | 720 | 721 | aliases 722 | 723 | isFullyOpaque 724 | 725 | name 726 | capguy/walk/0004.png 727 | spriteOffset 728 | {0,6} 729 | spriteSourceSize 730 | {94,162} 731 | textureRect 732 | {{325,848},{153,85}} 733 | textureRotated 734 | 735 | 736 | 737 | aliases 738 | 739 | isFullyOpaque 740 | 741 | name 742 | capguy/walk/0005.png 743 | spriteOffset 744 | {12,7} 745 | spriteSourceSize 746 | {94,162} 747 | textureRect 748 | {{164,854},{155,78}} 749 | textureRotated 750 | 751 | 752 | 753 | aliases 754 | 755 | isFullyOpaque 756 | 757 | name 758 | capguy/walk/0006.png 759 | spriteOffset 760 | {12,7} 761 | spriteSourceSize 762 | {94,162} 763 | textureRect 764 | {{164,854},{155,78}} 765 | textureRotated 766 | 767 | 768 | 769 | aliases 770 | 771 | isFullyOpaque 772 | 773 | name 774 | capguy/turn/0011.png 775 | spriteOffset 776 | {0,8} 777 | spriteSourceSize 778 | {104,165} 779 | textureRect 780 | {{1,856},{155,77}} 781 | textureRotated 782 | 783 | 784 | 785 | aliases 786 | 787 | isFullyOpaque 788 | 789 | name 790 | capguy/turn/0012.png 791 | spriteOffset 792 | {0,8} 793 | spriteSourceSize 794 | {104,165} 795 | textureRect 796 | {{1,856},{155,77}} 797 | textureRotated 798 | 799 | 800 | 801 | aliases 802 | 803 | isFullyOpaque 804 | 805 | name 806 | capguy/turn/0003.png 807 | spriteOffset 808 | {18,8} 809 | spriteSourceSize 810 | {104,165} 811 | textureRect 812 | {{805,771},{73,155}} 813 | textureRotated 814 | 815 | 816 | 817 | aliases 818 | 819 | isFullyOpaque 820 | 821 | name 822 | capguy/turn/0004.png 823 | spriteOffset 824 | {18,8} 825 | spriteSourceSize 826 | {104,165} 827 | textureRect 828 | {{805,771},{73,155}} 829 | textureRotated 830 | 831 | 832 | 833 | aliases 834 | 835 | isFullyOpaque 836 | 837 | name 838 | capguy/walk/0007.png 839 | spriteOffset 840 | {20,8} 841 | spriteSourceSize 842 | {94,162} 843 | textureRect 844 | {{880,771},{73,154}} 845 | textureRotated 846 | 847 | 848 | 849 | aliases 850 | 851 | isFullyOpaque 852 | 853 | name 854 | capguy/walk/0008.png 855 | spriteOffset 856 | {20,8} 857 | spriteSourceSize 858 | {94,162} 859 | textureRect 860 | {{880,771},{73,154}} 861 | textureRotated 862 | 863 | 864 | 865 | aliases 866 | 867 | isFullyOpaque 868 | 869 | name 870 | capguy/turn/0005.png 871 | spriteOffset 872 | {14,8} 873 | spriteSourceSize 874 | {104,165} 875 | textureRect 876 | {{955,771},{65,157}} 877 | textureRotated 878 | 879 | 880 | 881 | aliases 882 | 883 | isFullyOpaque 884 | 885 | name 886 | capguy/turn/0006.png 887 | spriteOffset 888 | {14,8} 889 | spriteSourceSize 890 | {104,165} 891 | textureRect 892 | {{955,771},{65,157}} 893 | textureRotated 894 | 895 | 896 | 897 | aliases 898 | 899 | isFullyOpaque 900 | 901 | name 902 | capguy/walk/0011.png 903 | spriteOffset 904 | {14,2} 905 | spriteSourceSize 906 | {94,162} 907 | textureRect 908 | {{641,844},{157,69}} 909 | textureRotated 910 | 911 | 912 | 913 | aliases 914 | 915 | isFullyOpaque 916 | 917 | name 918 | capguy/walk/0012.png 919 | spriteOffset 920 | {14,2} 921 | spriteSourceSize 922 | {94,162} 923 | textureRect 924 | {{641,844},{157,69}} 925 | textureRotated 926 | 927 | 928 | 929 | aliases 930 | 931 | isFullyOpaque 932 | 933 | name 934 | capguy/turn/0009.png 935 | spriteOffset 936 | {5,7} 937 | spriteSourceSize 938 | {104,165} 939 | textureRect 940 | {{641,915},{152,66}} 941 | textureRotated 942 | 943 | 944 | 945 | aliases 946 | 947 | isFullyOpaque 948 | 949 | name 950 | capguy/turn/0010.png 951 | spriteOffset 952 | {5,7} 953 | spriteSourceSize 954 | {104,165} 955 | textureRect 956 | {{641,915},{152,66}} 957 | textureRotated 958 | 959 | 960 | 961 | 962 | 963 | version 964 | 1 965 | 966 | 967 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/CapGuy.swift: -------------------------------------------------------------------------------- 1 | // ---------------------------------------- 2 | // Sprite definitions for 'CapGuy' 3 | // Generated with TexturePacker 7.0.3 4 | // 5 | // https://www.codeandweb.com/texturepacker 6 | // ---------------------------------------- 7 | 8 | import SpriteKit 9 | 10 | 11 | class CapGuy { 12 | 13 | // sprite names 14 | let BACKGROUND = "Background" 15 | let CAPGUY_TURN_0001 = "capguy/turn/0001" 16 | let CAPGUY_TURN_0002 = "capguy/turn/0002" 17 | let CAPGUY_TURN_0003 = "capguy/turn/0003" 18 | let CAPGUY_TURN_0004 = "capguy/turn/0004" 19 | let CAPGUY_TURN_0005 = "capguy/turn/0005" 20 | let CAPGUY_TURN_0006 = "capguy/turn/0006" 21 | let CAPGUY_TURN_0007 = "capguy/turn/0007" 22 | let CAPGUY_TURN_0008 = "capguy/turn/0008" 23 | let CAPGUY_TURN_0009 = "capguy/turn/0009" 24 | let CAPGUY_TURN_0010 = "capguy/turn/0010" 25 | let CAPGUY_TURN_0011 = "capguy/turn/0011" 26 | let CAPGUY_TURN_0012 = "capguy/turn/0012" 27 | let CAPGUY_WALK_0001 = "capguy/walk/0001" 28 | let CAPGUY_WALK_0002 = "capguy/walk/0002" 29 | let CAPGUY_WALK_0003 = "capguy/walk/0003" 30 | let CAPGUY_WALK_0004 = "capguy/walk/0004" 31 | let CAPGUY_WALK_0005 = "capguy/walk/0005" 32 | let CAPGUY_WALK_0006 = "capguy/walk/0006" 33 | let CAPGUY_WALK_0007 = "capguy/walk/0007" 34 | let CAPGUY_WALK_0008 = "capguy/walk/0008" 35 | let CAPGUY_WALK_0009 = "capguy/walk/0009" 36 | let CAPGUY_WALK_0010 = "capguy/walk/0010" 37 | let CAPGUY_WALK_0011 = "capguy/walk/0011" 38 | let CAPGUY_WALK_0012 = "capguy/walk/0012" 39 | let CAPGUY_WALK_0013 = "capguy/walk/0013" 40 | let CAPGUY_WALK_0014 = "capguy/walk/0014" 41 | let CAPGUY_WALK_0015 = "capguy/walk/0015" 42 | let CAPGUY_WALK_0016 = "capguy/walk/0016" 43 | 44 | 45 | // load texture atlas 46 | let textureAtlas = SKTextureAtlas(named: "CapGuy") 47 | 48 | 49 | // individual texture objects 50 | func Background() -> SKTexture { return textureAtlas.textureNamed(BACKGROUND) } 51 | func capguy_turn_0001() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0001) } 52 | func capguy_turn_0002() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0002) } 53 | func capguy_turn_0003() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0003) } 54 | func capguy_turn_0004() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0004) } 55 | func capguy_turn_0005() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0005) } 56 | func capguy_turn_0006() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0006) } 57 | func capguy_turn_0007() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0007) } 58 | func capguy_turn_0008() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0008) } 59 | func capguy_turn_0009() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0009) } 60 | func capguy_turn_0010() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0010) } 61 | func capguy_turn_0011() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0011) } 62 | func capguy_turn_0012() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_TURN_0012) } 63 | func capguy_walk_0001() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0001) } 64 | func capguy_walk_0002() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0002) } 65 | func capguy_walk_0003() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0003) } 66 | func capguy_walk_0004() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0004) } 67 | func capguy_walk_0005() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0005) } 68 | func capguy_walk_0006() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0006) } 69 | func capguy_walk_0007() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0007) } 70 | func capguy_walk_0008() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0008) } 71 | func capguy_walk_0009() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0009) } 72 | func capguy_walk_0010() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0010) } 73 | func capguy_walk_0011() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0011) } 74 | func capguy_walk_0012() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0012) } 75 | func capguy_walk_0013() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0013) } 76 | func capguy_walk_0014() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0014) } 77 | func capguy_walk_0015() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0015) } 78 | func capguy_walk_0016() -> SKTexture { return textureAtlas.textureNamed(CAPGUY_WALK_0016) } 79 | 80 | 81 | // texture arrays for animations 82 | func capguy_turn() -> [SKTexture] { 83 | return [ 84 | capguy_turn_0001(), 85 | capguy_turn_0002(), 86 | capguy_turn_0003(), 87 | capguy_turn_0004(), 88 | capguy_turn_0005(), 89 | capguy_turn_0006(), 90 | capguy_turn_0007(), 91 | capguy_turn_0008(), 92 | capguy_turn_0009(), 93 | capguy_turn_0010(), 94 | capguy_turn_0011(), 95 | capguy_turn_0012() 96 | ] 97 | } 98 | 99 | func capguy_walk() -> [SKTexture] { 100 | return [ 101 | capguy_walk_0001(), 102 | capguy_walk_0002(), 103 | capguy_walk_0003(), 104 | capguy_walk_0004(), 105 | capguy_walk_0005(), 106 | capguy_walk_0006(), 107 | capguy_walk_0007(), 108 | capguy_walk_0008(), 109 | capguy_walk_0009(), 110 | capguy_walk_0010(), 111 | capguy_walk_0011(), 112 | capguy_walk_0012(), 113 | capguy_walk_0013(), 114 | capguy_walk_0014(), 115 | capguy_walk_0015(), 116 | capguy_walk_0016() 117 | ] 118 | } 119 | 120 | 121 | } 122 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/CapGuy.tps: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fileFormatVersion 5 | 6 6 | texturePackerVersion 7 | 7.0.3 8 | autoSDSettings 9 | 10 | 11 | scale 12 | 1 13 | extension 14 | @2x 15 | spriteFilter 16 | 17 | acceptFractionalValues 18 | 19 | maxTextureSize 20 | 21 | width 22 | -1 23 | height 24 | -1 25 | 26 | 27 | 28 | scale 29 | 0.5 30 | extension 31 | 32 | spriteFilter 33 | 34 | acceptFractionalValues 35 | 36 | maxTextureSize 37 | 38 | width 39 | -1 40 | height 41 | -1 42 | 43 | 44 | 45 | allowRotation 46 | 47 | shapeDebug 48 | 49 | dpi 50 | 72 51 | dataFormat 52 | spritekit-swift 53 | textureFileName 54 | 55 | flipPVR 56 | 57 | pvrQualityLevel 58 | 3 59 | astcQualityLevel 60 | 2 61 | basisUniversalQualityLevel 62 | 2 63 | etc1QualityLevel 64 | 70 65 | etc2QualityLevel 66 | 70 67 | dxtCompressionMode 68 | DXT_PERCEPTUAL 69 | ditherType 70 | NearestNeighbour 71 | backgroundColor 72 | 0 73 | libGdx 74 | 75 | filtering 76 | 77 | x 78 | Linear 79 | y 80 | Linear 81 | 82 | 83 | shapePadding 84 | 0 85 | jpgQuality 86 | 80 87 | pngOptimizationLevel 88 | 1 89 | webpQualityLevel 90 | 101 91 | textureSubPath 92 | 93 | textureFormat 94 | png 95 | borderPadding 96 | 0 97 | maxTextureSize 98 | 99 | width 100 | 2048 101 | height 102 | 2048 103 | 104 | fixedTextureSize 105 | 106 | width 107 | -1 108 | height 109 | -1 110 | 111 | algorithmSettings 112 | 113 | algorithm 114 | MaxRects 115 | freeSizeMode 116 | Best 117 | sizeConstraints 118 | AnySize 119 | forceSquared 120 | 121 | maxRects 122 | 123 | heuristic 124 | Best 125 | 126 | basic 127 | 128 | sortBy 129 | Best 130 | order 131 | Ascending 132 | 133 | polygon 134 | 135 | alignToGrid 136 | 1 137 | 138 | 139 | dataFileNames 140 | 141 | bundle 142 | 143 | name 144 | CapGuy.atlasc 145 | 146 | class 147 | 148 | name 149 | CapGuy.swift 150 | 151 | 152 | multiPackMode 153 | MultiPackOff 154 | forceIdenticalLayout 155 | 156 | outputFormat 157 | RGBA8888 158 | alphaHandling 159 | ClearTransparentPixels 160 | contentProtection 161 | 162 | key 163 | 164 | 165 | autoAliasEnabled 166 | 167 | trimSpriteNames 168 | 169 | prependSmartFolderName 170 | 171 | autodetectAnimations 172 | 173 | globalSpriteSettings 174 | 175 | scale 176 | 1 177 | scaleMode 178 | Smooth 179 | extrude 180 | 1 181 | trimThreshold 182 | 1 183 | trimMargin 184 | 1 185 | trimMode 186 | Trim 187 | tracerTolerance 188 | 200 189 | heuristicMask 190 | 191 | defaultPivotPoint 192 | 0.5,0.5 193 | writePivotPoints 194 | 195 | 196 | individualSpriteSettings 197 | 198 | ../sprites/Background.png 199 | 200 | pivotPoint 201 | 0.5,0.5 202 | spriteScale 203 | 1 204 | scale9Enabled 205 | 206 | scale9Borders 207 | 511,384,1022,768 208 | scale9Paddings 209 | 511,384,1022,768 210 | scale9FromFile 211 | 212 | 213 | ../sprites/capguy/turn/0001.png 214 | ../sprites/capguy/turn/0002.png 215 | ../sprites/capguy/turn/0003.png 216 | ../sprites/capguy/turn/0004.png 217 | ../sprites/capguy/turn/0005.png 218 | ../sprites/capguy/turn/0006.png 219 | ../sprites/capguy/turn/0007.png 220 | ../sprites/capguy/turn/0008.png 221 | ../sprites/capguy/turn/0009.png 222 | ../sprites/capguy/turn/0010.png 223 | ../sprites/capguy/turn/0011.png 224 | ../sprites/capguy/turn/0012.png 225 | 226 | pivotPoint 227 | 0.5,0.5 228 | spriteScale 229 | 1 230 | scale9Enabled 231 | 232 | scale9Borders 233 | 52,82,103,165 234 | scale9Paddings 235 | 52,82,103,165 236 | scale9FromFile 237 | 238 | 239 | ../sprites/capguy/walk/0001.png 240 | ../sprites/capguy/walk/0002.png 241 | ../sprites/capguy/walk/0003.png 242 | ../sprites/capguy/walk/0004.png 243 | ../sprites/capguy/walk/0005.png 244 | ../sprites/capguy/walk/0006.png 245 | ../sprites/capguy/walk/0007.png 246 | ../sprites/capguy/walk/0008.png 247 | ../sprites/capguy/walk/0009.png 248 | ../sprites/capguy/walk/0010.png 249 | ../sprites/capguy/walk/0011.png 250 | ../sprites/capguy/walk/0012.png 251 | ../sprites/capguy/walk/0013.png 252 | ../sprites/capguy/walk/0014.png 253 | ../sprites/capguy/walk/0015.png 254 | ../sprites/capguy/walk/0016.png 255 | 256 | pivotPoint 257 | 0.5,0.5 258 | spriteScale 259 | 1 260 | scale9Enabled 261 | 262 | scale9Borders 263 | 47,81,93,162 264 | scale9Paddings 265 | 47,81,93,162 266 | scale9FromFile 267 | 268 | 269 | 270 | fileLists 271 | 272 | default 273 | 274 | files 275 | 276 | ../sprites 277 | 278 | 279 | 280 | ignoreFileList 281 | 282 | replaceList 283 | 284 | ignoredWarnings 285 | 286 | commonDivisorX 287 | 1 288 | commonDivisorY 289 | 1 290 | packNormalMaps 291 | 292 | autodetectNormalMaps 293 | 294 | normalMapFilter 295 | 296 | normalMapSuffix 297 | 298 | normalMapSheetFileName 299 | 300 | exporterProperties 301 | 302 | 303 | 304 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/GameViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameViewController.swift 3 | // TexturePacker-SpriteKit-Swift 4 | // 5 | // Copyright (c) 2023 CodeAndWeb GmbH. All rights reserved. 6 | // 7 | 8 | import UIKit 9 | import SpriteKit 10 | 11 | class GameViewController: UIViewController { 12 | 13 | override func viewDidLoad() 14 | { 15 | super.viewDidLoad() 16 | 17 | // Configure the view. 18 | let skView = self.view as! SKView 19 | skView.showsFPS = true 20 | skView.showsNodeCount = true 21 | 22 | // Sprite Kit applies additional optimizations to improve rendering performance 23 | skView.ignoresSiblingOrder = true 24 | 25 | // Create and configure the scene. We use iPad dimensions, and crop the image on iPhone screen 26 | let scene = MyScene(size: CGSize(width: 1024, height: 768)); 27 | scene.scaleMode = .aspectFill 28 | 29 | skView.presentScene(scene) 30 | } 31 | 32 | 33 | override var supportedInterfaceOrientations : UIInterfaceOrientationMask { 34 | return UIInterfaceOrientationMask.landscape 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /TexturePacker-SpriteKit-Swift/MyScene.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MyScene.swift 3 | // TexturePacker-SpriteKit-Swift 4 | // 5 | // Copyright (c) 2023 CodeAndWeb GmbH. All rights reserved. 6 | // 7 | 8 | import SpriteKit 9 | 10 | 11 | class MyScene: SKScene 12 | { 13 | let sheet = CapGuy() 14 | var sequence: SKAction? 15 | 16 | override func didMove(to view: SKView) { 17 | super.didMove(to: view) 18 | 19 | // load background image, and set anchor point to the bottom left corner (default: center of sprite) 20 | let background = SKSpriteNode(texture: sheet.Background()); 21 | background.anchorPoint = CGPoint(x: 0, y: 0) 22 | // add the background image to the SKScene; by default it is added to position 0,0 (bottom left corner) of the scene 23 | addChild(background) 24 | 25 | // in the first animation CapGuy walks from left to right, in the second one he turns from right to left 26 | let walk = SKAction.animate(with: sheet.capguy_walk(), timePerFrame: 0.033) 27 | let turn = SKAction.animate(with: sheet.capguy_turn(), timePerFrame: 0.033) 28 | 29 | // to walk over the complete iPad display, we have to repeat the animation 30 | let walkAnim = SKAction.repeat(walk, count: 6) 31 | 32 | // we define two actions to move the sprite from left to right, and back; 33 | let moveRight = SKAction.moveTo(x: 900, duration: walkAnim.duration) 34 | let moveLeft = SKAction.moveTo(x: 100, duration: walkAnim.duration) 35 | 36 | // as we have only an animation with the CapGuy walking from left to right, we use a 'scale' action 37 | // to get a mirrored animation. 38 | let mirrorDirection = SKAction.scaleX(to: -1, y:1, duration:0.0) 39 | let resetDirection = SKAction.scaleX(to: 1, y:1, duration:0.0); 40 | 41 | // Action within a group are executed in parallel: 42 | let walkAndMoveRight = SKAction.group([resetDirection, walkAnim, moveRight]); 43 | let walkAndMoveLeft = SKAction.group([mirrorDirection, walkAnim, moveLeft]); 44 | 45 | // now we combine the walk+turn actions into a sequence, and repeat it forever 46 | sequence = SKAction.repeatForever(SKAction.sequence([walkAndMoveRight, turn, walkAndMoveLeft, turn])); 47 | } 48 | 49 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 50 | 51 | // each time the user touches the screen, we create a new sprite, set its position, ... 52 | let sprite = SKSpriteNode(texture: sheet.capguy_walk_0001()) 53 | sprite.position = CGPoint(x: 100.0, y: CGFloat(arc4random() % 100) + 200.0) 54 | 55 | // ... attach the action with the walk animation, and add it to our scene 56 | sprite.run(sequence!) 57 | addChild(sprite) 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/screenshot.png -------------------------------------------------------------------------------- /sprites/Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/Background.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0001.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0002.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0003.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0004.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0005.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0006.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0007.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0008.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0009.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0010.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0011.png -------------------------------------------------------------------------------- /sprites/capguy/turn/0012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/turn/0012.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0001.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0002.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0003.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0004.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0005.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0006.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0007.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0008.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0009.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0010.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0011.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0012.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0013.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0014.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0015.png -------------------------------------------------------------------------------- /sprites/capguy/walk/0016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAndWeb/spritekit-sprite-sheet-example/60df11ba03b161a86f7174c9e50deb73f23434bf/sprites/capguy/walk/0016.png --------------------------------------------------------------------------------