├── .gitignore ├── src ├── types │ └── globals.d.ts ├── index.html ├── main.ts └── scenes │ └── SpineDemo.ts ├── public └── assets │ └── spine │ ├── spineboy.png │ ├── spineboy.atlas │ └── spineboy.json ├── .gitattributes ├── @types └── phaser │ └── index.d.ts ├── tsconfig.json ├── .github └── workflows │ └── main.yml ├── package.json ├── LICENSE └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | /.cache 2 | /dist 3 | /node_modules 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/types/globals.d.ts: -------------------------------------------------------------------------------- 1 | // https://www.typescriptlang.org/docs/handbook/declaration-merging.html 2 | declare interface Window 3 | { 4 | SpinePlugin: any 5 | } 6 | -------------------------------------------------------------------------------- /public/assets/spine/spineboy.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:42e3d9411f5ca02146908fd22081968267419e048d66fcc5c721315146e114f6 3 | size 260801 4 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Phaser3 + Parceljs Template 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.png filter=lfs diff=lfs merge=lfs -text 2 | *.jpg filter=lfs diff=lfs merge=lfs -text 3 | *.jpeg filter=lfs diff=lfs merge=lfs -text 4 | *.gif filter=lfs diff=lfs merge=lfs -text 5 | -------------------------------------------------------------------------------- /@types/phaser/index.d.ts: -------------------------------------------------------------------------------- 1 | //// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import Phaser from 'phaser' 2 | import 'phaser/plugins/spine/dist/SpinePlugin' 3 | 4 | import SpineDemo from './scenes/SpineDemo' 5 | 6 | const config: Phaser.Types.Core.GameConfig = { 7 | type: Phaser.AUTO, 8 | width: 800, 9 | height: 600, 10 | physics: { 11 | default: 'arcade', 12 | arcade: { 13 | gravity: { y: 200 } 14 | } 15 | }, 16 | scene: [SpineDemo], 17 | plugins: { 18 | scene: [ 19 | { key: 'SpinePlugin', plugin: window.SpinePlugin, mapping: 'spine' } 20 | ] 21 | } 22 | } 23 | 24 | export default new Phaser.Game(config) 25 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "strict": true, 6 | "noImplicitAny": false, 7 | "noEmit": true, 8 | "allowJs": true, 9 | "jsx": "preserve", 10 | "importHelpers": true, 11 | "moduleResolution": "node", 12 | "experimentalDecorators": true, 13 | "esModuleInterop": true, 14 | "allowSyntheticDefaultImports": true, 15 | "sourceMap": true, 16 | "baseUrl": "./src", 17 | "paths": { 18 | "~/*": ["./*"] 19 | }, 20 | "typeRoots": [ 21 | "@types", 22 | "node_modules/@types", 23 | "node_module/phaser/types" 24 | ], 25 | "types": [ 26 | "Phaser" 27 | ] 28 | }, 29 | "include": [ 30 | "src/**/*" 31 | ] 32 | } -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - name: Checkout Repo 12 | uses: actions/checkout@master 13 | with: 14 | lfs: true 15 | - name: Install Parcel 16 | run: npm install parcel-bundler 17 | 18 | - name: Install Dependecies 19 | run: npm install 20 | 21 | - name: Build 22 | run: npm run build-gh 23 | 24 | - name: Deploy 25 | uses: JamesIves/github-pages-deploy-action@releases/v3 26 | with: 27 | ACCESS_TOKEN: ${{ secrets.GHP_TOKEN }} 28 | BRANCH: gh-pages # The branch the action should deploy to. 29 | FOLDER: dist # The folder the action should deploy. 30 | 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phaser3-typescript-spine", 3 | "version": "1.0.0", 4 | "description": "Example project for Spine animations in Phaser 3 with TypeScript plus SpinePlugin typing files!", 5 | "scripts": { 6 | "start": "parcel src/index.html -p 8000", 7 | "build": "parcel build src/index.html --out-dir dist --public-url ./", 8 | "build-gh": "parcel build src/index.html --out-dir dist --public-url /phaser3-typescript-spine/", 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "author": "supertommy", 12 | "license": "MIT", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/ourcade/phaser3-typescript-spine.git" 16 | }, 17 | "homepage": "https://github.com/ourcade/phaser3-typescript-spine", 18 | "devDependencies": { 19 | "parcel-plugin-clean-easy": "^1.0.2", 20 | "parcel-plugin-static-files-copy": "^2.2.1", 21 | "typescript": "^3.7.4" 22 | }, 23 | "dependencies": { 24 | "phaser": "^3.22.0" 25 | }, 26 | "parcelCleanPaths": [ 27 | "dist" 28 | ], 29 | "staticFiles": { 30 | "staticPath": "public", 31 | "watcherGlob": "**" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 ourcade 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/scenes/SpineDemo.ts: -------------------------------------------------------------------------------- 1 | import Phaser from 'phaser' 2 | 3 | const SPINEBOY_KEY = 'spineboy' 4 | 5 | export default class SpineDemo extends Phaser.Scene 6 | { 7 | private spineBoy!: SpineGameObject 8 | private cursors!: Phaser.Types.Input.Keyboard.CursorKeys 9 | private animNameLabel!: Phaser.GameObjects.Text 10 | 11 | private animationNames: string[] = [] 12 | private animationIndex = 0 13 | 14 | constructor() 15 | { 16 | super('spine-demo') 17 | } 18 | 19 | preload() 20 | { 21 | this.load.setPath('assets/spine/') 22 | this.load.spine(SPINEBOY_KEY, 'spineboy.json', 'spineboy.atlas') 23 | } 24 | 25 | create() 26 | { 27 | const startAnim = 'idle' 28 | 29 | this.spineBoy = this.createSpineBoy(startAnim) 30 | this.cursors = this.input.keyboard.createCursorKeys() 31 | this.animNameLabel = this.add.text(400, 100, startAnim, { color: '#fff' }) 32 | 33 | this.initializeAnimationsState(this.spineBoy) 34 | } 35 | 36 | update() 37 | { 38 | const size = this.animationNames.length 39 | if (Phaser.Input.Keyboard.JustDown(this.cursors.right!)) 40 | { 41 | if (this.animationIndex >= size - 1) 42 | { 43 | this.animationIndex = 0 44 | } 45 | else 46 | { 47 | ++this.animationIndex 48 | } 49 | 50 | this.changeAnimation(this.animationIndex) 51 | } 52 | else if (Phaser.Input.Keyboard.JustDown(this.cursors.left!)) 53 | { 54 | if (this.animationIndex <= 0) 55 | { 56 | this.animationIndex = size - 1 57 | } 58 | else 59 | { 60 | --this.animationIndex 61 | } 62 | 63 | this.changeAnimation(this.animationIndex) 64 | } 65 | } 66 | 67 | private createSpineBoy(startAnim = 'idle') 68 | { 69 | const spineBoy = this.add.spine(400, 600, SPINEBOY_KEY, startAnim, true) 70 | 71 | spineBoy.scaleX = 0.5 72 | spineBoy.scaleY = 0.5 73 | 74 | return spineBoy 75 | } 76 | 77 | private initializeAnimationsState(spineGO: SpineGameObject) 78 | { 79 | const startAnim = spineGO.getCurrentAnimation().name 80 | 81 | spineGO.getAnimationList().forEach((name, idx) => { 82 | this.animationNames.push(name) 83 | if (name === startAnim) 84 | { 85 | this.animationIndex = idx 86 | } 87 | }) 88 | } 89 | 90 | private changeAnimation(index: number) 91 | { 92 | const name = this.animationNames[index] 93 | this.spineBoy.play(name, true) 94 | this.animNameLabel.text = name 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![parcel3-typescript-spine](https://user-images.githubusercontent.com/2236153/72027279-9e637980-323b-11ea-984e-7da548af5a83.png) 2 | 3 | # Phaser 3 + TypeScript + Spine 4 | > Example project for Spine animations in Phaser 3 with TypeScript plus SpinePlugin typing files! 🌟 5 | 6 | ![License](https://img.shields.io/badge/license-MIT-green) 7 | 8 | ## In-depth Guide 9 | 10 | [You can find a guide explaining this project here.](https://blog.ourcade.co/posts/2020/phaser-3-parcel-typescript-spine/) 11 | 12 | ## Demo 13 | 14 | https://ourcade.github.io/phaser3-typescript-spine/ 15 | 16 | ## Prerequisites 17 | 18 | This example project uses the [phaser3-parcel-template](https://github.com/ourcade/phaser3-parcel-template) and requires [Parcel](https://parceljs.org/). 19 | 20 | ## Getting Started 21 | 22 | Clone this repository to your local machine (or download from Github or use a tool like [Degit](https://github.com/Rich-Harris/degit)): 23 | 24 | ```bash 25 | git clone https://github.com/ourcade/phaser3-typescript-spine.git my-project-folder 26 | ``` 27 | 28 | Go into your project folder and install dependencies: 29 | 30 | ```bash 31 | cd my-project-folder 32 | npm install 33 | ``` 34 | 35 | Start development server: 36 | 37 | ```bash 38 | npm run start 39 | ``` 40 | 41 | You'll see Spine Boy in his idle animation. Press the `left` and `right` arrow keys to cycle through his other animations. 🎉 42 | 43 | Spine Boy 44 | 45 | Demo: https://ourcade.github.io/phaser3-typescript-spine/ 46 | 47 | ## Project Structure 48 | 49 | ``` 50 | ├── ... 51 | ├── public 52 | │ ├── assets 53 | │ │ ├── spine 54 | │ │ │ ├── spineboy.atlas 55 | │ │ │ ├── spineboy.json 56 | │ │ │ ├── spineboy.png 57 | ├── src 58 | │ ├── scenes 59 | │ │ ├── SpineDemo.ts 60 | │ ├── types 61 | │ │ ├── globals.d.ts 62 | │ ├── index.html 63 | │ ├── main.ts 64 | ``` 65 | 66 | The Spine Boy assets exported from Spine is in `public/assets/spine`. These files are loaded in the `preload()` method of `SpineDemo.ts`. 67 | 68 | The Phaser 3 SpinePlugin is loaded in `main.ts`. 69 | 70 | ## License 71 | 72 | [MIT License](https://github.com/ourcade/phaser3-parcel-template/blob/master/LICENSE) 73 | -------------------------------------------------------------------------------- /public/assets/spine/spineboy.atlas: -------------------------------------------------------------------------------- 1 | 2 | spineboy.png 3 | size: 1024,256 4 | format: RGBA8888 5 | filter: Linear,Linear 6 | repeat: none 7 | crosshair 8 | rotate: false 9 | xy: 352, 7 10 | size: 45, 45 11 | orig: 45, 45 12 | offset: 0, 0 13 | index: -1 14 | eye-indifferent 15 | rotate: false 16 | xy: 862, 105 17 | size: 47, 45 18 | orig: 47, 45 19 | offset: 0, 0 20 | index: -1 21 | eye-surprised 22 | rotate: false 23 | xy: 505, 79 24 | size: 47, 45 25 | orig: 47, 45 26 | offset: 0, 0 27 | index: -1 28 | front-bracer 29 | rotate: false 30 | xy: 826, 66 31 | size: 29, 40 32 | orig: 29, 40 33 | offset: 0, 0 34 | index: -1 35 | front-fist-closed 36 | rotate: false 37 | xy: 786, 65 38 | size: 38, 41 39 | orig: 38, 41 40 | offset: 0, 0 41 | index: -1 42 | front-fist-open 43 | rotate: true 44 | xy: 710, 51 45 | size: 43, 44 46 | orig: 43, 44 47 | offset: 0, 0 48 | index: -1 49 | front-foot 50 | rotate: false 51 | xy: 210, 6 52 | size: 63, 35 53 | orig: 63, 35 54 | offset: 0, 0 55 | index: -1 56 | front-shin 57 | rotate: true 58 | xy: 665, 128 59 | size: 41, 92 60 | orig: 41, 92 61 | offset: 0, 0 62 | index: -1 63 | front-thigh 64 | rotate: true 65 | xy: 2, 2 66 | size: 23, 56 67 | orig: 23, 56 68 | offset: 0, 0 69 | index: -1 70 | front-upper-arm 71 | rotate: false 72 | xy: 250, 205 73 | size: 23, 49 74 | orig: 23, 49 75 | offset: 0, 0 76 | index: -1 77 | goggles 78 | rotate: false 79 | xy: 665, 171 80 | size: 131, 83 81 | orig: 131, 83 82 | offset: 0, 0 83 | index: -1 84 | gun 85 | rotate: false 86 | xy: 798, 152 87 | size: 105, 102 88 | orig: 105, 102 89 | offset: 0, 0 90 | index: -1 91 | head 92 | rotate: false 93 | xy: 2, 27 94 | size: 136, 149 95 | orig: 136, 149 96 | offset: 0, 0 97 | index: -1 98 | hoverboard-board 99 | rotate: false 100 | xy: 2, 178 101 | size: 246, 76 102 | orig: 246, 76 103 | offset: 0, 0 104 | index: -1 105 | hoverboard-thruster 106 | rotate: true 107 | xy: 722, 96 108 | size: 30, 32 109 | orig: 30, 32 110 | offset: 0, 0 111 | index: -1 112 | hoverglow-small 113 | rotate: false 114 | xy: 275, 81 115 | size: 137, 38 116 | orig: 137, 38 117 | offset: 0, 0 118 | index: -1 119 | mouth-grind 120 | rotate: false 121 | xy: 614, 97 122 | size: 47, 30 123 | orig: 47, 30 124 | offset: 0, 0 125 | index: -1 126 | mouth-oooo 127 | rotate: false 128 | xy: 612, 65 129 | size: 47, 30 130 | orig: 47, 30 131 | offset: 0, 0 132 | index: -1 133 | mouth-smile 134 | rotate: false 135 | xy: 661, 64 136 | size: 47, 30 137 | orig: 47, 30 138 | offset: 0, 0 139 | index: -1 140 | muzzle-glow 141 | rotate: false 142 | xy: 382, 54 143 | size: 25, 25 144 | orig: 25, 25 145 | offset: 0, 0 146 | index: -1 147 | muzzle-ring 148 | rotate: true 149 | xy: 275, 54 150 | size: 25, 105 151 | orig: 25, 105 152 | offset: 0, 0 153 | index: -1 154 | muzzle01 155 | rotate: true 156 | xy: 911, 95 157 | size: 67, 40 158 | orig: 67, 40 159 | offset: 0, 0 160 | index: -1 161 | muzzle02 162 | rotate: false 163 | xy: 792, 108 164 | size: 68, 42 165 | orig: 68, 42 166 | offset: 0, 0 167 | index: -1 168 | muzzle03 169 | rotate: true 170 | xy: 956, 171 171 | size: 83, 53 172 | orig: 83, 53 173 | offset: 0, 0 174 | index: -1 175 | muzzle04 176 | rotate: false 177 | xy: 275, 7 178 | size: 75, 45 179 | orig: 75, 45 180 | offset: 0, 0 181 | index: -1 182 | muzzle05 183 | rotate: false 184 | xy: 140, 3 185 | size: 68, 38 186 | orig: 68, 38 187 | offset: 0, 0 188 | index: -1 189 | neck 190 | rotate: false 191 | xy: 250, 182 192 | size: 18, 21 193 | orig: 18, 21 194 | offset: 0, 0 195 | index: -1 196 | portal-bg 197 | rotate: false 198 | xy: 140, 43 199 | size: 133, 133 200 | orig: 133, 133 201 | offset: 0, 0 202 | index: -1 203 | portal-flare1 204 | rotate: false 205 | xy: 554, 65 206 | size: 56, 30 207 | orig: 56, 30 208 | offset: 0, 0 209 | index: -1 210 | portal-flare2 211 | rotate: true 212 | xy: 759, 112 213 | size: 57, 31 214 | orig: 57, 31 215 | offset: 0, 0 216 | index: -1 217 | portal-flare3 218 | rotate: false 219 | xy: 554, 97 220 | size: 58, 30 221 | orig: 58, 30 222 | offset: 0, 0 223 | index: -1 224 | portal-shade 225 | rotate: false 226 | xy: 275, 121 227 | size: 133, 133 228 | orig: 133, 133 229 | offset: 0, 0 230 | index: -1 231 | portal-streaks1 232 | rotate: false 233 | xy: 410, 126 234 | size: 126, 128 235 | orig: 126, 128 236 | offset: 0, 0 237 | index: -1 238 | portal-streaks2 239 | rotate: false 240 | xy: 538, 129 241 | size: 125, 125 242 | orig: 125, 125 243 | offset: 0, 0 244 | index: -1 245 | rear-bracer 246 | rotate: false 247 | xy: 857, 67 248 | size: 28, 36 249 | orig: 28, 36 250 | offset: 0, 0 251 | index: -1 252 | rear-foot 253 | rotate: false 254 | xy: 663, 96 255 | size: 57, 30 256 | orig: 57, 30 257 | offset: 0, 0 258 | index: -1 259 | rear-shin 260 | rotate: true 261 | xy: 414, 86 262 | size: 38, 89 263 | orig: 38, 89 264 | offset: 0, 0 265 | index: -1 266 | rear-thigh 267 | rotate: false 268 | xy: 756, 63 269 | size: 28, 47 270 | orig: 28, 47 271 | offset: 0, 0 272 | index: -1 273 | rear-upper-arm 274 | rotate: true 275 | xy: 60, 5 276 | size: 20, 44 277 | orig: 20, 44 278 | offset: 0, 0 279 | index: -1 280 | torso 281 | rotate: false 282 | xy: 905, 164 283 | size: 49, 90 284 | orig: 49, 90 285 | offset: 0, 0 286 | index: -1 287 | -------------------------------------------------------------------------------- /public/assets/spine/spineboy.json: -------------------------------------------------------------------------------- 1 | { 2 | "skeleton": { 3 | "hash": "trpXdBbr7UAXfFiSdTBpF/EV/Vc", 4 | "spine": "3.8.55", 5 | "x": -221.27, 6 | "y": -8.57, 7 | "width": 470.72, 8 | "height": 731.57, 9 | "images": "./images/", 10 | "audio": "" 11 | }, 12 | "bones": [ 13 | { "name": "root" }, 14 | { "name": "hip", "parent": "root", "y": 247.47 }, 15 | { 16 | "name": "torso", 17 | "parent": "hip", 18 | "length": 127.56, 19 | "rotation": 103.82, 20 | "x": -1.62, 21 | "y": 4.9, 22 | "color": "e0da19ff" 23 | }, 24 | { 25 | "name": "front-upper-arm", 26 | "parent": "torso", 27 | "length": 69.45, 28 | "rotation": 168.38, 29 | "x": 103.76, 30 | "y": 19.33, 31 | "color": "00ff04ff" 32 | }, 33 | { 34 | "name": "front-bracer", 35 | "parent": "front-upper-arm", 36 | "length": 40.57, 37 | "rotation": 18.3, 38 | "x": 68.8, 39 | "y": -0.68, 40 | "color": "00ff04ff" 41 | }, 42 | { 43 | "name": "front-fist", 44 | "parent": "front-bracer", 45 | "length": 65.39, 46 | "rotation": 12.43, 47 | "x": 40.57, 48 | "y": 0.2, 49 | "color": "00ff04ff" 50 | }, 51 | { 52 | "name": "front-thigh", 53 | "parent": "hip", 54 | "length": 74.81, 55 | "rotation": -95.51, 56 | "x": -17.46, 57 | "y": -11.64, 58 | "color": "00ff04ff" 59 | }, 60 | { 61 | "name": "front-shin", 62 | "parent": "front-thigh", 63 | "length": 128.77, 64 | "rotation": -2.21, 65 | "x": 78.69, 66 | "y": 1.6, 67 | "color": "00ff04ff" 68 | }, 69 | { 70 | "name": "front-foot", 71 | "parent": "front-shin", 72 | "length": 91.34, 73 | "rotation": 77.91, 74 | "x": 128.76, 75 | "y": -0.34, 76 | "color": "00ff04ff" 77 | }, 78 | { 79 | "name": "rear-upper-arm", 80 | "parent": "torso", 81 | "length": 51.94, 82 | "rotation": -169.56, 83 | "x": 92.36, 84 | "y": -19.22, 85 | "color": "ff000dff" 86 | }, 87 | { "name": "rear-bracer", "parent": "rear-upper-arm", "length": 34.56, "rotation": 23.15, "x": 51.36, "color": "ff000dff" }, 88 | { 89 | "name": "gun", 90 | "parent": "rear-bracer", 91 | "length": 43.11, 92 | "rotation": 5.35, 93 | "x": 34.42, 94 | "y": -0.45, 95 | "color": "ff000dff" 96 | }, 97 | { "name": "gun-tip", "parent": "gun", "rotation": 6.83, "x": 201.05, "y": 52.14, "color": "ff000dff" }, 98 | { 99 | "name": "neck", 100 | "parent": "torso", 101 | "length": 25.45, 102 | "rotation": -31.54, 103 | "x": 127.5, 104 | "y": -0.31, 105 | "color": "e0da19ff" 106 | }, 107 | { 108 | "name": "head", 109 | "parent": "neck", 110 | "length": 263.58, 111 | "rotation": 23.18, 112 | "x": 27.66, 113 | "y": -0.26, 114 | "color": "e0da19ff" 115 | }, 116 | { 117 | "name": "rear-thigh", 118 | "parent": "hip", 119 | "length": 85.72, 120 | "rotation": -72.54, 121 | "x": 8.91, 122 | "y": -5.63, 123 | "color": "ff000dff" 124 | }, 125 | { 126 | "name": "rear-shin", 127 | "parent": "rear-thigh", 128 | "length": 121.88, 129 | "rotation": -19.83, 130 | "x": 86.1, 131 | "y": -1.33, 132 | "color": "ff000dff" 133 | }, 134 | { 135 | "name": "rear-foot", 136 | "parent": "rear-shin", 137 | "length": 82.57, 138 | "rotation": 69.3, 139 | "x": 121.46, 140 | "y": -0.76, 141 | "color": "ff000dff" 142 | } 143 | ], 144 | "slots": [ 145 | { "name": "rear-upper-arm", "bone": "rear-upper-arm", "attachment": "rear-upper-arm" }, 146 | { "name": "rear-bracer", "bone": "rear-bracer", "attachment": "rear-bracer" }, 147 | { "name": "gun", "bone": "gun", "attachment": "gun" }, 148 | { "name": "rear-foot", "bone": "rear-foot", "attachment": "rear-foot" }, 149 | { "name": "rear-thigh", "bone": "rear-thigh", "attachment": "rear-thigh" }, 150 | { "name": "rear-shin", "bone": "rear-shin", "attachment": "rear-shin" }, 151 | { "name": "neck", "bone": "neck", "attachment": "neck" }, 152 | { "name": "torso", "bone": "torso", "attachment": "torso" }, 153 | { "name": "front-upper-arm", "bone": "front-upper-arm", "attachment": "front-upper-arm" }, 154 | { "name": "head", "bone": "head", "attachment": "head" }, 155 | { "name": "eye", "bone": "head", "attachment": "eye-indifferent" }, 156 | { "name": "front-thigh", "bone": "front-thigh", "attachment": "front-thigh" }, 157 | { "name": "front-foot", "bone": "front-foot", "attachment": "front-foot" }, 158 | { "name": "front-shin", "bone": "front-shin", "attachment": "front-shin" }, 159 | { "name": "mouth", "bone": "head", "attachment": "mouth-smile" }, 160 | { "name": "goggles", "bone": "head", "attachment": "goggles" }, 161 | { "name": "front-bracer", "bone": "front-bracer", "attachment": "front-bracer" }, 162 | { "name": "front-fist", "bone": "front-fist", "attachment": "front-fist-closed" }, 163 | { "name": "muzzle", "bone": "gun-tip", "blend": "additive" }, 164 | { "name": "head-bb", "bone": "head" } 165 | ], 166 | "skins": [ 167 | { 168 | "name": "default", 169 | "attachments": { 170 | "gun": { 171 | "gun": { "x": 77.3, "y": 16.4, "rotation": 60.83, "width": 210, "height": 203 } 172 | }, 173 | "rear-shin": { 174 | "rear-shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } 175 | }, 176 | "head-bb": { 177 | "head": { 178 | "type": "boundingbox", 179 | "vertexCount": 6, 180 | "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.62, 285.16, 57.18, 120.77, 164.95, -5.07, 76.95 ] 181 | } 182 | }, 183 | "mouth": { 184 | "mouth-grind": { "x": 23.69, "y": -32.24, "rotation": -70.63, "width": 93, "height": 59 }, 185 | "mouth-oooo": { "x": 23.69, "y": -32.24, "rotation": -70.63, "width": 93, "height": 59 }, 186 | "mouth-smile": { "x": 23.69, "y": -32.24, "rotation": -70.63, "width": 93, "height": 59 } 187 | }, 188 | "rear-upper-arm": { 189 | "rear-upper-arm": { "x": 21.13, "y": 4.09, "rotation": 89.33, "width": 40, "height": 87 } 190 | }, 191 | "front-upper-arm": { 192 | "front-upper-arm": { "x": 25.2, "y": 1.17, "rotation": 97.9, "width": 46, "height": 97 } 193 | }, 194 | "front-bracer": { 195 | "front-bracer": { "x": 12.03, "y": -1.68, "rotation": 79.6, "width": 58, "height": 80 } 196 | }, 197 | "front-foot": { 198 | "front-foot": { "x": 29.52, "y": 7.84, "rotation": 18.69, "width": 126, "height": 69 } 199 | }, 200 | "goggles": { 201 | "goggles": { "x": 97.08, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } 202 | }, 203 | "front-shin": { 204 | "front-shin": { "x": 55.12, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } 205 | }, 206 | "neck": { 207 | "neck": { "x": 9.77, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } 208 | }, 209 | "head": { 210 | "head": { "x": 128.96, "y": 0.3, "rotation": -70.63, "width": 271, "height": 298 } 211 | }, 212 | "muzzle": { 213 | "muzzle01": { 214 | "x": 159.26, 215 | "y": 5.83, 216 | "scaleX": 4, 217 | "scaleY": 4, 218 | "rotation": 0.15, 219 | "width": 133, 220 | "height": 79 221 | }, 222 | "muzzle02": { 223 | "x": 191.23, 224 | "y": 5.91, 225 | "scaleX": 4, 226 | "scaleY": 4, 227 | "rotation": 0.15, 228 | "width": 135, 229 | "height": 84 230 | }, 231 | "muzzle03": { 232 | "x": 230.67, 233 | "y": 6.02, 234 | "scaleX": 4, 235 | "scaleY": 4, 236 | "rotation": 0.15, 237 | "width": 166, 238 | "height": 106 239 | }, 240 | "muzzle04": { 241 | "x": 218.54, 242 | "y": 5.99, 243 | "scaleX": 4, 244 | "scaleY": 4, 245 | "rotation": 0.15, 246 | "width": 149, 247 | "height": 90 248 | } 249 | }, 250 | "rear-bracer": { 251 | "rear-bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } 252 | }, 253 | "rear-thigh": { 254 | "rear-thigh": { "x": 33.11, "y": -4.11, "rotation": 72.54, "width": 55, "height": 94 } 255 | }, 256 | "front-fist": { 257 | "front-fist-closed": { "x": 35.5, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, 258 | "front-fist-open": { "x": 39.57, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } 259 | }, 260 | "eye": { 261 | "eye-indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, 262 | "eye-surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } 263 | }, 264 | "front-thigh": { 265 | "front-thigh": { "x": 42.48, "y": 4.45, "rotation": 84.87, "width": 45, "height": 112 } 266 | }, 267 | "torso": { 268 | "torso": { "x": 63.61, "y": 7.12, "rotation": -94.54, "width": 98, "height": 180 } 269 | }, 270 | "rear-foot": { 271 | "rear-foot": { "x": 31.51, "y": 3.58, "rotation": 23.07, "width": 113, "height": 60 } 272 | } 273 | } 274 | } 275 | ], 276 | "events": { 277 | "footstep": {} 278 | }, 279 | "animations": { 280 | "death": { 281 | "slots": { 282 | "front-fist": { 283 | "attachment": [ 284 | { "name": "front-fist-open" } 285 | ] 286 | }, 287 | "eye": { 288 | "attachment": [ 289 | { "name": "eye-surprised" }, 290 | { "time": 0.4667, "name": "eye-indifferent" }, 291 | { "time": 2.2333, "name": "eye-surprised" }, 292 | { "time": 4.5333, "name": "eye-indifferent" } 293 | ] 294 | }, 295 | "mouth": { 296 | "attachment": [ 297 | { "name": "mouth-oooo" }, 298 | { "time": 2.2333, "name": "mouth-grind" }, 299 | { "time": 4.5333, "name": "mouth-oooo" } 300 | ] 301 | } 302 | }, 303 | "bones": { 304 | "head": { 305 | "rotate": [ 306 | { "angle": -2.83 }, 307 | { "time": 0.1333, "angle": -28.74 }, 308 | { "time": 0.2333, "angle": 11.43 }, 309 | { "time": 0.3333, "angle": -50.25 }, 310 | { "time": 0.4, "angle": -72.67, "curve": "stepped" }, 311 | { "time": 0.4333, "angle": -72.67 }, 312 | { "time": 0.5, "angle": -20.25 }, 313 | { "time": 0.5667, "angle": -85.29, "curve": "stepped" }, 314 | { "time": 2.2333, "angle": -85.29 }, 315 | { "time": 2.5, "angle": -51.96, "curve": "stepped" }, 316 | { "time": 4.5333, "angle": -51.96 }, 317 | { "time": 4.6667, "angle": -85.29 } 318 | ] 319 | }, 320 | "neck": { 321 | "rotate": [ 322 | { "angle": -2.83 }, 323 | { "time": 0.1333, "angle": 12.35 }, 324 | { "time": 0.2333, "angle": 29.89 }, 325 | { "time": 0.3, "angle": 70.36 }, 326 | { "time": 0.4, "angle": -10.22, "curve": "stepped" }, 327 | { "time": 0.4333, "angle": -10.22 }, 328 | { "time": 0.5, "angle": 2.93 }, 329 | { "time": 0.5667, "angle": 47.95, "curve": "stepped" }, 330 | { "time": 2.2333, "angle": 47.95 }, 331 | { "time": 2.5, "angle": 18.51, "curve": "stepped" }, 332 | { "time": 4.5333, "angle": 18.51 }, 333 | { "time": 4.6667, "angle": 47.95 } 334 | ] 335 | }, 336 | "torso": { 337 | "rotate": [ 338 | { "angle": -8.62 }, 339 | { "time": 0.1333, "angle": 28.2 }, 340 | { "time": 0.2667, "angle": -280.19 }, 341 | { "time": 0.4, "angle": -237.23, "curve": "stepped" }, 342 | { "time": 0.4333, "angle": -237.23 }, 343 | { "time": 0.5, "angle": 76.03 } 344 | ] 345 | }, 346 | "front-upper-arm": { 347 | "rotate": [ 348 | { "angle": -38.86 }, 349 | { "time": 0.1333, "angle": -299.59 }, 350 | { "time": 0.2667, "angle": -244.75 }, 351 | { "time": 0.4, "angle": -292.36 }, 352 | { "time": 0.4333, "angle": -315.85 }, 353 | { "time": 0.5, "angle": -347.94 }, 354 | { "time": 0.7, "angle": -347.33, "curve": "stepped" }, 355 | { "time": 2.2333, "angle": -347.33 }, 356 | { "time": 2.7, "angle": -290.68 }, 357 | { "time": 2.7667, "angle": -285.11 }, 358 | { "time": 4.6667, "angle": -290.68 }, 359 | { "time": 4.8, "angle": 8.61 }, 360 | { "time": 4.8667, "angle": 10.94 } 361 | ] 362 | }, 363 | "rear-upper-arm": { 364 | "rotate": [ 365 | { "angle": -44.7 }, 366 | { "time": 0.1333, "angle": 112.26 }, 367 | { "time": 0.2667, "angle": 129.08 }, 368 | { "time": 0.4, "angle": 134.94, "curve": "stepped" }, 369 | { "time": 0.4333, "angle": 134.94 }, 370 | { "time": 0.5667, "angle": 172.6 } 371 | ] 372 | }, 373 | "front-bracer": { 374 | "rotate": [ 375 | { "angle": 21.88 }, 376 | { "time": 0.1333, "angle": 11.49 }, 377 | { "time": 0.2667, "angle": -18.82 }, 378 | { "time": 0.4, "angle": -18.93 }, 379 | { "time": 0.4333, "angle": -18.28 }, 380 | { "time": 0.5, "angle": 60.62 }, 381 | { "time": 0.7, "angle": -18.88, "curve": "stepped" }, 382 | { "time": 2.2333, "angle": -18.88 }, 383 | { "time": 2.7, "angle": -1.96, "curve": "stepped" }, 384 | { "time": 4.6667, "angle": -1.96 }, 385 | { "time": 4.8, "angle": 34.55 }, 386 | { "time": 4.9333, "angle": -18.75 } 387 | ] 388 | }, 389 | "front-fist": { 390 | "rotate": [ 391 | { "angle": -2.33 }, 392 | { "time": 0.2667, "angle": 26.35 }, 393 | { "time": 0.7, "angle": -6.08, "curve": "stepped" }, 394 | { "time": 2.2333, "angle": -6.08 }, 395 | { "time": 2.7, "angle": 5.73, "curve": "stepped" }, 396 | { "time": 4.6667, "angle": 5.73 }, 397 | { "time": 4.8667, "angle": -6.52 } 398 | ] 399 | }, 400 | "rear-bracer": { 401 | "rotate": [ 402 | { "angle": 10.36 }, 403 | { "time": 0.1333, "angle": -23.12 }, 404 | { "time": 0.2667, "angle": -23.12 }, 405 | { "time": 0.4, "angle": -23.16, "curve": "stepped" }, 406 | { "time": 0.4333, "angle": -23.16 }, 407 | { "time": 0.5667, "angle": -23.2 } 408 | ] 409 | }, 410 | "gun": { 411 | "rotate": [ 412 | { "angle": -2.79 }, 413 | { "time": 0.1333, "angle": -24.58 } 414 | ] 415 | }, 416 | "front-thigh": { 417 | "rotate": [ 418 | {}, 419 | { "time": 0.1333, "angle": 8.47 }, 420 | { "time": 0.2667, "angle": 115.96 }, 421 | { "time": 0.4, "angle": 180.66, "curve": "stepped" }, 422 | { "time": 0.4333, "angle": 180.66 }, 423 | { "time": 0.5, "angle": 155.22 }, 424 | { "time": 0.6, "angle": 97.74 } 425 | ] 426 | }, 427 | "front-shin": { 428 | "rotate": [ 429 | {}, 430 | { "time": 0.1333, "angle": -27.37 }, 431 | { "time": 0.2667, "angle": -35.1 }, 432 | { "time": 0.4, "angle": -37.73, "curve": "stepped" }, 433 | { "time": 0.4333, "angle": -37.73 }, 434 | { "time": 0.5, "angle": -40.07 }, 435 | { "time": 0.6, "angle": 2.76 } 436 | ] 437 | }, 438 | "rear-thigh": { 439 | "rotate": [ 440 | {}, 441 | { "time": 0.1333, "angle": 70.45 }, 442 | { "time": 0.2667, "angle": 155.35 }, 443 | { "time": 0.4, "angle": 214.31, "curve": "stepped" }, 444 | { "time": 0.4333, "angle": 214.31 }, 445 | { "time": 0.5, "angle": 169.67 }, 446 | { "time": 0.8, "angle": 83.27 } 447 | ] 448 | }, 449 | "rear-shin": { 450 | "rotate": [ 451 | {}, 452 | { "time": 0.1333, "angle": 18.94 }, 453 | { "time": 0.2667, "angle": -21.04 }, 454 | { "time": 0.4, "angle": -29.94, "curve": "stepped" }, 455 | { "time": 0.4333, "angle": -29.94 }, 456 | { "time": 0.5, "angle": -16.79 }, 457 | { "time": 0.8, "angle": 7.78 } 458 | ] 459 | }, 460 | "rear-foot": { 461 | "rotate": [ 462 | {}, 463 | { "time": 0.1333, "angle": -11.63 }, 464 | { "time": 0.4, "angle": -45.6 } 465 | ] 466 | }, 467 | "front-foot": { 468 | "rotate": [ 469 | {}, 470 | { "time": 0.4, "angle": -48.75 } 471 | ] 472 | }, 473 | "hip": { 474 | "translate": [ 475 | {}, 476 | { "time": 0.2, "x": 50.35, "y": 151.73 }, 477 | { "time": 0.4, "x": 5.17, "y": -119.65, "curve": "stepped" }, 478 | { "time": 0.4333, "x": 5.17, "y": -119.65 }, 479 | { "time": 0.5, "x": 50.35, "y": -205.19 } 480 | ] 481 | } 482 | } 483 | }, 484 | "hit": { 485 | "slots": { 486 | "front-fist": { 487 | "attachment": [ 488 | { "time": 0.1667, "name": "front-fist-open" } 489 | ] 490 | }, 491 | "mouth": { 492 | "attachment": [ 493 | { "name": "mouth-grind" }, 494 | { "time": 0.3333, "name": "mouth-smile" } 495 | ] 496 | } 497 | }, 498 | "bones": { 499 | "torso": { 500 | "rotate": [ 501 | { "angle": 56.42 }, 502 | { "time": 0.3333, "angle": 8.89 } 503 | ] 504 | }, 505 | "neck": { 506 | "rotate": [ 507 | { "angle": 35.39 }, 508 | { "time": 0.2333, "angle": 24.95 } 509 | ] 510 | }, 511 | "head": { 512 | "rotate": [ 513 | { "angle": 10.22 }, 514 | { "time": 0.3333, "angle": -41.3 } 515 | ] 516 | }, 517 | "front-upper-arm": { 518 | "rotate": [ 519 | { "angle": -310.93, "curve": 0.38, "c2": 0.53, "c3": 0.745 }, 520 | { "time": 0.3333, "angle": -112.6 } 521 | ], 522 | "translate": [ 523 | { "x": 7.23, "y": -13.13 } 524 | ] 525 | }, 526 | "front-bracer": { 527 | "rotate": [ 528 | { "angle": 36.99 }, 529 | { "time": 0.3333, "angle": -28.65 } 530 | ] 531 | }, 532 | "front-fist": { 533 | "rotate": [ 534 | { "angle": 13.59 }, 535 | { "time": 0.3333, "angle": 7.56 } 536 | ] 537 | }, 538 | "rear-upper-arm": { 539 | "rotate": [ 540 | { "angle": 271.02, "curve": 0.343, "c2": 0.36, "c3": 0.68, "c4": 0.71 }, 541 | { "time": 0.3333, "angle": -15.84 } 542 | ], 543 | "translate": [ 544 | { "time": 0.3333, "x": -0.1, "y": -0.46 } 545 | ] 546 | }, 547 | "rear-bracer": { 548 | "rotate": [ 549 | {}, 550 | { "time": 0.3333, "angle": 40.03 } 551 | ] 552 | }, 553 | "gun": { 554 | "rotate": [ 555 | { "angle": 14.98 }, 556 | { "time": 0.3333, "angle": 39.76 } 557 | ] 558 | }, 559 | "front-thigh": { 560 | "rotate": [ 561 | { "angle": 90.94, "curve": 0.227, "c2": 0.27, "c3": 0.433 }, 562 | { "time": 0.3333, "angle": 32.03 } 563 | ], 564 | "translate": [ 565 | { "x": 7.21, "y": -4 } 566 | ] 567 | }, 568 | "rear-thigh": { 569 | "rotate": [ 570 | { "angle": 40.52, "curve": 0.296, "c2": 0.3, "c3": 0.59 }, 571 | { "time": 0.3333, "angle": 90.77 } 572 | ], 573 | "translate": [ 574 | { "x": -1.96, "y": -0.32 } 575 | ] 576 | }, 577 | "front-shin": { 578 | "rotate": [ 579 | { "angle": -96.63 }, 580 | { "time": 0.3333, "angle": -15.13 } 581 | ] 582 | }, 583 | "rear-shin": { 584 | "rotate": [ 585 | { "angle": 8 }, 586 | { "time": 0.3333, "angle": -67.54 } 587 | ] 588 | }, 589 | "front-foot": { 590 | "rotate": [ 591 | { "angle": 5.4 }, 592 | { "time": 0.3333, "angle": -16.27 } 593 | ] 594 | }, 595 | "rear-foot": { 596 | "rotate": [ 597 | { "angle": 2.67 }, 598 | { "time": 0.3333, "angle": -10.31 } 599 | ] 600 | }, 601 | "hip": { 602 | "translate": [ 603 | { "x": -75.55, "y": -78.04 }, 604 | { "time": 0.2333, "x": -36.48, "y": 12.42 }, 605 | { "time": 0.3333, "x": -36.48, "y": -3 } 606 | ] 607 | } 608 | } 609 | }, 610 | "idle": { 611 | "slots": { 612 | "front-fist": { 613 | "attachment": [ 614 | { "name": "front-fist-open" } 615 | ] 616 | } 617 | }, 618 | "bones": { 619 | "torso": { 620 | "rotate": [ 621 | { "angle": -5.62, "curve": 0.25, "c3": 0.75 }, 622 | { "time": 0.8333, "angle": -9.66, "curve": 0.25, "c3": 0.75 }, 623 | { "time": 1.6667, "angle": -5.62 } 624 | ], 625 | "translate": [ 626 | { "x": -6.5 } 627 | ] 628 | }, 629 | "front-upper-arm": { 630 | "rotate": [ 631 | { "angle": -59.85, "curve": 0.493, "c3": 0.75 }, 632 | { "time": 0.6667, "angle": -54.32, "curve": 0.324, "c2": 0.11, "c3": 0.75 }, 633 | { "time": 1.6667, "angle": -59.85 } 634 | ], 635 | "translate": [ 636 | { "x": -7.12, "y": -8.24 }, 637 | { "time": 0.6667, "x": -6.32, "y": -8.31 }, 638 | { "time": 1.6667, "x": -7.12, "y": -8.24 } 639 | ] 640 | }, 641 | "rear-upper-arm": { 642 | "rotate": [ 643 | { "angle": 62.42, "curve": 0.504, "c2": 0.02, "c3": 0.75 }, 644 | { "time": 0.7333, "angle": 43.83, "curve": 0.25, "c3": 0.75 }, 645 | { "time": 1.6667, "angle": 62.42 } 646 | ], 647 | "translate": [ 648 | { "x": -1.83, "y": -16.79 }, 649 | { "time": 0.6667, "x": 0.35, "y": -15.23 }, 650 | { "time": 1.6667, "x": -1.83, "y": -16.79 } 651 | ] 652 | }, 653 | "neck": { 654 | "rotate": [ 655 | {}, 656 | { "time": 0.6667, "angle": 2.39 }, 657 | { "time": 1.6667 } 658 | ], 659 | "translate": [ 660 | { "x": -1.89, "y": -4.76 } 661 | ] 662 | }, 663 | "front-thigh": { 664 | "rotate": [ 665 | { "angle": 0.65, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 666 | { "time": 0.6667, "angle": -4.34, "curve": 0.595, "c3": 0.653 }, 667 | { "time": 1.6667, "angle": 0.65 } 668 | ], 669 | "translate": [ 670 | { "x": -13.4, "y": 6.7 } 671 | ], 672 | "scale": [ 673 | { "x": 0.945, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 674 | { "time": 0.6667, "x": 0.917, "curve": 0.595, "c3": 0.653 }, 675 | { "time": 1.6667, "x": 0.945 } 676 | ] 677 | }, 678 | "front-shin": { 679 | "rotate": [ 680 | { "angle": -19.29 } 681 | ], 682 | "scale": [ 683 | { "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 684 | { "time": 0.6667, "x": 0.994, "curve": 0.595, "c3": 0.653 }, 685 | { "time": 1.6667 } 686 | ] 687 | }, 688 | "rear-thigh": { 689 | "rotate": [ 690 | { "angle": 30.51, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 691 | { "time": 0.6667, "angle": 40.15, "curve": 0.595, "c3": 0.653 }, 692 | { "time": 1.6667, "angle": 30.51 } 693 | ] 694 | }, 695 | "rear-shin": { 696 | "rotate": [ 697 | { "angle": -23.83, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 698 | { "time": 0.6667, "angle": -43.77, "curve": 0.595, "c3": 0.653 }, 699 | { "time": 1.6667, "angle": -23.83 } 700 | ] 701 | }, 702 | "front-foot": { 703 | "rotate": [ 704 | { "angle": 5.14, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 705 | { "time": 0.6667, "angle": 10.05, "curve": 0.595, "c3": 0.653 }, 706 | { "time": 1.6667, "angle": 5.14 } 707 | ], 708 | "scale": [ 709 | { "x": 0.755, "y": 1.31 } 710 | ] 711 | }, 712 | "rear-foot": { 713 | "rotate": [ 714 | { "angle": -7.34, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 715 | { "time": 0.6667, "angle": 3.85, "curve": 0.595, "c3": 0.653 }, 716 | { "time": 1.6667, "angle": -7.34 } 717 | ] 718 | }, 719 | "rear-bracer": { 720 | "rotate": [ 721 | { "angle": -17.16, "curve": 0.25, "c3": 0.75 }, 722 | { "time": 0.6667, "angle": 12.53, "curve": 0.25, "c3": 0.75 }, 723 | { "time": 1.6667, "angle": -17.16 } 724 | ] 725 | }, 726 | "head": { 727 | "rotate": [ 728 | { "angle": -5.51, "curve": 0.25, "c3": 0.75 }, 729 | { "time": 0.6667, "angle": -3.12, "curve": 0.25, "c3": 0.75 }, 730 | { "time": 1.6667, "angle": -5.51 } 731 | ] 732 | }, 733 | "front-bracer": { 734 | "rotate": [ 735 | { "angle": 45.47, "curve": 0.493, "c3": 0.75 }, 736 | { "time": 0.6667, "angle": 41.34, "curve": 0.321, "c2": 0.11, "c3": 0.736, "c4": 0.92 }, 737 | { "time": 1.6667, "angle": 45.47 } 738 | ] 739 | }, 740 | "gun": { 741 | "rotate": [ 742 | { "curve": 0.25, "c3": 0.75 }, 743 | { "time": 0.6667, "angle": -15.59, "curve": 0.733, "c3": 0.77, "c4": 0.99 }, 744 | { "time": 1.6667 } 745 | ] 746 | }, 747 | "front-fist": { 748 | "rotate": [ 749 | { "angle": -6.85, "curve": 0.493, "c3": 0.75 }, 750 | { "time": 0.6667, "angle": -14.63, "curve": 0.324, "c2": 0.11, "c3": 0.75 }, 751 | { "time": 1.6667, "angle": -6.85 } 752 | ], 753 | "scale": [ 754 | { "curve": 0.25, "c3": 0.75 }, 755 | { "time": 0.6667, "x": 0.689, "y": 1.101, "curve": 0.25, "c3": 0.75 }, 756 | { "time": 1.6667 } 757 | ] 758 | }, 759 | "hip": { 760 | "translate": [ 761 | { "x": -6.64, "y": -23.02, "curve": 0.236, "c2": 0.01, "c3": 0.559, "c4": 0.99 }, 762 | { "time": 0.6667, "x": 6.28, "y": -35.01, "curve": 0.595, "c3": 0.653 }, 763 | { "time": 1.6667, "x": -6.64, "y": -23.02 } 764 | ] 765 | } 766 | } 767 | }, 768 | "jump": { 769 | "slots": { 770 | "front-fist": { 771 | "attachment": [ 772 | { "name": "front-fist-open" }, 773 | { "time": 0.2, "name": "front-fist-closed" }, 774 | { "time": 0.6667, "name": "front-fist-open" } 775 | ] 776 | }, 777 | "mouth": { 778 | "attachment": [ 779 | { "name": "mouth-grind" } 780 | ] 781 | } 782 | }, 783 | "bones": { 784 | "front-thigh": { 785 | "rotate": [ 786 | { "angle": 91.53, "curve": 0.278, "c2": 0.46, "c3": 0.764 }, 787 | { "time": 0.2, "angle": -35.84, "curve": 0.761, "c3": 0.75 }, 788 | { "time": 0.4333, "angle": 127.74 }, 789 | { "time": 0.7333, "angle": 48.18, "curve": 0.227, "c2": 0.27, "c3": 0.433 }, 790 | { "time": 0.8333, "angle": 25.35 }, 791 | { "time": 0.9333, "angle": 45.38 }, 792 | { "time": 1.0333, "angle": 38.12 }, 793 | { "time": 1.1333, "angle": 25.35 }, 794 | { "time": 1.3333, "angle": 91.53 } 795 | ], 796 | "translate": [ 797 | { "x": -2.57, "y": 5.78 }, 798 | { "time": 0.4333, "x": 8.3, "y": 7.99 }, 799 | { "time": 0.7333, "x": 7.21, "y": -4 }, 800 | { "time": 1.3333, "x": -2.57, "y": 5.78 } 801 | ] 802 | }, 803 | "torso": { 804 | "rotate": [ 805 | { "angle": -42.64 }, 806 | { "time": 0.2, "angle": -5.74 }, 807 | { "time": 0.4333, "angle": -50.76 }, 808 | { "time": 0.7333, "angle": 1.9 }, 809 | { "time": 0.8333, "angle": 11.59 }, 810 | { "time": 0.9667, "angle": -1.9 }, 811 | { "time": 1.1333, "angle": 11.59 }, 812 | { "time": 1.3333, "angle": -42.64 } 813 | ] 814 | }, 815 | "rear-thigh": { 816 | "rotate": [ 817 | { "angle": -26.32 }, 818 | { "time": 0.2, "angle": 121.44 }, 819 | { "time": 0.4333, "angle": 70.55 }, 820 | { "time": 0.7333, "angle": 79.9, "curve": 0.296, "c2": 0.3, "c3": 0.59 }, 821 | { "time": 0.8333, "angle": 99.12 }, 822 | { "time": 0.9333, "angle": 74.06 }, 823 | { "time": 1.0333, "angle": 98.05 }, 824 | { "time": 1.1333, "angle": 99.12 }, 825 | { "time": 1.3333, "angle": -26.32 } 826 | ], 827 | "translate": [ 828 | { "x": -0.56, "y": -0.32 }, 829 | { "time": 0.4333, "x": -8.5, "y": 10.58 }, 830 | { "time": 0.7333, "x": -1.96, "y": -0.32 }, 831 | { "time": 1.3333, "x": -0.56, "y": -0.32 } 832 | ] 833 | }, 834 | "rear-shin": { 835 | "rotate": [ 836 | { "angle": -78.69 }, 837 | { "time": 0.4333, "angle": -55.56 }, 838 | { "time": 0.7333, "angle": -62.84 }, 839 | { "time": 0.8333, "angle": -80.75 }, 840 | { "time": 0.9333, "angle": -41.13 }, 841 | { "time": 1.0333, "angle": -77.4 }, 842 | { "time": 1.1333, "angle": -80.75 }, 843 | { "time": 1.3333, "angle": -78.69 } 844 | ] 845 | }, 846 | "front-upper-arm": { 847 | "rotate": [ 848 | { "angle": -22.62 }, 849 | { "time": 0.2, "angle": -246.69 }, 850 | { "time": 0.6, "angle": 11.28, "curve": 0.246, "c3": 0.633, "c4": 0.54 }, 851 | { "time": 0.7333, "angle": -57.46, "curve": 0.38, "c2": 0.53, "c3": 0.745 }, 852 | { "time": 0.8667, "angle": -112.6 }, 853 | { "time": 0.9333, "angle": -102.17 }, 854 | { "time": 1.0333, "angle": -108.61 }, 855 | { "time": 1.1333, "angle": -112.6 }, 856 | { "time": 1.3333, "angle": -22.62 } 857 | ], 858 | "translate": [ 859 | { "x": 6.08, "y": 7.15 }, 860 | { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, 861 | { "time": 0.7333, "x": 7.23, "y": -13.13 }, 862 | { "time": 1.3333, "x": 6.08, "y": 7.15 } 863 | ] 864 | }, 865 | "front-bracer": { 866 | "rotate": [ 867 | { "angle": 66.47 }, 868 | { "time": 0.2, "angle": 42.4 }, 869 | { "time": 0.4333, "angle": 26.06 }, 870 | { "time": 0.7333, "angle": 13.28 }, 871 | { "time": 0.8667, "angle": -28.65 }, 872 | { "time": 0.9333, "angle": -22.31 }, 873 | { "time": 1.0333, "angle": -35.39 }, 874 | { "time": 1.1333, "angle": -28.65 }, 875 | { "time": 1.3333, "angle": 66.47 } 876 | ] 877 | }, 878 | "front-fist": { 879 | "rotate": [ 880 | { "angle": -28.43 }, 881 | { "time": 0.4333, "angle": -45.61 }, 882 | { "time": 0.7333, "angle": -53.66 }, 883 | { "time": 0.8667, "angle": 7.56 }, 884 | { "time": 0.9333, "angle": 31.16 }, 885 | { "time": 1.0333, "angle": -32.59 }, 886 | { "time": 1.1333, "angle": 7.56 }, 887 | { "time": 1.3333, "angle": -28.43 } 888 | ] 889 | }, 890 | "rear-upper-arm": { 891 | "rotate": [ 892 | { "angle": 39.69 }, 893 | { "time": 0.2, "angle": 276.58 }, 894 | { "time": 0.3, "angle": 17.74 }, 895 | { "time": 0.4333, "angle": 83.38 }, 896 | { "time": 0.6, "angle": -4.72, "curve": 0.246, "c3": 0.633, "c4": 0.54 }, 897 | { "time": 0.7333, "angle": -69.63, "curve": 0.343, "c2": 0.36, "c3": 0.68, "c4": 0.71 }, 898 | { "time": 0.7667, "angle": 321.47, "curve": 0.334, "c2": 0.33, "c3": 0.667, "c4": 0.67 }, 899 | { "time": 0.8, "angle": 33.71, "curve": 0.359, "c2": 0.64, "c3": 0.694 }, 900 | { "time": 0.8667, "angle": 34.56 }, 901 | { "time": 1.0333, "angle": 71.97 }, 902 | { "time": 1.1333, "angle": 34.56 }, 903 | { "time": 1.3333, "angle": 39.69 } 904 | ], 905 | "translate": [ 906 | { "x": -3.1, "y": -4.87 }, 907 | { "time": 0.2, "x": 23.33, "y": 49.07 }, 908 | { "time": 0.4333, "x": 20.78, "y": 40.21 }, 909 | { "time": 1.3333, "x": -3.1, "y": -4.87 } 910 | ] 911 | }, 912 | "rear-bracer": { 913 | "rotate": [ 914 | { "angle": 29.67 }, 915 | { "time": 0.2, "angle": 45.07 }, 916 | { "time": 0.4333, "angle": -4.35 }, 917 | { "time": 0.7667, "angle": 61.69 }, 918 | { "time": 0.8, "angle": 82.6 }, 919 | { "time": 0.8667, "angle": 80.06 }, 920 | { "time": 1.0333, "angle": 57.56 }, 921 | { "time": 1.1333, "angle": 80.06 }, 922 | { "time": 1.3333, "angle": 29.67 } 923 | ] 924 | }, 925 | "neck": { 926 | "rotate": [ 927 | { "angle": 24.91 }, 928 | { "time": 0.2, "angle": 16.32 }, 929 | { "time": 0.4333, "angle": 7.45 }, 930 | { "time": 0.7333, "angle": -20.35 }, 931 | { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, 932 | { "time": 1.1333, "angle": -0.69 }, 933 | { "time": 1.3333, "angle": 24.91 } 934 | ] 935 | }, 936 | "head": { 937 | "rotate": [ 938 | { "angle": 24.92 }, 939 | { "time": 0.2, "angle": 10.36 }, 940 | { "time": 0.4333, "angle": 28.65 }, 941 | { "time": 0.7333, "angle": -2.66 }, 942 | { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, 943 | { "time": 1.1333, "angle": -28.94 }, 944 | { "time": 1.3333, "angle": 24.92 } 945 | ] 946 | }, 947 | "front-shin": { 948 | "rotate": [ 949 | { "angle": -90.63, "curve": 0.416, "c2": 0.55, "c3": 0.743 }, 950 | { "time": 0.2, "angle": -10.52, "curve": 0.644, "c2": 0.01, "c3": 0.75 }, 951 | { "time": 0.4333, "angle": -127.72 }, 952 | { "time": 0.7333, "angle": -19.92 }, 953 | { "time": 0.8333, "angle": -5.17 }, 954 | { "time": 0.9333, "angle": -35.06 }, 955 | { "time": 1.0333, "angle": -43.97 }, 956 | { "time": 1.1333, "angle": -5.17 }, 957 | { "time": 1.3333, "angle": -90.63 } 958 | ] 959 | }, 960 | "front-foot": { 961 | "rotate": [ 962 | { "angle": -0.8 }, 963 | { "time": 0.0333, "angle": 16.28 }, 964 | { "time": 0.0667, "angle": 23.52 }, 965 | { "time": 0.1, "angle": 21.02 }, 966 | { "time": 0.1333, "angle": 10.93 }, 967 | { "time": 0.2, "angle": -38.46 }, 968 | { "time": 0.4333, "angle": 6.62 }, 969 | { "time": 0.7333, "angle": -11.52 }, 970 | { "time": 1.0333, "angle": -22.92 }, 971 | { "time": 1.3333, "angle": -0.8 } 972 | ] 973 | }, 974 | "rear-foot": { 975 | "rotate": [ 976 | { "angle": -12.78 }, 977 | { "time": 0.2, "angle": 17.06 }, 978 | { "time": 0.4333, "angle": 19.45 }, 979 | { "time": 0.7333, "angle": 2.67 }, 980 | { "time": 1.0333, "angle": -28.5 }, 981 | { "time": 1.3333, "angle": -12.78 } 982 | ] 983 | }, 984 | "gun": { 985 | "rotate": [ 986 | { "angle": 6.18 }, 987 | { "time": 0.2, "angle": 30.81 }, 988 | { "time": 0.4333, "angle": 13.26 }, 989 | { "time": 0.7333, "angle": 14.98 }, 990 | { "time": 0.7667, "angle": 25.65 }, 991 | { "time": 0.8, "angle": 20.62 }, 992 | { "time": 0.8667, "angle": 64.53 }, 993 | { "time": 1.0333, "angle": 8.6 }, 994 | { "time": 1.1333, "angle": 64.53 }, 995 | { "time": 1.3333, "angle": 6.18 } 996 | ] 997 | }, 998 | "hip": { 999 | "translate": [ 1000 | { "x": -34.52, "y": -78.63, "curve": 0.233, "c2": 1.01, "c3": 0.75 }, 1001 | { 1002 | "time": 0.2, 1003 | "x": -34.52, 1004 | "y": 182.51, 1005 | "curve": 0.232, 1006 | "c2": 0.48, 1007 | "c3": 0.599, 1008 | "c4": 0.79 1009 | }, 1010 | { 1011 | "time": 0.7667, 1012 | "x": -34.52, 1013 | "y": 596.22, 1014 | "curve": 0.33, 1015 | "c2": 0.17, 1016 | "c3": 0.661, 1017 | "c4": 0.22 1018 | }, 1019 | { "time": 1.1333, "x": -34.52, "y": 2.5 }, 1020 | { "time": 1.3333, "x": -34.52, "y": -78.63 } 1021 | ] 1022 | } 1023 | } 1024 | }, 1025 | "run": { 1026 | "slots": { 1027 | "mouth": { 1028 | "attachment": [ 1029 | { "name": "mouth-grind" } 1030 | ] 1031 | } 1032 | }, 1033 | "bones": { 1034 | "front-thigh": { 1035 | "rotate": [ 1036 | { "angle": 42.05, "curve": 0.196, "c2": 0.86, "c3": 0.75 }, 1037 | { "time": 0.0667, "angle": 46.08 }, 1038 | { "time": 0.1333, "angle": -20.29 }, 1039 | { "time": 0.2, "angle": -27.24 }, 1040 | { "time": 0.2667, "angle": -47.17 }, 1041 | { "time": 0.3333, "angle": -39.79 }, 1042 | { "time": 0.4, "angle": -25.86 }, 1043 | { "time": 0.4667, "angle": 14.35 }, 1044 | { "time": 0.5333, "angle": 55.63 }, 1045 | { "time": 0.6, "angle": 69.65 }, 1046 | { "time": 0.6667, "angle": 86.41 }, 1047 | { "time": 0.7333, "angle": 65.88 }, 1048 | { "time": 0.8, "angle": 42.05 } 1049 | ], 1050 | "translate": [ 1051 | {}, 1052 | { "time": 0.0333, "x": -5.8, "y": 11.16 }, 1053 | { "time": 0.0667, "x": -5.13, "y": 11.55 }, 1054 | { "time": 0.1333, "x": -7.7, "y": 8.99 }, 1055 | { "time": 0.5333, "x": -1.26, "y": 3.83 }, 1056 | { "time": 0.8 } 1057 | ] 1058 | }, 1059 | "torso": { 1060 | "rotate": [ 1061 | { "angle": -39.71 }, 1062 | { "time": 0.2, "angle": -57.29 }, 1063 | { "time": 0.4, "angle": -39.71 }, 1064 | { "time": 0.6, "angle": -57.29 }, 1065 | { "time": 0.8, "angle": -39.71 } 1066 | ] 1067 | }, 1068 | "rear-thigh": { 1069 | "rotate": [ 1070 | { "angle": -56.59 }, 1071 | { "time": 0.0667, "angle": -21.57 }, 1072 | { "time": 0.1333, "angle": 27.95 }, 1073 | { "time": 0.2, "angle": 42.43 }, 1074 | { "time": 0.2667, "angle": 62.37 }, 1075 | { "time": 0.3333, "angle": 45.43 }, 1076 | { "time": 0.4, "angle": 15.67 }, 1077 | { "time": 0.4667, "angle": 28.22 }, 1078 | { "time": 0.5333, "angle": -38.62 }, 1079 | { "time": 0.6, "angle": -53.27 }, 1080 | { "time": 0.6667, "angle": -79.31 }, 1081 | { "time": 0.7333, "angle": -86.47 }, 1082 | { "time": 0.8, "angle": -56.59 } 1083 | ], 1084 | "translate": [ 1085 | {}, 1086 | { "time": 0.4, "x": -6.76, "y": -3.86 }, 1087 | { "time": 0.4333, "x": -15.85, "y": 7.28 }, 1088 | { "time": 0.4667, "x": -13.05, "y": 4.05 }, 1089 | { "time": 0.5, "x": -10.25, "y": 7.11 }, 1090 | { "time": 0.5333, "x": -9.02, "y": -5.15 }, 1091 | { "time": 0.6667, "x": -23.18, "y": -2.58 }, 1092 | { "time": 0.8 } 1093 | ] 1094 | }, 1095 | "rear-shin": { 1096 | "rotate": [ 1097 | { "angle": -74 }, 1098 | { "time": 0.0667, "angle": -83.38 }, 1099 | { "time": 0.1333, "angle": -106.7 }, 1100 | { "time": 0.2, "angle": -66.01 }, 1101 | { "time": 0.2667, "angle": -55.22 }, 1102 | { "time": 0.3333, "angle": -24.8 }, 1103 | { "time": 0.4, "angle": 18.44, "curve": 0.25, "c3": 0.75 }, 1104 | { "time": 0.4667, "angle": -56.65 }, 1105 | { "time": 0.5333, "angle": -11.95, "curve": 0.25, "c3": 0.75 }, 1106 | { "time": 0.6667, "angle": -41.27 }, 1107 | { "time": 0.7333, "angle": -43.61 }, 1108 | { "time": 0.8, "angle": -74 } 1109 | ] 1110 | }, 1111 | "front-upper-arm": { 1112 | "rotate": [ 1113 | { "angle": -89.37 }, 1114 | { "time": 0.0667, "angle": -95.67 }, 1115 | { "time": 0.1333, "angle": -22.01 }, 1116 | { "time": 0.2, "angle": -316.04 }, 1117 | { "time": 0.2667, "angle": -274.94 }, 1118 | { "time": 0.3333, "angle": -273.74 }, 1119 | { "time": 0.4, "angle": -272.09 }, 1120 | { "time": 0.4667, "angle": -264.9 }, 1121 | { "time": 0.5333, "angle": -320.1 }, 1122 | { "time": 0.6, "angle": -50.84 }, 1123 | { "time": 0.6667, "angle": -81.73 }, 1124 | { "time": 0.7333, "angle": -83.92 }, 1125 | { "time": 0.8, "angle": -89.37 } 1126 | ], 1127 | "translate": [ 1128 | { "x": 6.25, "y": 10.05 }, 1129 | { "time": 0.2667, "x": 4.96, "y": -13.13 }, 1130 | { "time": 0.6, "x": -2.43, "y": 1.95 }, 1131 | { "time": 0.8, "x": 6.25, "y": 10.05 } 1132 | ] 1133 | }, 1134 | "front-bracer": { 1135 | "rotate": [ 1136 | { "angle": 33.44 }, 1137 | { "time": 0.0667, "angle": 20.54 }, 1138 | { "time": 0.1333, "angle": 15.26 }, 1139 | { "time": 0.2, "angle": 19.29 }, 1140 | { "time": 0.2667, "angle": 22.62 }, 1141 | { "time": 0.3333, "angle": 37.29 }, 1142 | { "time": 0.4, "angle": 41.53 }, 1143 | { "time": 0.4667, "angle": 31.74 }, 1144 | { "time": 0.5333, "angle": 67.45 }, 1145 | { "time": 0.6667, "angle": 39.77 }, 1146 | { "time": 0.7333, "angle": 30.95 }, 1147 | { "time": 0.8, "angle": 33.44 } 1148 | ] 1149 | }, 1150 | "front-fist": { 1151 | "rotate": [ 1152 | { "angle": -19.76 }, 1153 | { "time": 0.0667, "angle": -37.11 }, 1154 | { "time": 0.1333, "angle": -50.8 }, 1155 | { "time": 0.2667, "angle": -12.69 }, 1156 | { "time": 0.3333, "angle": 3.01 }, 1157 | { "time": 0.4333, "angle": 12.06 }, 1158 | { "time": 0.5333, "angle": 13.26 }, 1159 | { "time": 0.8, "angle": -19.76 } 1160 | ] 1161 | }, 1162 | "rear-upper-arm": { 1163 | "rotate": [ 1164 | { "angle": 68.68 }, 1165 | { "time": 0.0667, "angle": 73.89 }, 1166 | { "time": 0.1333, "angle": -9.64 }, 1167 | { "time": 0.2, "angle": 284.28 }, 1168 | { "time": 0.2667, "angle": 283.29 }, 1169 | { "time": 0.3333, "angle": 278.29 }, 1170 | { "time": 0.4, "angle": 271.03 }, 1171 | { "time": 0.4667, "angle": 263.2 }, 1172 | { "time": 0.5333, "angle": 314.26 }, 1173 | { "time": 0.6, "angle": 16.83 }, 1174 | { "time": 0.6667, "angle": 70.35 }, 1175 | { "time": 0.7333, "angle": 73.54 }, 1176 | { "time": 0.8, "angle": 68.68 } 1177 | ], 1178 | "translate": [ 1179 | { "x": -2.57, "y": -8.89 }, 1180 | { "time": 0.1333, "x": -4.68, "y": 7.21 }, 1181 | { "time": 0.2, "x": 21.73, "y": 51.18 }, 1182 | { "time": 0.6, "x": 4.33, "y": 2.06 }, 1183 | { "time": 0.8, "x": -2.57, "y": -8.89 } 1184 | ] 1185 | }, 1186 | "rear-bracer": { 1187 | "rotate": [ 1188 | { "angle": 31.05 }, 1189 | { "time": 0.0667, "angle": 28.28 }, 1190 | { "time": 0.1333, "angle": 49.36 }, 1191 | { "time": 0.2, "angle": 59.37 }, 1192 | { "time": 0.2667, "angle": 8.56 }, 1193 | { "time": 0.3333, "angle": 9.39 }, 1194 | { "time": 0.4, "angle": 11.51 }, 1195 | { "time": 0.4667, "angle": 7.22 }, 1196 | { "time": 0.5333, "angle": -18.44 }, 1197 | { "time": 0.6, "angle": 11.45 }, 1198 | { "time": 0.6667, "angle": 9.99 }, 1199 | { "time": 0.7333, "angle": 8.29 }, 1200 | { "time": 0.8, "angle": 31.05 } 1201 | ] 1202 | }, 1203 | "neck": { 1204 | "rotate": [ 1205 | { "angle": 11.03 }, 1206 | { "time": 0.2, "angle": 13.59 }, 1207 | { "time": 0.4, "angle": 11.03 }, 1208 | { "time": 0.6, "angle": 13.59 }, 1209 | { "time": 0.8, "angle": 11.03 } 1210 | ] 1211 | }, 1212 | "head": { 1213 | "rotate": [ 1214 | { "angle": 11.03 }, 1215 | { "time": 0.1, "angle": 12.35 }, 1216 | { "time": 0.2, "angle": 25.55 }, 1217 | { "time": 0.4, "angle": 11.03 }, 1218 | { "time": 0.5, "angle": 12.35 }, 1219 | { "time": 0.6, "angle": 25.55 }, 1220 | { "time": 0.8, "angle": 11.03 } 1221 | ] 1222 | }, 1223 | "front-shin": { 1224 | "rotate": [ 1225 | { "curve": 0.481, "c2": 0.01, "c3": 0.75 }, 1226 | { "time": 0.0667, "angle": -64.42 }, 1227 | { "time": 0.1333, "angle": -20.6, "curve": 0.25, "c3": 0.75 }, 1228 | { "time": 0.2667, "angle": -62.52 }, 1229 | { "time": 0.3333, "angle": -79.75 }, 1230 | { "time": 0.4, "angle": -78.28 }, 1231 | { "time": 0.4667, "angle": -118.96, "curve": 0.93, "c2": 0.01, "c3": 0.953, "c4": 0.95 }, 1232 | { "time": 0.6, "angle": -88.96 }, 1233 | { "time": 0.6667, "angle": -79.1 }, 1234 | { "time": 0.7333, "angle": -47.78 }, 1235 | { "time": 0.8 } 1236 | ] 1237 | }, 1238 | "front-foot": { 1239 | "rotate": [ 1240 | {}, 1241 | { "time": 0.0333, "angle": -21.13, "curve": 0.121, "c2": 0.24, "c3": 0.75 }, 1242 | { "time": 0.0667, "angle": 17.64 }, 1243 | { "time": 0.1, "angle": 29.93 }, 1244 | { "time": 0.1333, "angle": 16.45 }, 1245 | { "time": 0.2, "angle": -29.23 }, 1246 | { "time": 0.2667, "angle": -1.62 }, 1247 | { "time": 0.3333, "angle": -10.23 }, 1248 | { "time": 0.4667, "angle": -15.99 }, 1249 | { "time": 0.6, "angle": 9.03 }, 1250 | { "time": 0.7333, "angle": 17.33 }, 1251 | { "time": 0.8 } 1252 | ] 1253 | }, 1254 | "rear-foot": { 1255 | "rotate": [ 1256 | {}, 1257 | { "time": 0.0667, "angle": -12.04 }, 1258 | { "time": 0.1333, "angle": -0.87 }, 1259 | { "time": 0.2, "angle": 25.81 }, 1260 | { "time": 0.2667, "angle": 4.71 }, 1261 | { "time": 0.4, "angle": 18.09, "curve": 0.281, "c2": 0.74, "c3": 0.75 }, 1262 | { "time": 0.4333, "angle": -1.71 }, 1263 | { "time": 0.4667, "angle": 27.13 }, 1264 | { "time": 0.5, "angle": 38.84 }, 1265 | { "time": 0.5333, "angle": 30.77 }, 1266 | { "time": 0.5667, "angle": -20.49 }, 1267 | { "time": 0.6, "angle": -30.81 }, 1268 | { "time": 0.6667, "angle": -1.32 }, 1269 | { "time": 0.8 } 1270 | ] 1271 | }, 1272 | "gun": { 1273 | "rotate": [ 1274 | {}, 1275 | { "time": 0.1333, "angle": 24.73 }, 1276 | { "time": 0.5, "angle": -11.88 }, 1277 | { "time": 0.8 } 1278 | ] 1279 | }, 1280 | "hip": { 1281 | "translate": [ 1282 | { "x": -62.48, "y": -23.11 }, 1283 | { "time": 0.0667, "x": -62.48, "y": -38.51, "curve": 0.244, "c2": 0.04, "c3": 0.75 }, 1284 | { "time": 0.2667, "x": -62.48, "y": 22.29, "curve": 0.17, "c2": 0.53, "c3": 0.75 }, 1285 | { "time": 0.4, "x": -62.48, "y": -23.11 }, 1286 | { "time": 0.4333, "x": -62.48, "y": -24.59 }, 1287 | { "time": 0.4667, "x": -62.48, "y": -43.29, "curve": 0.25, "c3": 0.75 }, 1288 | { "time": 0.6667, "x": -62.48, "y": 22.29 }, 1289 | { "time": 0.8, "x": -62.48, "y": -23.11 } 1290 | ] 1291 | } 1292 | }, 1293 | "events": [ 1294 | { "name": "footstep" }, 1295 | { "time": 0.4333, "name": "footstep", "int": 1 } 1296 | ] 1297 | }, 1298 | "shoot": { 1299 | "slots": { 1300 | "muzzle": { 1301 | "color": [ 1302 | { "time": 0.3667, "color": "ffffff00" } 1303 | ], 1304 | "attachment": [ 1305 | { "time": 0.1333, "name": "muzzle01" }, 1306 | { "time": 0.2, "name": "muzzle02" }, 1307 | { "time": 0.2667, "name": "muzzle03" }, 1308 | { "time": 0.3333, "name": "muzzle04" }, 1309 | { "time": 0.3667, "name": null } 1310 | ] 1311 | } 1312 | }, 1313 | "bones": { 1314 | "gun-tip": { 1315 | "translate": [ 1316 | { "time": 0.1333 }, 1317 | { "time": 0.2333, "x": 32.31, "y": 2.94 } 1318 | ] 1319 | }, 1320 | "gun": { 1321 | "rotate": [ 1322 | { "angle": 1.91 } 1323 | ], 1324 | "translate": [ 1325 | { "x": 7.95, "y": 5.85, "curve": 0, "c2": 0.3, "c3": 0.679 }, 1326 | { "time": 0.3, "x": -9.3, "y": -1.41 }, 1327 | { "time": 0.4 } 1328 | ] 1329 | }, 1330 | "rear-bracer": { 1331 | "rotate": [ 1332 | { "angle": -30.47 } 1333 | ], 1334 | "translate": [ 1335 | { "curve": 0, "c2": 0.3, "c3": 0.679 }, 1336 | { "time": 0.3, "x": -6, "y": -3.72 }, 1337 | { "time": 0.4 } 1338 | ] 1339 | }, 1340 | "rear-upper-arm": { 1341 | "rotate": [ 1342 | { "angle": 62.31 } 1343 | ], 1344 | "translate": [ 1345 | { "curve": 0, "c2": 0.3, "c3": 0.679 }, 1346 | { "time": 0.3, "x": 2.81, "y": 11.42 }, 1347 | { "time": 0.4 } 1348 | ] 1349 | } 1350 | } 1351 | }, 1352 | "walk": { 1353 | "bones": { 1354 | "front-thigh": { 1355 | "rotate": [ 1356 | { "angle": 15.79 }, 1357 | { "time": 0.1, "angle": 27.4 }, 1358 | { "time": 0.2, "angle": -7.95 }, 1359 | { "time": 0.3, "angle": -16.95 }, 1360 | { "time": 0.4, "angle": -28.62 }, 1361 | { "time": 0.5, "angle": -19.31 }, 1362 | { "time": 0.6, "angle": -3.09 }, 1363 | { "time": 0.7, "angle": 29.52 }, 1364 | { "time": 0.8, "angle": 15.79 } 1365 | ], 1366 | "translate": [ 1367 | {}, 1368 | { "time": 0.4, "x": -1.19, "y": 0.55 }, 1369 | { "time": 0.5, "x": 0.12, "y": 0.41 }, 1370 | { "time": 0.6, "x": 9.49, "y": 0.27 }, 1371 | { "time": 0.8 } 1372 | ] 1373 | }, 1374 | "front-shin": { 1375 | "rotate": [ 1376 | { "angle": 5.13 }, 1377 | { "time": 0.1, "angle": -20.88 }, 1378 | { "time": 0.2, "angle": 13.37 }, 1379 | { "time": 0.3, "angle": 15.99 }, 1380 | { "time": 0.4, "angle": 5.95 }, 1381 | { "time": 0.5, "angle": -26.77 }, 1382 | { "time": 0.7, "angle": -55.44 }, 1383 | { "time": 0.8, "angle": 5.13 } 1384 | ] 1385 | }, 1386 | "rear-thigh": { 1387 | "rotate": [ 1388 | { "angle": -34.38 }, 1389 | { "time": 0.1, "angle": -30.33 }, 1390 | { "time": 0.2, "angle": -37.22 }, 1391 | { "time": 0.3, "angle": 20.73 }, 1392 | { "time": 0.4, "angle": 8.69 }, 1393 | { "time": 0.5, "angle": 12.16 }, 1394 | { "time": 0.6, "angle": -24.62 }, 1395 | { "time": 0.7, "angle": -27.27 }, 1396 | { "time": 0.8, "angle": -34.38 } 1397 | ], 1398 | "translate": [ 1399 | {}, 1400 | { "time": 0.4, "x": 4.09, "y": -9.53 }, 1401 | { "time": 0.5 }, 1402 | { "time": 0.7, "x": -21.14, "y": -9.61 }, 1403 | { "time": 0.8 } 1404 | ] 1405 | }, 1406 | "rear-shin": { 1407 | "rotate": [ 1408 | { "angle": 14.26 }, 1409 | { "time": 0.1, "angle": -17.3 }, 1410 | { "time": 0.2, "angle": -12.68 }, 1411 | { "time": 0.3, "angle": -58.9 }, 1412 | { "time": 0.4, "angle": 15.95 }, 1413 | { "time": 0.5, "angle": -9.01 }, 1414 | { "time": 0.6, "angle": 26.07 }, 1415 | { "time": 0.7, "angle": 21.86 }, 1416 | { "time": 0.8, "angle": 14.26 } 1417 | ], 1418 | "scale": [ 1419 | {}, 1420 | { "time": 0.1, "x": 0.952 }, 1421 | { "time": 0.5, "x": 0.976 }, 1422 | { "time": 0.8 } 1423 | ] 1424 | }, 1425 | "rear-foot": { 1426 | "rotate": [ 1427 | { "angle": 10.13 }, 1428 | { "time": 0.1, "angle": 12.28 }, 1429 | { "time": 0.2, "angle": -2.95 }, 1430 | { "time": 0.3, "angle": 6.29 }, 1431 | { "time": 0.4, "angle": 13.46 }, 1432 | { "time": 0.5, "angle": -3.57 }, 1433 | { "time": 0.6, "angle": -0.97 }, 1434 | { "time": 0.7, "angle": 2.98 }, 1435 | { "time": 0.8, "angle": 10.13 } 1436 | ] 1437 | }, 1438 | "front-upper-arm": { 1439 | "rotate": [ 1440 | { "angle": -23.74 }, 1441 | { "time": 0.4, "angle": -320.57 }, 1442 | { "time": 0.8, "angle": -23.74 } 1443 | ] 1444 | }, 1445 | "rear-upper-arm": { 1446 | "rotate": [ 1447 | { "angle": 11.63 }, 1448 | { "time": 0.1, "angle": 19.37 }, 1449 | { "time": 0.4, "angle": 345.27 }, 1450 | { "time": 0.5, "angle": 343.44 }, 1451 | { "time": 0.8, "angle": 11.63 } 1452 | ] 1453 | }, 1454 | "torso": { 1455 | "rotate": [ 1456 | { "angle": -12.11 }, 1457 | { "time": 0.1667, "angle": -17.16 }, 1458 | { "time": 0.4, "angle": -12.11 }, 1459 | { "time": 0.5667, "angle": -15.81 }, 1460 | { "time": 0.8, "angle": -12.11 } 1461 | ] 1462 | }, 1463 | "neck": { 1464 | "rotate": [ 1465 | { "angle": 1.41 }, 1466 | { "time": 0.2333, "angle": -3.04 }, 1467 | { "time": 0.4, "angle": 1.41 }, 1468 | { "time": 0.6333, "angle": -3.04 }, 1469 | { "time": 0.8, "angle": 1.41 } 1470 | ] 1471 | }, 1472 | "head": { 1473 | "rotate": [ 1474 | { "angle": 6.98 }, 1475 | { "time": 0.1667, "angle": 8.02 }, 1476 | { "time": 0.2667, "angle": 12.65 }, 1477 | { "time": 0.4, "angle": 6.98 }, 1478 | { "time": 0.5667, "angle": 8.02 }, 1479 | { "time": 0.6667, "angle": 12.65 }, 1480 | { "time": 0.8, "angle": 6.98 } 1481 | ] 1482 | }, 1483 | "front-bracer": { 1484 | "rotate": [ 1485 | {}, 1486 | { "time": 0.4, "angle": 20.6 }, 1487 | { "time": 0.8 } 1488 | ] 1489 | }, 1490 | "front-foot": { 1491 | "rotate": [ 1492 | { "angle": 12.49 }, 1493 | { "time": 0.1, "angle": -6.36 }, 1494 | { "time": 0.2, "angle": -6.18 }, 1495 | { "time": 0.3, "angle": -0.76 }, 1496 | { "time": 0.3333, "angle": 3.89 }, 1497 | { "time": 0.4, "angle": 10.22 }, 1498 | { "time": 0.5, "angle": 11.44 }, 1499 | { "time": 0.6, "angle": -0.34 }, 1500 | { "time": 0.7, "angle": 0.15 }, 1501 | { "time": 0.8, "angle": 12.49 } 1502 | ] 1503 | }, 1504 | "rear-bracer": { 1505 | "rotate": [ 1506 | { "angle": 3.59 }, 1507 | { "time": 0.1, "angle": 5.51 }, 1508 | { "time": 0.4, "angle": -22.78 }, 1509 | { "time": 0.5, "angle": -9.65 }, 1510 | { "time": 0.8, "angle": 3.59 } 1511 | ] 1512 | }, 1513 | "front-fist": { 1514 | "rotate": [ 1515 | { "angle": -15.22 }, 1516 | { "time": 0.1, "angle": -51.4 }, 1517 | { "time": 0.4, "angle": -39.4 }, 1518 | { "time": 0.5, "angle": 19.26 }, 1519 | { "time": 0.8, "angle": -15.22 } 1520 | ] 1521 | }, 1522 | "gun": { 1523 | "rotate": [ 1524 | { "angle": -24.07, "curve": 0.25, "c3": 0.75 }, 1525 | { "time": 0.1, "angle": -10.95, "curve": 0.381, "c2": 0.55, "c3": 0.742 }, 1526 | { "time": 0.4, "angle": 25.34, "curve": 0.25, "c3": 0.75 }, 1527 | { "time": 0.6667, "angle": -27.48, "curve": 0.25, "c3": 0.75 }, 1528 | { "time": 0.8, "angle": -24.07 } 1529 | ] 1530 | }, 1531 | "hip": { 1532 | "translate": [ 1533 | { "x": -23.93, "y": 3.22, "curve": 0.519, "c2": 0.04, "c3": 0.807, "c4": 0.61 }, 1534 | { "time": 0.1, "x": -23.93, "y": -3.36 }, 1535 | { "time": 0.1333, "x": -23.93, "y": 1.44 }, 1536 | { "time": 0.1667, "x": -23.93, "y": 2.88 }, 1537 | { "time": 0.2, "x": -23.93, "y": 0.99 }, 1538 | { "time": 0.3, "x": -23.93, "y": -3.5, "curve": 0.25, "c3": 0.75 }, 1539 | { "time": 0.4, "x": -23.93, "y": -2.5, "curve": 0.693, "c2": 0.02, "c3": 0.75 }, 1540 | { "time": 0.5, "x": -23.93, "y": -10.32, "curve": 0.236, "c2": 0.78, "c3": 0.75 }, 1541 | { 1542 | "time": 0.6, 1543 | "x": -23.93, 1544 | "y": 4.36, 1545 | "curve": 0.287, 1546 | "c2": 0.38, 1547 | "c3": 0.719, 1548 | "c4": 0.77 1549 | }, 1550 | { "time": 0.7, "x": -23.93, "y": 10.35, "curve": 0.616, "c3": 0.75 }, 1551 | { "time": 0.8, "x": -23.93, "y": 3.22 } 1552 | ] 1553 | } 1554 | } 1555 | } 1556 | } 1557 | } --------------------------------------------------------------------------------