├── .gitignore ├── README.md ├── assets ├── resources.meta ├── resources │ ├── scene.meta │ ├── scene │ │ ├── SceneRender.fire │ │ ├── SceneRender.fire.meta │ │ ├── SceneShader.fire │ │ └── SceneShader.fire.meta │ ├── texture.meta │ └── texture │ │ ├── ball.png │ │ ├── ball.png.meta │ │ ├── singleColor.png │ │ └── singleColor.png.meta ├── script.meta ├── script │ ├── app.meta │ ├── app │ │ ├── components.meta │ │ └── components │ │ │ ├── MetaballsShader.ts │ │ │ ├── MetaballsShader.ts.meta │ │ │ ├── PhysicsBounds.ts │ │ │ ├── PhysicsBounds.ts.meta │ │ │ ├── RenderMask.ts │ │ │ ├── RenderMask.ts.meta │ │ │ ├── SwitchScene.ts │ │ │ └── SwitchScene.ts.meta │ ├── base.meta │ └── base │ │ ├── ShaderSprite.ts │ │ ├── ShaderSprite.ts.meta │ │ ├── extension.meta │ │ └── extension │ │ ├── shader.meta │ │ └── shader │ │ ├── CustomMaterial.ts │ │ ├── CustomMaterial.ts.meta │ │ ├── Shader.ts │ │ ├── Shader.ts.meta │ │ ├── ShaderLib.ts │ │ ├── ShaderLib.ts.meta │ │ ├── ShaderManager.ts │ │ ├── ShaderManager.ts.meta │ │ ├── SingleFactory.ts │ │ ├── SingleFactory.ts.meta │ │ ├── SpriteHook.ts │ │ ├── SpriteHook.ts.meta │ │ ├── shaders.meta │ │ └── shaders │ │ ├── CustomMask.ts │ │ ├── CustomMask.ts.meta │ │ ├── Default.ts │ │ ├── Default.ts.meta │ │ ├── MetaBalls.ts │ │ ├── MetaBalls.ts.meta │ │ ├── index.ts │ │ └── index.ts.meta ├── settings.meta └── settings │ ├── physics-settings.js │ └── physics-settings.js.meta ├── creator.d.ts ├── jsconfig.json ├── project.json ├── screen capture └── Test.gif ├── settings ├── builder.json ├── builder.panel.json └── project.json ├── template-banner.png ├── template.json └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | #///////////////////////////////////////////////////////////////////////////// 2 | # Fireball Projects 3 | #///////////////////////////////////////////////////////////////////////////// 4 | 5 | library/ 6 | temp/ 7 | local/ 8 | build/ 9 | 10 | #///////////////////////////////////////////////////////////////////////////// 11 | # Logs and databases 12 | #///////////////////////////////////////////////////////////////////////////// 13 | 14 | *.log 15 | *.sql 16 | *.sqlite 17 | 18 | #///////////////////////////////////////////////////////////////////////////// 19 | # files for debugger 20 | #///////////////////////////////////////////////////////////////////////////// 21 | 22 | *.sln 23 | *.csproj 24 | *.pidb 25 | *.unityproj 26 | *.suo 27 | 28 | #///////////////////////////////////////////////////////////////////////////// 29 | # OS generated files 30 | #///////////////////////////////////////////////////////////////////////////// 31 | 32 | .DS_Store 33 | ehthumbs.db 34 | Thumbs.db 35 | 36 | #///////////////////////////////////////////////////////////////////////////// 37 | # exvim files 38 | #///////////////////////////////////////////////////////////////////////////// 39 | 40 | *UnityVS.meta 41 | *.err 42 | *.err.meta 43 | *.exvim 44 | *.exvim.meta 45 | *.vimentry 46 | *.vimentry.meta 47 | *.vimproject 48 | *.vimproject.meta 49 | .vimfiles.*/ 50 | .exvim.*/ 51 | quick_gen_project_*_autogen.bat 52 | quick_gen_project_*_autogen.bat.meta 53 | quick_gen_project_*_autogen.sh 54 | quick_gen_project_*_autogen.sh.meta 55 | .exvim.app 56 | 57 | #///////////////////////////////////////////////////////////////////////////// 58 | # webstorm files 59 | #///////////////////////////////////////////////////////////////////////////// 60 | 61 | .idea/ 62 | 63 | #////////////////////////// 64 | # VS Code 65 | #////////////////////////// 66 | 67 | # .vscode/ 68 | # *.meta 69 | /assets-remote/ 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ccc-fluid-demo 2 | 3 | 基于CocosCreator(v2.0.2)的流体模拟实例(Shader、Blend+Render+Shader/Mask)。 4 | 5 | ps: 应该可以适用于2.0.x任何版本,我只试了v2.0.2、v2.0.7、2.0.10都是可以正常使用的。 6 | 7 | ![演示图片1](https://github.com/liuwenkai1023/ccc-fluid-demo/blob/master/screen%20capture/Test.gif?raw=true) -------------------------------------------------------------------------------- /assets/resources.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "0c747981-1cc6-4ce2-8d86-0e17f87ae042", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/resources/scene.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "d5e3e660-49d5-4014-994c-981ed281bd12", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/resources/scene/SceneRender.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "dbef7ede-44b2-4383-8953-a196707838d1", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/resources/scene/SceneShader.fire: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.SceneAsset", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_native": "", 7 | "scene": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Scene", 13 | "_objFlags": 0, 14 | "_parent": null, 15 | "_children": [ 16 | { 17 | "__id__": 2 18 | } 19 | ], 20 | "_active": true, 21 | "_level": 0, 22 | "_components": [], 23 | "_prefab": null, 24 | "_opacity": 255, 25 | "_color": { 26 | "__type__": "cc.Color", 27 | "r": 255, 28 | "g": 255, 29 | "b": 255, 30 | "a": 255 31 | }, 32 | "_contentSize": { 33 | "__type__": "cc.Size", 34 | "width": 0, 35 | "height": 0 36 | }, 37 | "_anchorPoint": { 38 | "__type__": "cc.Vec2", 39 | "x": 0, 40 | "y": 0 41 | }, 42 | "_scale": { 43 | "__type__": "cc.Vec3", 44 | "x": 0.271875, 45 | "y": 0.271875, 46 | "z": 1 47 | }, 48 | "_quat": { 49 | "__type__": "cc.Quat", 50 | "x": 0, 51 | "y": 0, 52 | "z": 0, 53 | "w": 1 54 | }, 55 | "_zIndex": 0, 56 | "groupIndex": 0, 57 | "autoReleaseAssets": false, 58 | "_id": "be6e03b4-591c-4bc3-a079-286ec51a148d" 59 | }, 60 | { 61 | "__type__": "cc.Node", 62 | "_name": "Canvas", 63 | "_objFlags": 512, 64 | "_parent": { 65 | "__id__": 1 66 | }, 67 | "_children": [ 68 | { 69 | "__id__": 3 70 | }, 71 | { 72 | "__id__": 5 73 | }, 74 | { 75 | "__id__": 9 76 | }, 77 | { 78 | "__id__": 110 79 | }, 80 | { 81 | "__id__": 114 82 | } 83 | ], 84 | "_active": true, 85 | "_level": 0, 86 | "_components": [ 87 | { 88 | "__id__": 145 89 | } 90 | ], 91 | "_prefab": null, 92 | "_opacity": 255, 93 | "_color": { 94 | "__type__": "cc.Color", 95 | "r": 255, 96 | "g": 255, 97 | "b": 255, 98 | "a": 255 99 | }, 100 | "_contentSize": { 101 | "__type__": "cc.Size", 102 | "width": 720, 103 | "height": 1280 104 | }, 105 | "_anchorPoint": { 106 | "__type__": "cc.Vec2", 107 | "x": 0.5, 108 | "y": 0.5 109 | }, 110 | "_position": { 111 | "__type__": "cc.Vec3", 112 | "x": 360, 113 | "y": 640, 114 | "z": 0 115 | }, 116 | "_scale": { 117 | "__type__": "cc.Vec3", 118 | "x": 1, 119 | "y": 1, 120 | "z": 1 121 | }, 122 | "_rotationX": 0, 123 | "_rotationY": 0, 124 | "_quat": { 125 | "__type__": "cc.Quat", 126 | "x": 0, 127 | "y": 0, 128 | "z": 0, 129 | "w": 1 130 | }, 131 | "_skewX": 0, 132 | "_skewY": 0, 133 | "_zIndex": 0, 134 | "groupIndex": 0, 135 | "_id": "21hLMjdFNPQ4bXTcznRt6e" 136 | }, 137 | { 138 | "__type__": "cc.Node", 139 | "_name": "Main Camera", 140 | "_objFlags": 512, 141 | "_parent": { 142 | "__id__": 2 143 | }, 144 | "_children": [], 145 | "_active": true, 146 | "_level": 1, 147 | "_components": [ 148 | { 149 | "__id__": 4 150 | } 151 | ], 152 | "_prefab": null, 153 | "_opacity": 255, 154 | "_color": { 155 | "__type__": "cc.Color", 156 | "r": 255, 157 | "g": 255, 158 | "b": 255, 159 | "a": 255 160 | }, 161 | "_contentSize": { 162 | "__type__": "cc.Size", 163 | "width": 0, 164 | "height": 0 165 | }, 166 | "_anchorPoint": { 167 | "__type__": "cc.Vec2", 168 | "x": 0.5, 169 | "y": 0.5 170 | }, 171 | "_position": { 172 | "__type__": "cc.Vec3", 173 | "x": 0, 174 | "y": 0, 175 | "z": 0 176 | }, 177 | "_scale": { 178 | "__type__": "cc.Vec3", 179 | "x": 1, 180 | "y": 1, 181 | "z": 1 182 | }, 183 | "_rotationX": 0, 184 | "_rotationY": 0, 185 | "_quat": { 186 | "__type__": "cc.Quat", 187 | "x": 0, 188 | "y": 0, 189 | "z": 0, 190 | "w": 1 191 | }, 192 | "_skewX": 0, 193 | "_skewY": 0, 194 | "_zIndex": 0, 195 | "groupIndex": 0, 196 | "_id": "6eZzBSf3VNUa2uhHtmdOaO" 197 | }, 198 | { 199 | "__type__": "cc.Camera", 200 | "_name": "", 201 | "_objFlags": 0, 202 | "node": { 203 | "__id__": 3 204 | }, 205 | "_enabled": true, 206 | "_cullingMask": 4294967295, 207 | "_clearFlags": 7, 208 | "_backgroundColor": { 209 | "__type__": "cc.Color", 210 | "r": 0, 211 | "g": 0, 212 | "b": 0, 213 | "a": 255 214 | }, 215 | "_depth": -1, 216 | "_zoomRatio": 1, 217 | "_targetTexture": null, 218 | "_id": "365SCN/GxIQaNggQ3t5w/q" 219 | }, 220 | { 221 | "__type__": "cc.Node", 222 | "_name": "background", 223 | "_objFlags": 512, 224 | "_parent": { 225 | "__id__": 2 226 | }, 227 | "_children": [], 228 | "_active": true, 229 | "_level": 1, 230 | "_components": [ 231 | { 232 | "__id__": 6 233 | }, 234 | { 235 | "__id__": 7 236 | }, 237 | { 238 | "__id__": 8 239 | } 240 | ], 241 | "_prefab": null, 242 | "_opacity": 255, 243 | "_color": { 244 | "__type__": "cc.Color", 245 | "r": 255, 246 | "g": 255, 247 | "b": 255, 248 | "a": 255 249 | }, 250 | "_contentSize": { 251 | "__type__": "cc.Size", 252 | "width": 720, 253 | "height": 1280 254 | }, 255 | "_anchorPoint": { 256 | "__type__": "cc.Vec2", 257 | "x": 0.5, 258 | "y": 0.5 259 | }, 260 | "_position": { 261 | "__type__": "cc.Vec3", 262 | "x": 0, 263 | "y": 0, 264 | "z": 0 265 | }, 266 | "_scale": { 267 | "__type__": "cc.Vec3", 268 | "x": 1, 269 | "y": 1, 270 | "z": 1 271 | }, 272 | "_rotationX": 0, 273 | "_rotationY": 0, 274 | "_quat": { 275 | "__type__": "cc.Quat", 276 | "x": 0, 277 | "y": 0, 278 | "z": 0, 279 | "w": 1 280 | }, 281 | "_skewX": 0, 282 | "_skewY": 0, 283 | "_zIndex": 0, 284 | "groupIndex": 0, 285 | "_id": "97AaKQDwJMsoyk9yoQGsV2" 286 | }, 287 | { 288 | "__type__": "cc.Sprite", 289 | "_name": "", 290 | "_objFlags": 0, 291 | "node": { 292 | "__id__": 5 293 | }, 294 | "_enabled": true, 295 | "_srcBlendFactor": 770, 296 | "_dstBlendFactor": 771, 297 | "_spriteFrame": { 298 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 299 | }, 300 | "_type": 0, 301 | "_sizeMode": 0, 302 | "_fillType": 0, 303 | "_fillCenter": { 304 | "__type__": "cc.Vec2", 305 | "x": 0, 306 | "y": 0 307 | }, 308 | "_fillStart": 0, 309 | "_fillRange": 0, 310 | "_isTrimmedMode": true, 311 | "_state": 0, 312 | "_atlas": null, 313 | "_id": "4e+dmat8RMla4lZspZ1S6n" 314 | }, 315 | { 316 | "__type__": "cc.Widget", 317 | "_name": "", 318 | "_objFlags": 0, 319 | "node": { 320 | "__id__": 5 321 | }, 322 | "_enabled": true, 323 | "alignMode": 1, 324 | "_target": null, 325 | "_alignFlags": 45, 326 | "_left": 0, 327 | "_right": 0, 328 | "_top": 0, 329 | "_bottom": 0, 330 | "_verticalCenter": 0, 331 | "_horizontalCenter": 0, 332 | "_isAbsLeft": true, 333 | "_isAbsRight": true, 334 | "_isAbsTop": true, 335 | "_isAbsBottom": true, 336 | "_isAbsHorizontalCenter": true, 337 | "_isAbsVerticalCenter": true, 338 | "_originalWidth": 100, 339 | "_originalHeight": 100, 340 | "_id": "f5zQaWehpCcL1xcS4Jizba" 341 | }, 342 | { 343 | "__type__": "07d6aRhhBlLW4zHhmKyAQOE", 344 | "_name": "", 345 | "_objFlags": 0, 346 | "node": { 347 | "__id__": 5 348 | }, 349 | "_enabled": true, 350 | "size": { 351 | "__type__": "cc.Size", 352 | "width": 0, 353 | "height": 0 354 | }, 355 | "mouseJoint": true, 356 | "_id": "e07v9rH8FLkLuJ3+rMcpdm" 357 | }, 358 | { 359 | "__type__": "cc.Node", 360 | "_name": "balls", 361 | "_objFlags": 512, 362 | "_parent": { 363 | "__id__": 2 364 | }, 365 | "_children": [ 366 | { 367 | "__id__": 10 368 | }, 369 | { 370 | "__id__": 14 371 | }, 372 | { 373 | "__id__": 18 374 | }, 375 | { 376 | "__id__": 22 377 | }, 378 | { 379 | "__id__": 26 380 | }, 381 | { 382 | "__id__": 30 383 | }, 384 | { 385 | "__id__": 34 386 | }, 387 | { 388 | "__id__": 38 389 | }, 390 | { 391 | "__id__": 42 392 | }, 393 | { 394 | "__id__": 46 395 | }, 396 | { 397 | "__id__": 50 398 | }, 399 | { 400 | "__id__": 54 401 | }, 402 | { 403 | "__id__": 58 404 | }, 405 | { 406 | "__id__": 62 407 | }, 408 | { 409 | "__id__": 66 410 | }, 411 | { 412 | "__id__": 70 413 | }, 414 | { 415 | "__id__": 74 416 | }, 417 | { 418 | "__id__": 78 419 | }, 420 | { 421 | "__id__": 82 422 | }, 423 | { 424 | "__id__": 86 425 | }, 426 | { 427 | "__id__": 90 428 | }, 429 | { 430 | "__id__": 94 431 | }, 432 | { 433 | "__id__": 98 434 | }, 435 | { 436 | "__id__": 102 437 | }, 438 | { 439 | "__id__": 106 440 | } 441 | ], 442 | "_active": true, 443 | "_level": 1, 444 | "_components": [], 445 | "_prefab": null, 446 | "_opacity": 255, 447 | "_color": { 448 | "__type__": "cc.Color", 449 | "r": 255, 450 | "g": 255, 451 | "b": 255, 452 | "a": 255 453 | }, 454 | "_contentSize": { 455 | "__type__": "cc.Size", 456 | "width": 0, 457 | "height": 0 458 | }, 459 | "_anchorPoint": { 460 | "__type__": "cc.Vec2", 461 | "x": 0.5, 462 | "y": 0.5 463 | }, 464 | "_position": { 465 | "__type__": "cc.Vec3", 466 | "x": -91, 467 | "y": -147, 468 | "z": 0 469 | }, 470 | "_scale": { 471 | "__type__": "cc.Vec3", 472 | "x": 1, 473 | "y": 1, 474 | "z": 1 475 | }, 476 | "_rotationX": 0, 477 | "_rotationY": 0, 478 | "_quat": { 479 | "__type__": "cc.Quat", 480 | "x": 0, 481 | "y": 0, 482 | "z": 0, 483 | "w": 1 484 | }, 485 | "_skewX": 0, 486 | "_skewY": 0, 487 | "_zIndex": 0, 488 | "groupIndex": 1, 489 | "_id": "d62tkB39RGwZYeZqSj0Y0J" 490 | }, 491 | { 492 | "__type__": "cc.Node", 493 | "_name": "ball_1", 494 | "_objFlags": 0, 495 | "_parent": { 496 | "__id__": 9 497 | }, 498 | "_children": [], 499 | "_active": true, 500 | "_level": 2, 501 | "_components": [ 502 | { 503 | "__id__": 11 504 | }, 505 | { 506 | "__id__": 12 507 | }, 508 | { 509 | "__id__": 13 510 | } 511 | ], 512 | "_prefab": null, 513 | "_opacity": 255, 514 | "_color": { 515 | "__type__": "cc.Color", 516 | "r": 255, 517 | "g": 255, 518 | "b": 255, 519 | "a": 255 520 | }, 521 | "_contentSize": { 522 | "__type__": "cc.Size", 523 | "width": 300, 524 | "height": 300 525 | }, 526 | "_anchorPoint": { 527 | "__type__": "cc.Vec2", 528 | "x": 0.5, 529 | "y": 0.5 530 | }, 531 | "_position": { 532 | "__type__": "cc.Vec3", 533 | "x": 29.1, 534 | "y": 222, 535 | "z": 0 536 | }, 537 | "_scale": { 538 | "__type__": "cc.Vec3", 539 | "x": 1, 540 | "y": 1, 541 | "z": 1 542 | }, 543 | "_rotationX": 0, 544 | "_rotationY": 0, 545 | "_quat": { 546 | "__type__": "cc.Quat", 547 | "x": 0, 548 | "y": 0, 549 | "z": 0, 550 | "w": 1 551 | }, 552 | "_skewX": 0, 553 | "_skewY": 0, 554 | "_zIndex": 0, 555 | "groupIndex": 1, 556 | "_id": "d2hROtxwxEdKi6wKXiVV+/" 557 | }, 558 | { 559 | "__type__": "cc.Sprite", 560 | "_name": "", 561 | "_objFlags": 0, 562 | "node": { 563 | "__id__": 10 564 | }, 565 | "_enabled": false, 566 | "_srcBlendFactor": 770, 567 | "_dstBlendFactor": 1, 568 | "_spriteFrame": null, 569 | "_type": 0, 570 | "_sizeMode": 0, 571 | "_fillType": 0, 572 | "_fillCenter": { 573 | "__type__": "cc.Vec2", 574 | "x": 0, 575 | "y": 0 576 | }, 577 | "_fillStart": 0, 578 | "_fillRange": 0, 579 | "_isTrimmedMode": true, 580 | "_state": 0, 581 | "_atlas": null, 582 | "_id": "9aG+4FDTJLT7Rh9N21AoqC" 583 | }, 584 | { 585 | "__type__": "cc.RigidBody", 586 | "_name": "", 587 | "_objFlags": 0, 588 | "node": { 589 | "__id__": 10 590 | }, 591 | "_enabled": true, 592 | "_type": 2, 593 | "_allowSleep": true, 594 | "_gravityScale": 1, 595 | "_linearDamping": 0.1, 596 | "_angularDamping": 0.1, 597 | "_linearVelocity": { 598 | "__type__": "cc.Vec2", 599 | "x": 0, 600 | "y": 0 601 | }, 602 | "_angularVelocity": 0, 603 | "_fixedRotation": false, 604 | "enabledContactListener": false, 605 | "bullet": false, 606 | "_id": "93yja4AbpLIpUOtO3jfrNY" 607 | }, 608 | { 609 | "__type__": "cc.PhysicsCircleCollider", 610 | "_name": "", 611 | "_objFlags": 0, 612 | "node": { 613 | "__id__": 10 614 | }, 615 | "_enabled": true, 616 | "tag": 0, 617 | "_density": 1, 618 | "_sensor": false, 619 | "_friction": 0.1, 620 | "_restitution": 0.35, 621 | "body": null, 622 | "_offset": { 623 | "__type__": "cc.Vec2", 624 | "x": 0, 625 | "y": 0 626 | }, 627 | "_radius": 13, 628 | "_id": "71WPZH9PdLy6Z+BGQdzYtg" 629 | }, 630 | { 631 | "__type__": "cc.Node", 632 | "_name": "ball_1", 633 | "_objFlags": 0, 634 | "_parent": { 635 | "__id__": 9 636 | }, 637 | "_children": [], 638 | "_active": true, 639 | "_level": 2, 640 | "_components": [ 641 | { 642 | "__id__": 15 643 | }, 644 | { 645 | "__id__": 16 646 | }, 647 | { 648 | "__id__": 17 649 | } 650 | ], 651 | "_prefab": null, 652 | "_opacity": 255, 653 | "_color": { 654 | "__type__": "cc.Color", 655 | "r": 255, 656 | "g": 255, 657 | "b": 255, 658 | "a": 255 659 | }, 660 | "_contentSize": { 661 | "__type__": "cc.Size", 662 | "width": 300, 663 | "height": 300 664 | }, 665 | "_anchorPoint": { 666 | "__type__": "cc.Vec2", 667 | "x": 0.5, 668 | "y": 0.5 669 | }, 670 | "_position": { 671 | "__type__": "cc.Vec3", 672 | "x": 55.1, 673 | "y": 222, 674 | "z": 0 675 | }, 676 | "_scale": { 677 | "__type__": "cc.Vec3", 678 | "x": 1, 679 | "y": 1, 680 | "z": 1 681 | }, 682 | "_rotationX": 0, 683 | "_rotationY": 0, 684 | "_quat": { 685 | "__type__": "cc.Quat", 686 | "x": 0, 687 | "y": 0, 688 | "z": 0, 689 | "w": 1 690 | }, 691 | "_skewX": 0, 692 | "_skewY": 0, 693 | "_zIndex": 0, 694 | "groupIndex": 1, 695 | "_id": "cceH86dmZEiKCWRZFrJJcR" 696 | }, 697 | { 698 | "__type__": "cc.Sprite", 699 | "_name": "", 700 | "_objFlags": 0, 701 | "node": { 702 | "__id__": 14 703 | }, 704 | "_enabled": false, 705 | "_srcBlendFactor": 770, 706 | "_dstBlendFactor": 1, 707 | "_spriteFrame": null, 708 | "_type": 0, 709 | "_sizeMode": 0, 710 | "_fillType": 0, 711 | "_fillCenter": { 712 | "__type__": "cc.Vec2", 713 | "x": 0, 714 | "y": 0 715 | }, 716 | "_fillStart": 0, 717 | "_fillRange": 0, 718 | "_isTrimmedMode": true, 719 | "_state": 0, 720 | "_atlas": null, 721 | "_id": "badaEy00JER7CzX/hDKkCt" 722 | }, 723 | { 724 | "__type__": "cc.RigidBody", 725 | "_name": "", 726 | "_objFlags": 0, 727 | "node": { 728 | "__id__": 14 729 | }, 730 | "_enabled": true, 731 | "_type": 2, 732 | "_allowSleep": true, 733 | "_gravityScale": 1, 734 | "_linearDamping": 0.1, 735 | "_angularDamping": 0.1, 736 | "_linearVelocity": { 737 | "__type__": "cc.Vec2", 738 | "x": 0, 739 | "y": 0 740 | }, 741 | "_angularVelocity": 0, 742 | "_fixedRotation": false, 743 | "enabledContactListener": false, 744 | "bullet": false, 745 | "_id": "f1IAAXjmxH04aSb/yXefiH" 746 | }, 747 | { 748 | "__type__": "cc.PhysicsCircleCollider", 749 | "_name": "", 750 | "_objFlags": 0, 751 | "node": { 752 | "__id__": 14 753 | }, 754 | "_enabled": true, 755 | "tag": 0, 756 | "_density": 1, 757 | "_sensor": false, 758 | "_friction": 0.1, 759 | "_restitution": 0.35, 760 | "body": null, 761 | "_offset": { 762 | "__type__": "cc.Vec2", 763 | "x": 0, 764 | "y": 0 765 | }, 766 | "_radius": 13, 767 | "_id": "18l/9EF+xCbp0srD8pbSKq" 768 | }, 769 | { 770 | "__type__": "cc.Node", 771 | "_name": "ball_1", 772 | "_objFlags": 0, 773 | "_parent": { 774 | "__id__": 9 775 | }, 776 | "_children": [], 777 | "_active": true, 778 | "_level": 2, 779 | "_components": [ 780 | { 781 | "__id__": 19 782 | }, 783 | { 784 | "__id__": 20 785 | }, 786 | { 787 | "__id__": 21 788 | } 789 | ], 790 | "_prefab": null, 791 | "_opacity": 255, 792 | "_color": { 793 | "__type__": "cc.Color", 794 | "r": 255, 795 | "g": 255, 796 | "b": 255, 797 | "a": 255 798 | }, 799 | "_contentSize": { 800 | "__type__": "cc.Size", 801 | "width": 300, 802 | "height": 300 803 | }, 804 | "_anchorPoint": { 805 | "__type__": "cc.Vec2", 806 | "x": 0.5, 807 | "y": 0.5 808 | }, 809 | "_position": { 810 | "__type__": "cc.Vec3", 811 | "x": 81.1, 812 | "y": 222, 813 | "z": 0 814 | }, 815 | "_scale": { 816 | "__type__": "cc.Vec3", 817 | "x": 1, 818 | "y": 1, 819 | "z": 1 820 | }, 821 | "_rotationX": 0, 822 | "_rotationY": 0, 823 | "_quat": { 824 | "__type__": "cc.Quat", 825 | "x": 0, 826 | "y": 0, 827 | "z": 0, 828 | "w": 1 829 | }, 830 | "_skewX": 0, 831 | "_skewY": 0, 832 | "_zIndex": 0, 833 | "groupIndex": 1, 834 | "_id": "936J8B2pBHeoYj/g+HUTDd" 835 | }, 836 | { 837 | "__type__": "cc.Sprite", 838 | "_name": "", 839 | "_objFlags": 0, 840 | "node": { 841 | "__id__": 18 842 | }, 843 | "_enabled": false, 844 | "_srcBlendFactor": 770, 845 | "_dstBlendFactor": 1, 846 | "_spriteFrame": null, 847 | "_type": 0, 848 | "_sizeMode": 0, 849 | "_fillType": 0, 850 | "_fillCenter": { 851 | "__type__": "cc.Vec2", 852 | "x": 0, 853 | "y": 0 854 | }, 855 | "_fillStart": 0, 856 | "_fillRange": 0, 857 | "_isTrimmedMode": true, 858 | "_state": 0, 859 | "_atlas": null, 860 | "_id": "d35yGkWAZKz5XYiCJ0TndP" 861 | }, 862 | { 863 | "__type__": "cc.RigidBody", 864 | "_name": "", 865 | "_objFlags": 0, 866 | "node": { 867 | "__id__": 18 868 | }, 869 | "_enabled": true, 870 | "_type": 2, 871 | "_allowSleep": true, 872 | "_gravityScale": 1, 873 | "_linearDamping": 0.1, 874 | "_angularDamping": 0.1, 875 | "_linearVelocity": { 876 | "__type__": "cc.Vec2", 877 | "x": 0, 878 | "y": 0 879 | }, 880 | "_angularVelocity": 0, 881 | "_fixedRotation": false, 882 | "enabledContactListener": false, 883 | "bullet": false, 884 | "_id": "ed+31MG1xFqqKLi1E/Xe2y" 885 | }, 886 | { 887 | "__type__": "cc.PhysicsCircleCollider", 888 | "_name": "", 889 | "_objFlags": 0, 890 | "node": { 891 | "__id__": 18 892 | }, 893 | "_enabled": true, 894 | "tag": 0, 895 | "_density": 1, 896 | "_sensor": false, 897 | "_friction": 0.1, 898 | "_restitution": 0.35, 899 | "body": null, 900 | "_offset": { 901 | "__type__": "cc.Vec2", 902 | "x": 0, 903 | "y": 0 904 | }, 905 | "_radius": 13, 906 | "_id": "3ah47nMpVCbpM5TK0ssuWM" 907 | }, 908 | { 909 | "__type__": "cc.Node", 910 | "_name": "ball_1", 911 | "_objFlags": 0, 912 | "_parent": { 913 | "__id__": 9 914 | }, 915 | "_children": [], 916 | "_active": true, 917 | "_level": 2, 918 | "_components": [ 919 | { 920 | "__id__": 23 921 | }, 922 | { 923 | "__id__": 24 924 | }, 925 | { 926 | "__id__": 25 927 | } 928 | ], 929 | "_prefab": null, 930 | "_opacity": 255, 931 | "_color": { 932 | "__type__": "cc.Color", 933 | "r": 255, 934 | "g": 255, 935 | "b": 255, 936 | "a": 255 937 | }, 938 | "_contentSize": { 939 | "__type__": "cc.Size", 940 | "width": 300, 941 | "height": 300 942 | }, 943 | "_anchorPoint": { 944 | "__type__": "cc.Vec2", 945 | "x": 0.5, 946 | "y": 0.5 947 | }, 948 | "_position": { 949 | "__type__": "cc.Vec3", 950 | "x": 107, 951 | "y": 222, 952 | "z": 0 953 | }, 954 | "_scale": { 955 | "__type__": "cc.Vec3", 956 | "x": 1, 957 | "y": 1, 958 | "z": 1 959 | }, 960 | "_rotationX": 0, 961 | "_rotationY": 0, 962 | "_quat": { 963 | "__type__": "cc.Quat", 964 | "x": 0, 965 | "y": 0, 966 | "z": 0, 967 | "w": 1 968 | }, 969 | "_skewX": 0, 970 | "_skewY": 0, 971 | "_zIndex": 0, 972 | "groupIndex": 1, 973 | "_id": "dfxuGUPslKhr7iF4uWBuBd" 974 | }, 975 | { 976 | "__type__": "cc.Sprite", 977 | "_name": "", 978 | "_objFlags": 0, 979 | "node": { 980 | "__id__": 22 981 | }, 982 | "_enabled": false, 983 | "_srcBlendFactor": 770, 984 | "_dstBlendFactor": 1, 985 | "_spriteFrame": null, 986 | "_type": 0, 987 | "_sizeMode": 0, 988 | "_fillType": 0, 989 | "_fillCenter": { 990 | "__type__": "cc.Vec2", 991 | "x": 0, 992 | "y": 0 993 | }, 994 | "_fillStart": 0, 995 | "_fillRange": 0, 996 | "_isTrimmedMode": true, 997 | "_state": 0, 998 | "_atlas": null, 999 | "_id": "02pvuajNBAwa8Z25OObFmG" 1000 | }, 1001 | { 1002 | "__type__": "cc.RigidBody", 1003 | "_name": "", 1004 | "_objFlags": 0, 1005 | "node": { 1006 | "__id__": 22 1007 | }, 1008 | "_enabled": true, 1009 | "_type": 2, 1010 | "_allowSleep": true, 1011 | "_gravityScale": 1, 1012 | "_linearDamping": 0.1, 1013 | "_angularDamping": 0.1, 1014 | "_linearVelocity": { 1015 | "__type__": "cc.Vec2", 1016 | "x": 0, 1017 | "y": 0 1018 | }, 1019 | "_angularVelocity": 0, 1020 | "_fixedRotation": false, 1021 | "enabledContactListener": false, 1022 | "bullet": false, 1023 | "_id": "e2sHmQcrZIVYENpVDI+qMM" 1024 | }, 1025 | { 1026 | "__type__": "cc.PhysicsCircleCollider", 1027 | "_name": "", 1028 | "_objFlags": 0, 1029 | "node": { 1030 | "__id__": 22 1031 | }, 1032 | "_enabled": true, 1033 | "tag": 0, 1034 | "_density": 1, 1035 | "_sensor": false, 1036 | "_friction": 0.1, 1037 | "_restitution": 0.35, 1038 | "body": null, 1039 | "_offset": { 1040 | "__type__": "cc.Vec2", 1041 | "x": 0, 1042 | "y": 0 1043 | }, 1044 | "_radius": 13, 1045 | "_id": "73Wv8wKaFM6otR67Y81dpH" 1046 | }, 1047 | { 1048 | "__type__": "cc.Node", 1049 | "_name": "ball_1", 1050 | "_objFlags": 0, 1051 | "_parent": { 1052 | "__id__": 9 1053 | }, 1054 | "_children": [], 1055 | "_active": true, 1056 | "_level": 2, 1057 | "_components": [ 1058 | { 1059 | "__id__": 27 1060 | }, 1061 | { 1062 | "__id__": 28 1063 | }, 1064 | { 1065 | "__id__": 29 1066 | } 1067 | ], 1068 | "_prefab": null, 1069 | "_opacity": 255, 1070 | "_color": { 1071 | "__type__": "cc.Color", 1072 | "r": 255, 1073 | "g": 255, 1074 | "b": 255, 1075 | "a": 255 1076 | }, 1077 | "_contentSize": { 1078 | "__type__": "cc.Size", 1079 | "width": 300, 1080 | "height": 300 1081 | }, 1082 | "_anchorPoint": { 1083 | "__type__": "cc.Vec2", 1084 | "x": 0.5, 1085 | "y": 0.5 1086 | }, 1087 | "_position": { 1088 | "__type__": "cc.Vec3", 1089 | "x": 133, 1090 | "y": 222, 1091 | "z": 0 1092 | }, 1093 | "_scale": { 1094 | "__type__": "cc.Vec3", 1095 | "x": 1, 1096 | "y": 1, 1097 | "z": 1 1098 | }, 1099 | "_rotationX": 0, 1100 | "_rotationY": 0, 1101 | "_quat": { 1102 | "__type__": "cc.Quat", 1103 | "x": 0, 1104 | "y": 0, 1105 | "z": 0, 1106 | "w": 1 1107 | }, 1108 | "_skewX": 0, 1109 | "_skewY": 0, 1110 | "_zIndex": 0, 1111 | "groupIndex": 1, 1112 | "_id": "4aTLRs+cBFtoPdqYtQ0upJ" 1113 | }, 1114 | { 1115 | "__type__": "cc.Sprite", 1116 | "_name": "", 1117 | "_objFlags": 0, 1118 | "node": { 1119 | "__id__": 26 1120 | }, 1121 | "_enabled": false, 1122 | "_srcBlendFactor": 770, 1123 | "_dstBlendFactor": 1, 1124 | "_spriteFrame": null, 1125 | "_type": 0, 1126 | "_sizeMode": 0, 1127 | "_fillType": 0, 1128 | "_fillCenter": { 1129 | "__type__": "cc.Vec2", 1130 | "x": 0, 1131 | "y": 0 1132 | }, 1133 | "_fillStart": 0, 1134 | "_fillRange": 0, 1135 | "_isTrimmedMode": true, 1136 | "_state": 0, 1137 | "_atlas": null, 1138 | "_id": "cdrRJ8985FiKK44F3zlb71" 1139 | }, 1140 | { 1141 | "__type__": "cc.RigidBody", 1142 | "_name": "", 1143 | "_objFlags": 0, 1144 | "node": { 1145 | "__id__": 26 1146 | }, 1147 | "_enabled": true, 1148 | "_type": 2, 1149 | "_allowSleep": true, 1150 | "_gravityScale": 1, 1151 | "_linearDamping": 0.1, 1152 | "_angularDamping": 0.1, 1153 | "_linearVelocity": { 1154 | "__type__": "cc.Vec2", 1155 | "x": 0, 1156 | "y": 0 1157 | }, 1158 | "_angularVelocity": 0, 1159 | "_fixedRotation": false, 1160 | "enabledContactListener": false, 1161 | "bullet": false, 1162 | "_id": "3fv1pH+kpPw4QxeSHjIDh6" 1163 | }, 1164 | { 1165 | "__type__": "cc.PhysicsCircleCollider", 1166 | "_name": "", 1167 | "_objFlags": 0, 1168 | "node": { 1169 | "__id__": 26 1170 | }, 1171 | "_enabled": true, 1172 | "tag": 0, 1173 | "_density": 1, 1174 | "_sensor": false, 1175 | "_friction": 0.1, 1176 | "_restitution": 0.35, 1177 | "body": null, 1178 | "_offset": { 1179 | "__type__": "cc.Vec2", 1180 | "x": 0, 1181 | "y": 0 1182 | }, 1183 | "_radius": 13, 1184 | "_id": "43v0snFYJKGrRkVEEAsaAo" 1185 | }, 1186 | { 1187 | "__type__": "cc.Node", 1188 | "_name": "ball_2", 1189 | "_objFlags": 0, 1190 | "_parent": { 1191 | "__id__": 9 1192 | }, 1193 | "_children": [], 1194 | "_active": true, 1195 | "_level": 2, 1196 | "_components": [ 1197 | { 1198 | "__id__": 31 1199 | }, 1200 | { 1201 | "__id__": 32 1202 | }, 1203 | { 1204 | "__id__": 33 1205 | } 1206 | ], 1207 | "_prefab": null, 1208 | "_opacity": 255, 1209 | "_color": { 1210 | "__type__": "cc.Color", 1211 | "r": 255, 1212 | "g": 255, 1213 | "b": 255, 1214 | "a": 255 1215 | }, 1216 | "_contentSize": { 1217 | "__type__": "cc.Size", 1218 | "width": 300, 1219 | "height": 300 1220 | }, 1221 | "_anchorPoint": { 1222 | "__type__": "cc.Vec2", 1223 | "x": 0.5, 1224 | "y": 0.5 1225 | }, 1226 | "_position": { 1227 | "__type__": "cc.Vec3", 1228 | "x": 29.1, 1229 | "y": 196.02, 1230 | "z": 0 1231 | }, 1232 | "_scale": { 1233 | "__type__": "cc.Vec3", 1234 | "x": 1, 1235 | "y": 1, 1236 | "z": 1 1237 | }, 1238 | "_rotationX": 0, 1239 | "_rotationY": 0, 1240 | "_quat": { 1241 | "__type__": "cc.Quat", 1242 | "x": 0, 1243 | "y": 0, 1244 | "z": 0, 1245 | "w": 1 1246 | }, 1247 | "_skewX": 0, 1248 | "_skewY": 0, 1249 | "_zIndex": 0, 1250 | "groupIndex": 1, 1251 | "_id": "b9bpIt7X1P4bBk+htbphwQ" 1252 | }, 1253 | { 1254 | "__type__": "cc.Sprite", 1255 | "_name": "", 1256 | "_objFlags": 0, 1257 | "node": { 1258 | "__id__": 30 1259 | }, 1260 | "_enabled": false, 1261 | "_srcBlendFactor": 770, 1262 | "_dstBlendFactor": 1, 1263 | "_spriteFrame": null, 1264 | "_type": 0, 1265 | "_sizeMode": 0, 1266 | "_fillType": 0, 1267 | "_fillCenter": { 1268 | "__type__": "cc.Vec2", 1269 | "x": 0, 1270 | "y": 0 1271 | }, 1272 | "_fillStart": 0, 1273 | "_fillRange": 0, 1274 | "_isTrimmedMode": true, 1275 | "_state": 0, 1276 | "_atlas": null, 1277 | "_id": "c3dltSNJlFJ61z36VlnyAQ" 1278 | }, 1279 | { 1280 | "__type__": "cc.RigidBody", 1281 | "_name": "", 1282 | "_objFlags": 0, 1283 | "node": { 1284 | "__id__": 30 1285 | }, 1286 | "_enabled": true, 1287 | "_type": 2, 1288 | "_allowSleep": true, 1289 | "_gravityScale": 1, 1290 | "_linearDamping": 0.1, 1291 | "_angularDamping": 0.1, 1292 | "_linearVelocity": { 1293 | "__type__": "cc.Vec2", 1294 | "x": 0, 1295 | "y": 0 1296 | }, 1297 | "_angularVelocity": 0, 1298 | "_fixedRotation": false, 1299 | "enabledContactListener": false, 1300 | "bullet": false, 1301 | "_id": "80WUMb4qtNXov6lVd2I0x8" 1302 | }, 1303 | { 1304 | "__type__": "cc.PhysicsCircleCollider", 1305 | "_name": "", 1306 | "_objFlags": 0, 1307 | "node": { 1308 | "__id__": 30 1309 | }, 1310 | "_enabled": true, 1311 | "tag": 0, 1312 | "_density": 1, 1313 | "_sensor": false, 1314 | "_friction": 0.1, 1315 | "_restitution": 0.35, 1316 | "body": null, 1317 | "_offset": { 1318 | "__type__": "cc.Vec2", 1319 | "x": 0, 1320 | "y": 0 1321 | }, 1322 | "_radius": 13, 1323 | "_id": "03Yl6IG+lM4rup+kTtBV/O" 1324 | }, 1325 | { 1326 | "__type__": "cc.Node", 1327 | "_name": "ball_2", 1328 | "_objFlags": 0, 1329 | "_parent": { 1330 | "__id__": 9 1331 | }, 1332 | "_children": [], 1333 | "_active": true, 1334 | "_level": 2, 1335 | "_components": [ 1336 | { 1337 | "__id__": 35 1338 | }, 1339 | { 1340 | "__id__": 36 1341 | }, 1342 | { 1343 | "__id__": 37 1344 | } 1345 | ], 1346 | "_prefab": null, 1347 | "_opacity": 255, 1348 | "_color": { 1349 | "__type__": "cc.Color", 1350 | "r": 255, 1351 | "g": 255, 1352 | "b": 255, 1353 | "a": 255 1354 | }, 1355 | "_contentSize": { 1356 | "__type__": "cc.Size", 1357 | "width": 300, 1358 | "height": 300 1359 | }, 1360 | "_anchorPoint": { 1361 | "__type__": "cc.Vec2", 1362 | "x": 0.5, 1363 | "y": 0.5 1364 | }, 1365 | "_position": { 1366 | "__type__": "cc.Vec3", 1367 | "x": 55.1, 1368 | "y": 196.02, 1369 | "z": 0 1370 | }, 1371 | "_scale": { 1372 | "__type__": "cc.Vec3", 1373 | "x": 1, 1374 | "y": 1, 1375 | "z": 1 1376 | }, 1377 | "_rotationX": 0, 1378 | "_rotationY": 0, 1379 | "_quat": { 1380 | "__type__": "cc.Quat", 1381 | "x": 0, 1382 | "y": 0, 1383 | "z": 0, 1384 | "w": 1 1385 | }, 1386 | "_skewX": 0, 1387 | "_skewY": 0, 1388 | "_zIndex": 0, 1389 | "groupIndex": 1, 1390 | "_id": "1fzmci3qBIx571od2CwDj5" 1391 | }, 1392 | { 1393 | "__type__": "cc.Sprite", 1394 | "_name": "", 1395 | "_objFlags": 0, 1396 | "node": { 1397 | "__id__": 34 1398 | }, 1399 | "_enabled": false, 1400 | "_srcBlendFactor": 770, 1401 | "_dstBlendFactor": 1, 1402 | "_spriteFrame": null, 1403 | "_type": 0, 1404 | "_sizeMode": 0, 1405 | "_fillType": 0, 1406 | "_fillCenter": { 1407 | "__type__": "cc.Vec2", 1408 | "x": 0, 1409 | "y": 0 1410 | }, 1411 | "_fillStart": 0, 1412 | "_fillRange": 0, 1413 | "_isTrimmedMode": true, 1414 | "_state": 0, 1415 | "_atlas": null, 1416 | "_id": "32ezsEhhREsoqYQwfaAvHb" 1417 | }, 1418 | { 1419 | "__type__": "cc.RigidBody", 1420 | "_name": "", 1421 | "_objFlags": 0, 1422 | "node": { 1423 | "__id__": 34 1424 | }, 1425 | "_enabled": true, 1426 | "_type": 2, 1427 | "_allowSleep": true, 1428 | "_gravityScale": 1, 1429 | "_linearDamping": 0.1, 1430 | "_angularDamping": 0.1, 1431 | "_linearVelocity": { 1432 | "__type__": "cc.Vec2", 1433 | "x": 0, 1434 | "y": 0 1435 | }, 1436 | "_angularVelocity": 0, 1437 | "_fixedRotation": false, 1438 | "enabledContactListener": false, 1439 | "bullet": false, 1440 | "_id": "45VIFUd1RLDLUEgIA+iXDI" 1441 | }, 1442 | { 1443 | "__type__": "cc.PhysicsCircleCollider", 1444 | "_name": "", 1445 | "_objFlags": 0, 1446 | "node": { 1447 | "__id__": 34 1448 | }, 1449 | "_enabled": true, 1450 | "tag": 0, 1451 | "_density": 1, 1452 | "_sensor": false, 1453 | "_friction": 0.1, 1454 | "_restitution": 0.35, 1455 | "body": null, 1456 | "_offset": { 1457 | "__type__": "cc.Vec2", 1458 | "x": 0, 1459 | "y": 0 1460 | }, 1461 | "_radius": 13, 1462 | "_id": "f3XcA/pxxLS7Wmya0CEaPc" 1463 | }, 1464 | { 1465 | "__type__": "cc.Node", 1466 | "_name": "ball_2", 1467 | "_objFlags": 0, 1468 | "_parent": { 1469 | "__id__": 9 1470 | }, 1471 | "_children": [], 1472 | "_active": true, 1473 | "_level": 2, 1474 | "_components": [ 1475 | { 1476 | "__id__": 39 1477 | }, 1478 | { 1479 | "__id__": 40 1480 | }, 1481 | { 1482 | "__id__": 41 1483 | } 1484 | ], 1485 | "_prefab": null, 1486 | "_opacity": 255, 1487 | "_color": { 1488 | "__type__": "cc.Color", 1489 | "r": 255, 1490 | "g": 255, 1491 | "b": 255, 1492 | "a": 255 1493 | }, 1494 | "_contentSize": { 1495 | "__type__": "cc.Size", 1496 | "width": 300, 1497 | "height": 300 1498 | }, 1499 | "_anchorPoint": { 1500 | "__type__": "cc.Vec2", 1501 | "x": 0.5, 1502 | "y": 0.5 1503 | }, 1504 | "_position": { 1505 | "__type__": "cc.Vec3", 1506 | "x": 81.1, 1507 | "y": 196.02, 1508 | "z": 0 1509 | }, 1510 | "_scale": { 1511 | "__type__": "cc.Vec3", 1512 | "x": 1, 1513 | "y": 1, 1514 | "z": 1 1515 | }, 1516 | "_rotationX": 0, 1517 | "_rotationY": 0, 1518 | "_quat": { 1519 | "__type__": "cc.Quat", 1520 | "x": 0, 1521 | "y": 0, 1522 | "z": 0, 1523 | "w": 1 1524 | }, 1525 | "_skewX": 0, 1526 | "_skewY": 0, 1527 | "_zIndex": 0, 1528 | "groupIndex": 1, 1529 | "_id": "91EtYv7MdFNZJwVn3ATG6O" 1530 | }, 1531 | { 1532 | "__type__": "cc.Sprite", 1533 | "_name": "", 1534 | "_objFlags": 0, 1535 | "node": { 1536 | "__id__": 38 1537 | }, 1538 | "_enabled": false, 1539 | "_srcBlendFactor": 770, 1540 | "_dstBlendFactor": 1, 1541 | "_spriteFrame": null, 1542 | "_type": 0, 1543 | "_sizeMode": 0, 1544 | "_fillType": 0, 1545 | "_fillCenter": { 1546 | "__type__": "cc.Vec2", 1547 | "x": 0, 1548 | "y": 0 1549 | }, 1550 | "_fillStart": 0, 1551 | "_fillRange": 0, 1552 | "_isTrimmedMode": true, 1553 | "_state": 0, 1554 | "_atlas": null, 1555 | "_id": "54y4T6OmdNxIfS0AK4mu7N" 1556 | }, 1557 | { 1558 | "__type__": "cc.RigidBody", 1559 | "_name": "", 1560 | "_objFlags": 0, 1561 | "node": { 1562 | "__id__": 38 1563 | }, 1564 | "_enabled": true, 1565 | "_type": 2, 1566 | "_allowSleep": true, 1567 | "_gravityScale": 1, 1568 | "_linearDamping": 0.1, 1569 | "_angularDamping": 0.1, 1570 | "_linearVelocity": { 1571 | "__type__": "cc.Vec2", 1572 | "x": 0, 1573 | "y": 0 1574 | }, 1575 | "_angularVelocity": 0, 1576 | "_fixedRotation": false, 1577 | "enabledContactListener": false, 1578 | "bullet": false, 1579 | "_id": "e8wWBQDktAbbi1eleLubT3" 1580 | }, 1581 | { 1582 | "__type__": "cc.PhysicsCircleCollider", 1583 | "_name": "", 1584 | "_objFlags": 0, 1585 | "node": { 1586 | "__id__": 38 1587 | }, 1588 | "_enabled": true, 1589 | "tag": 0, 1590 | "_density": 1, 1591 | "_sensor": false, 1592 | "_friction": 0.1, 1593 | "_restitution": 0.35, 1594 | "body": null, 1595 | "_offset": { 1596 | "__type__": "cc.Vec2", 1597 | "x": 0, 1598 | "y": 0 1599 | }, 1600 | "_radius": 13, 1601 | "_id": "feHvJDI9dOo5E87izjvduX" 1602 | }, 1603 | { 1604 | "__type__": "cc.Node", 1605 | "_name": "ball_2", 1606 | "_objFlags": 0, 1607 | "_parent": { 1608 | "__id__": 9 1609 | }, 1610 | "_children": [], 1611 | "_active": true, 1612 | "_level": 2, 1613 | "_components": [ 1614 | { 1615 | "__id__": 43 1616 | }, 1617 | { 1618 | "__id__": 44 1619 | }, 1620 | { 1621 | "__id__": 45 1622 | } 1623 | ], 1624 | "_prefab": null, 1625 | "_opacity": 255, 1626 | "_color": { 1627 | "__type__": "cc.Color", 1628 | "r": 255, 1629 | "g": 255, 1630 | "b": 255, 1631 | "a": 255 1632 | }, 1633 | "_contentSize": { 1634 | "__type__": "cc.Size", 1635 | "width": 300, 1636 | "height": 300 1637 | }, 1638 | "_anchorPoint": { 1639 | "__type__": "cc.Vec2", 1640 | "x": 0.5, 1641 | "y": 0.5 1642 | }, 1643 | "_position": { 1644 | "__type__": "cc.Vec3", 1645 | "x": 107, 1646 | "y": 196.02, 1647 | "z": 0 1648 | }, 1649 | "_scale": { 1650 | "__type__": "cc.Vec3", 1651 | "x": 1, 1652 | "y": 1, 1653 | "z": 1 1654 | }, 1655 | "_rotationX": 0, 1656 | "_rotationY": 0, 1657 | "_quat": { 1658 | "__type__": "cc.Quat", 1659 | "x": 0, 1660 | "y": 0, 1661 | "z": 0, 1662 | "w": 1 1663 | }, 1664 | "_skewX": 0, 1665 | "_skewY": 0, 1666 | "_zIndex": 0, 1667 | "groupIndex": 1, 1668 | "_id": "46KkYhHkxFbJiTO6+BqF4r" 1669 | }, 1670 | { 1671 | "__type__": "cc.Sprite", 1672 | "_name": "", 1673 | "_objFlags": 0, 1674 | "node": { 1675 | "__id__": 42 1676 | }, 1677 | "_enabled": false, 1678 | "_srcBlendFactor": 770, 1679 | "_dstBlendFactor": 1, 1680 | "_spriteFrame": null, 1681 | "_type": 0, 1682 | "_sizeMode": 0, 1683 | "_fillType": 0, 1684 | "_fillCenter": { 1685 | "__type__": "cc.Vec2", 1686 | "x": 0, 1687 | "y": 0 1688 | }, 1689 | "_fillStart": 0, 1690 | "_fillRange": 0, 1691 | "_isTrimmedMode": true, 1692 | "_state": 0, 1693 | "_atlas": null, 1694 | "_id": "dfbj25w/5NSa+Eadrbjv4Y" 1695 | }, 1696 | { 1697 | "__type__": "cc.RigidBody", 1698 | "_name": "", 1699 | "_objFlags": 0, 1700 | "node": { 1701 | "__id__": 42 1702 | }, 1703 | "_enabled": true, 1704 | "_type": 2, 1705 | "_allowSleep": true, 1706 | "_gravityScale": 1, 1707 | "_linearDamping": 0.1, 1708 | "_angularDamping": 0.1, 1709 | "_linearVelocity": { 1710 | "__type__": "cc.Vec2", 1711 | "x": 0, 1712 | "y": 0 1713 | }, 1714 | "_angularVelocity": 0, 1715 | "_fixedRotation": false, 1716 | "enabledContactListener": false, 1717 | "bullet": false, 1718 | "_id": "099t1TeEFD97ScjGFMyR47" 1719 | }, 1720 | { 1721 | "__type__": "cc.PhysicsCircleCollider", 1722 | "_name": "", 1723 | "_objFlags": 0, 1724 | "node": { 1725 | "__id__": 42 1726 | }, 1727 | "_enabled": true, 1728 | "tag": 0, 1729 | "_density": 1, 1730 | "_sensor": false, 1731 | "_friction": 0.1, 1732 | "_restitution": 0.35, 1733 | "body": null, 1734 | "_offset": { 1735 | "__type__": "cc.Vec2", 1736 | "x": 0, 1737 | "y": 0 1738 | }, 1739 | "_radius": 13, 1740 | "_id": "264G16ZKNKB6Hsy4U1XFW/" 1741 | }, 1742 | { 1743 | "__type__": "cc.Node", 1744 | "_name": "ball_2", 1745 | "_objFlags": 0, 1746 | "_parent": { 1747 | "__id__": 9 1748 | }, 1749 | "_children": [], 1750 | "_active": true, 1751 | "_level": 2, 1752 | "_components": [ 1753 | { 1754 | "__id__": 47 1755 | }, 1756 | { 1757 | "__id__": 48 1758 | }, 1759 | { 1760 | "__id__": 49 1761 | } 1762 | ], 1763 | "_prefab": null, 1764 | "_opacity": 255, 1765 | "_color": { 1766 | "__type__": "cc.Color", 1767 | "r": 255, 1768 | "g": 255, 1769 | "b": 255, 1770 | "a": 255 1771 | }, 1772 | "_contentSize": { 1773 | "__type__": "cc.Size", 1774 | "width": 300, 1775 | "height": 300 1776 | }, 1777 | "_anchorPoint": { 1778 | "__type__": "cc.Vec2", 1779 | "x": 0.5, 1780 | "y": 0.5 1781 | }, 1782 | "_position": { 1783 | "__type__": "cc.Vec3", 1784 | "x": 133, 1785 | "y": 196.02, 1786 | "z": 0 1787 | }, 1788 | "_scale": { 1789 | "__type__": "cc.Vec3", 1790 | "x": 1, 1791 | "y": 1, 1792 | "z": 1 1793 | }, 1794 | "_rotationX": 0, 1795 | "_rotationY": 0, 1796 | "_quat": { 1797 | "__type__": "cc.Quat", 1798 | "x": 0, 1799 | "y": 0, 1800 | "z": 0, 1801 | "w": 1 1802 | }, 1803 | "_skewX": 0, 1804 | "_skewY": 0, 1805 | "_zIndex": 0, 1806 | "groupIndex": 1, 1807 | "_id": "52J/b15fBC0JV0157JQaEI" 1808 | }, 1809 | { 1810 | "__type__": "cc.Sprite", 1811 | "_name": "", 1812 | "_objFlags": 0, 1813 | "node": { 1814 | "__id__": 46 1815 | }, 1816 | "_enabled": false, 1817 | "_srcBlendFactor": 770, 1818 | "_dstBlendFactor": 1, 1819 | "_spriteFrame": null, 1820 | "_type": 0, 1821 | "_sizeMode": 0, 1822 | "_fillType": 0, 1823 | "_fillCenter": { 1824 | "__type__": "cc.Vec2", 1825 | "x": 0, 1826 | "y": 0 1827 | }, 1828 | "_fillStart": 0, 1829 | "_fillRange": 0, 1830 | "_isTrimmedMode": true, 1831 | "_state": 0, 1832 | "_atlas": null, 1833 | "_id": "d7n1ifzQFIGqXiD4E09k60" 1834 | }, 1835 | { 1836 | "__type__": "cc.RigidBody", 1837 | "_name": "", 1838 | "_objFlags": 0, 1839 | "node": { 1840 | "__id__": 46 1841 | }, 1842 | "_enabled": true, 1843 | "_type": 2, 1844 | "_allowSleep": true, 1845 | "_gravityScale": 1, 1846 | "_linearDamping": 0.1, 1847 | "_angularDamping": 0.1, 1848 | "_linearVelocity": { 1849 | "__type__": "cc.Vec2", 1850 | "x": 0, 1851 | "y": 0 1852 | }, 1853 | "_angularVelocity": 0, 1854 | "_fixedRotation": false, 1855 | "enabledContactListener": false, 1856 | "bullet": false, 1857 | "_id": "3a9PuU68lAzIwRttHGxAnb" 1858 | }, 1859 | { 1860 | "__type__": "cc.PhysicsCircleCollider", 1861 | "_name": "", 1862 | "_objFlags": 0, 1863 | "node": { 1864 | "__id__": 46 1865 | }, 1866 | "_enabled": true, 1867 | "tag": 0, 1868 | "_density": 1, 1869 | "_sensor": false, 1870 | "_friction": 0.1, 1871 | "_restitution": 0.35, 1872 | "body": null, 1873 | "_offset": { 1874 | "__type__": "cc.Vec2", 1875 | "x": 0, 1876 | "y": 0 1877 | }, 1878 | "_radius": 13, 1879 | "_id": "c4SpsuDjFC4bqiKW8/feul" 1880 | }, 1881 | { 1882 | "__type__": "cc.Node", 1883 | "_name": "ball_3", 1884 | "_objFlags": 0, 1885 | "_parent": { 1886 | "__id__": 9 1887 | }, 1888 | "_children": [], 1889 | "_active": true, 1890 | "_level": 2, 1891 | "_components": [ 1892 | { 1893 | "__id__": 51 1894 | }, 1895 | { 1896 | "__id__": 52 1897 | }, 1898 | { 1899 | "__id__": 53 1900 | } 1901 | ], 1902 | "_prefab": null, 1903 | "_opacity": 255, 1904 | "_color": { 1905 | "__type__": "cc.Color", 1906 | "r": 255, 1907 | "g": 255, 1908 | "b": 255, 1909 | "a": 255 1910 | }, 1911 | "_contentSize": { 1912 | "__type__": "cc.Size", 1913 | "width": 300, 1914 | "height": 300 1915 | }, 1916 | "_anchorPoint": { 1917 | "__type__": "cc.Vec2", 1918 | "x": 0.5, 1919 | "y": 0.5 1920 | }, 1921 | "_position": { 1922 | "__type__": "cc.Vec3", 1923 | "x": 29.1, 1924 | "y": 169.9, 1925 | "z": 0 1926 | }, 1927 | "_scale": { 1928 | "__type__": "cc.Vec3", 1929 | "x": 1, 1930 | "y": 1, 1931 | "z": 1 1932 | }, 1933 | "_rotationX": 0, 1934 | "_rotationY": 0, 1935 | "_quat": { 1936 | "__type__": "cc.Quat", 1937 | "x": 0, 1938 | "y": 0, 1939 | "z": 0, 1940 | "w": 1 1941 | }, 1942 | "_skewX": 0, 1943 | "_skewY": 0, 1944 | "_zIndex": 0, 1945 | "groupIndex": 1, 1946 | "_id": "70y0/c5JJPeIbrEssh1tA2" 1947 | }, 1948 | { 1949 | "__type__": "cc.Sprite", 1950 | "_name": "", 1951 | "_objFlags": 0, 1952 | "node": { 1953 | "__id__": 50 1954 | }, 1955 | "_enabled": false, 1956 | "_srcBlendFactor": 770, 1957 | "_dstBlendFactor": 1, 1958 | "_spriteFrame": null, 1959 | "_type": 0, 1960 | "_sizeMode": 0, 1961 | "_fillType": 0, 1962 | "_fillCenter": { 1963 | "__type__": "cc.Vec2", 1964 | "x": 0, 1965 | "y": 0 1966 | }, 1967 | "_fillStart": 0, 1968 | "_fillRange": 0, 1969 | "_isTrimmedMode": true, 1970 | "_state": 0, 1971 | "_atlas": null, 1972 | "_id": "60InK4w2JAS49Z6anEvnWC" 1973 | }, 1974 | { 1975 | "__type__": "cc.RigidBody", 1976 | "_name": "", 1977 | "_objFlags": 0, 1978 | "node": { 1979 | "__id__": 50 1980 | }, 1981 | "_enabled": true, 1982 | "_type": 2, 1983 | "_allowSleep": true, 1984 | "_gravityScale": 1, 1985 | "_linearDamping": 0.1, 1986 | "_angularDamping": 0.1, 1987 | "_linearVelocity": { 1988 | "__type__": "cc.Vec2", 1989 | "x": 0, 1990 | "y": 0 1991 | }, 1992 | "_angularVelocity": 0, 1993 | "_fixedRotation": false, 1994 | "enabledContactListener": false, 1995 | "bullet": false, 1996 | "_id": "ec+C+CHvpJhqczoaACVgMP" 1997 | }, 1998 | { 1999 | "__type__": "cc.PhysicsCircleCollider", 2000 | "_name": "", 2001 | "_objFlags": 0, 2002 | "node": { 2003 | "__id__": 50 2004 | }, 2005 | "_enabled": true, 2006 | "tag": 0, 2007 | "_density": 1, 2008 | "_sensor": false, 2009 | "_friction": 0.1, 2010 | "_restitution": 0.35, 2011 | "body": null, 2012 | "_offset": { 2013 | "__type__": "cc.Vec2", 2014 | "x": 0, 2015 | "y": 0 2016 | }, 2017 | "_radius": 13, 2018 | "_id": "fdjS+SUZ5AJawdcT3kDnm+" 2019 | }, 2020 | { 2021 | "__type__": "cc.Node", 2022 | "_name": "ball_3", 2023 | "_objFlags": 0, 2024 | "_parent": { 2025 | "__id__": 9 2026 | }, 2027 | "_children": [], 2028 | "_active": true, 2029 | "_level": 2, 2030 | "_components": [ 2031 | { 2032 | "__id__": 55 2033 | }, 2034 | { 2035 | "__id__": 56 2036 | }, 2037 | { 2038 | "__id__": 57 2039 | } 2040 | ], 2041 | "_prefab": null, 2042 | "_opacity": 255, 2043 | "_color": { 2044 | "__type__": "cc.Color", 2045 | "r": 255, 2046 | "g": 255, 2047 | "b": 255, 2048 | "a": 255 2049 | }, 2050 | "_contentSize": { 2051 | "__type__": "cc.Size", 2052 | "width": 300, 2053 | "height": 300 2054 | }, 2055 | "_anchorPoint": { 2056 | "__type__": "cc.Vec2", 2057 | "x": 0.5, 2058 | "y": 0.5 2059 | }, 2060 | "_position": { 2061 | "__type__": "cc.Vec3", 2062 | "x": 55.1, 2063 | "y": 169.9, 2064 | "z": 0 2065 | }, 2066 | "_scale": { 2067 | "__type__": "cc.Vec3", 2068 | "x": 1, 2069 | "y": 1, 2070 | "z": 1 2071 | }, 2072 | "_rotationX": 0, 2073 | "_rotationY": 0, 2074 | "_quat": { 2075 | "__type__": "cc.Quat", 2076 | "x": 0, 2077 | "y": 0, 2078 | "z": 0, 2079 | "w": 1 2080 | }, 2081 | "_skewX": 0, 2082 | "_skewY": 0, 2083 | "_zIndex": 0, 2084 | "groupIndex": 1, 2085 | "_id": "a13MV6FE9IKY6uWI0Dl0qD" 2086 | }, 2087 | { 2088 | "__type__": "cc.Sprite", 2089 | "_name": "", 2090 | "_objFlags": 0, 2091 | "node": { 2092 | "__id__": 54 2093 | }, 2094 | "_enabled": false, 2095 | "_srcBlendFactor": 770, 2096 | "_dstBlendFactor": 1, 2097 | "_spriteFrame": null, 2098 | "_type": 0, 2099 | "_sizeMode": 0, 2100 | "_fillType": 0, 2101 | "_fillCenter": { 2102 | "__type__": "cc.Vec2", 2103 | "x": 0, 2104 | "y": 0 2105 | }, 2106 | "_fillStart": 0, 2107 | "_fillRange": 0, 2108 | "_isTrimmedMode": true, 2109 | "_state": 0, 2110 | "_atlas": null, 2111 | "_id": "datZqN135CYIL7zXS+ASBV" 2112 | }, 2113 | { 2114 | "__type__": "cc.RigidBody", 2115 | "_name": "", 2116 | "_objFlags": 0, 2117 | "node": { 2118 | "__id__": 54 2119 | }, 2120 | "_enabled": true, 2121 | "_type": 2, 2122 | "_allowSleep": true, 2123 | "_gravityScale": 1, 2124 | "_linearDamping": 0.1, 2125 | "_angularDamping": 0.1, 2126 | "_linearVelocity": { 2127 | "__type__": "cc.Vec2", 2128 | "x": 0, 2129 | "y": 0 2130 | }, 2131 | "_angularVelocity": 0, 2132 | "_fixedRotation": false, 2133 | "enabledContactListener": false, 2134 | "bullet": false, 2135 | "_id": "5dXGDAxsdNUqY1BxcZhe3r" 2136 | }, 2137 | { 2138 | "__type__": "cc.PhysicsCircleCollider", 2139 | "_name": "", 2140 | "_objFlags": 0, 2141 | "node": { 2142 | "__id__": 54 2143 | }, 2144 | "_enabled": true, 2145 | "tag": 0, 2146 | "_density": 1, 2147 | "_sensor": false, 2148 | "_friction": 0.1, 2149 | "_restitution": 0.35, 2150 | "body": null, 2151 | "_offset": { 2152 | "__type__": "cc.Vec2", 2153 | "x": 0, 2154 | "y": 0 2155 | }, 2156 | "_radius": 13, 2157 | "_id": "54mf82Pj5Ki5DAO/22ckIh" 2158 | }, 2159 | { 2160 | "__type__": "cc.Node", 2161 | "_name": "ball_3", 2162 | "_objFlags": 0, 2163 | "_parent": { 2164 | "__id__": 9 2165 | }, 2166 | "_children": [], 2167 | "_active": true, 2168 | "_level": 2, 2169 | "_components": [ 2170 | { 2171 | "__id__": 59 2172 | }, 2173 | { 2174 | "__id__": 60 2175 | }, 2176 | { 2177 | "__id__": 61 2178 | } 2179 | ], 2180 | "_prefab": null, 2181 | "_opacity": 255, 2182 | "_color": { 2183 | "__type__": "cc.Color", 2184 | "r": 255, 2185 | "g": 255, 2186 | "b": 255, 2187 | "a": 255 2188 | }, 2189 | "_contentSize": { 2190 | "__type__": "cc.Size", 2191 | "width": 300, 2192 | "height": 300 2193 | }, 2194 | "_anchorPoint": { 2195 | "__type__": "cc.Vec2", 2196 | "x": 0.5, 2197 | "y": 0.5 2198 | }, 2199 | "_position": { 2200 | "__type__": "cc.Vec3", 2201 | "x": 81.1, 2202 | "y": 169.9, 2203 | "z": 0 2204 | }, 2205 | "_scale": { 2206 | "__type__": "cc.Vec3", 2207 | "x": 1, 2208 | "y": 1, 2209 | "z": 1 2210 | }, 2211 | "_rotationX": 0, 2212 | "_rotationY": 0, 2213 | "_quat": { 2214 | "__type__": "cc.Quat", 2215 | "x": 0, 2216 | "y": 0, 2217 | "z": 0, 2218 | "w": 1 2219 | }, 2220 | "_skewX": 0, 2221 | "_skewY": 0, 2222 | "_zIndex": 0, 2223 | "groupIndex": 1, 2224 | "_id": "44hfpXRIZI1q3n1bfGuqx8" 2225 | }, 2226 | { 2227 | "__type__": "cc.Sprite", 2228 | "_name": "", 2229 | "_objFlags": 0, 2230 | "node": { 2231 | "__id__": 58 2232 | }, 2233 | "_enabled": false, 2234 | "_srcBlendFactor": 770, 2235 | "_dstBlendFactor": 1, 2236 | "_spriteFrame": null, 2237 | "_type": 0, 2238 | "_sizeMode": 0, 2239 | "_fillType": 0, 2240 | "_fillCenter": { 2241 | "__type__": "cc.Vec2", 2242 | "x": 0, 2243 | "y": 0 2244 | }, 2245 | "_fillStart": 0, 2246 | "_fillRange": 0, 2247 | "_isTrimmedMode": true, 2248 | "_state": 0, 2249 | "_atlas": null, 2250 | "_id": "9d1HEZETROcaEuOUtP2T06" 2251 | }, 2252 | { 2253 | "__type__": "cc.RigidBody", 2254 | "_name": "", 2255 | "_objFlags": 0, 2256 | "node": { 2257 | "__id__": 58 2258 | }, 2259 | "_enabled": true, 2260 | "_type": 2, 2261 | "_allowSleep": true, 2262 | "_gravityScale": 1, 2263 | "_linearDamping": 0.1, 2264 | "_angularDamping": 0.1, 2265 | "_linearVelocity": { 2266 | "__type__": "cc.Vec2", 2267 | "x": 0, 2268 | "y": 0 2269 | }, 2270 | "_angularVelocity": 0, 2271 | "_fixedRotation": false, 2272 | "enabledContactListener": false, 2273 | "bullet": false, 2274 | "_id": "96Txmi+1pEmYb45JO/qrEg" 2275 | }, 2276 | { 2277 | "__type__": "cc.PhysicsCircleCollider", 2278 | "_name": "", 2279 | "_objFlags": 0, 2280 | "node": { 2281 | "__id__": 58 2282 | }, 2283 | "_enabled": true, 2284 | "tag": 0, 2285 | "_density": 1, 2286 | "_sensor": false, 2287 | "_friction": 0.1, 2288 | "_restitution": 0.35, 2289 | "body": null, 2290 | "_offset": { 2291 | "__type__": "cc.Vec2", 2292 | "x": 0, 2293 | "y": 0 2294 | }, 2295 | "_radius": 13, 2296 | "_id": "ebeQt5aY1BypqTHkF3M7G0" 2297 | }, 2298 | { 2299 | "__type__": "cc.Node", 2300 | "_name": "ball_3", 2301 | "_objFlags": 0, 2302 | "_parent": { 2303 | "__id__": 9 2304 | }, 2305 | "_children": [], 2306 | "_active": true, 2307 | "_level": 2, 2308 | "_components": [ 2309 | { 2310 | "__id__": 63 2311 | }, 2312 | { 2313 | "__id__": 64 2314 | }, 2315 | { 2316 | "__id__": 65 2317 | } 2318 | ], 2319 | "_prefab": null, 2320 | "_opacity": 255, 2321 | "_color": { 2322 | "__type__": "cc.Color", 2323 | "r": 255, 2324 | "g": 255, 2325 | "b": 255, 2326 | "a": 255 2327 | }, 2328 | "_contentSize": { 2329 | "__type__": "cc.Size", 2330 | "width": 300, 2331 | "height": 300 2332 | }, 2333 | "_anchorPoint": { 2334 | "__type__": "cc.Vec2", 2335 | "x": 0.5, 2336 | "y": 0.5 2337 | }, 2338 | "_position": { 2339 | "__type__": "cc.Vec3", 2340 | "x": 107, 2341 | "y": 169.9, 2342 | "z": 0 2343 | }, 2344 | "_scale": { 2345 | "__type__": "cc.Vec3", 2346 | "x": 1, 2347 | "y": 1, 2348 | "z": 1 2349 | }, 2350 | "_rotationX": 0, 2351 | "_rotationY": 0, 2352 | "_quat": { 2353 | "__type__": "cc.Quat", 2354 | "x": 0, 2355 | "y": 0, 2356 | "z": 0, 2357 | "w": 1 2358 | }, 2359 | "_skewX": 0, 2360 | "_skewY": 0, 2361 | "_zIndex": 0, 2362 | "groupIndex": 1, 2363 | "_id": "3dGj+pLApF+b8fN/JYwzC+" 2364 | }, 2365 | { 2366 | "__type__": "cc.Sprite", 2367 | "_name": "", 2368 | "_objFlags": 0, 2369 | "node": { 2370 | "__id__": 62 2371 | }, 2372 | "_enabled": false, 2373 | "_srcBlendFactor": 770, 2374 | "_dstBlendFactor": 1, 2375 | "_spriteFrame": null, 2376 | "_type": 0, 2377 | "_sizeMode": 0, 2378 | "_fillType": 0, 2379 | "_fillCenter": { 2380 | "__type__": "cc.Vec2", 2381 | "x": 0, 2382 | "y": 0 2383 | }, 2384 | "_fillStart": 0, 2385 | "_fillRange": 0, 2386 | "_isTrimmedMode": true, 2387 | "_state": 0, 2388 | "_atlas": null, 2389 | "_id": "050O0IQqNEs5hPb+e+iXaJ" 2390 | }, 2391 | { 2392 | "__type__": "cc.RigidBody", 2393 | "_name": "", 2394 | "_objFlags": 0, 2395 | "node": { 2396 | "__id__": 62 2397 | }, 2398 | "_enabled": true, 2399 | "_type": 2, 2400 | "_allowSleep": true, 2401 | "_gravityScale": 1, 2402 | "_linearDamping": 0.1, 2403 | "_angularDamping": 0.1, 2404 | "_linearVelocity": { 2405 | "__type__": "cc.Vec2", 2406 | "x": 0, 2407 | "y": 0 2408 | }, 2409 | "_angularVelocity": 0, 2410 | "_fixedRotation": false, 2411 | "enabledContactListener": false, 2412 | "bullet": false, 2413 | "_id": "f17N3EA0FC+bupxTVeRxzk" 2414 | }, 2415 | { 2416 | "__type__": "cc.PhysicsCircleCollider", 2417 | "_name": "", 2418 | "_objFlags": 0, 2419 | "node": { 2420 | "__id__": 62 2421 | }, 2422 | "_enabled": true, 2423 | "tag": 0, 2424 | "_density": 1, 2425 | "_sensor": false, 2426 | "_friction": 0.1, 2427 | "_restitution": 0.35, 2428 | "body": null, 2429 | "_offset": { 2430 | "__type__": "cc.Vec2", 2431 | "x": 0, 2432 | "y": 0 2433 | }, 2434 | "_radius": 13, 2435 | "_id": "c7BA7RhpdJvK+aizY8zpG3" 2436 | }, 2437 | { 2438 | "__type__": "cc.Node", 2439 | "_name": "ball_3", 2440 | "_objFlags": 0, 2441 | "_parent": { 2442 | "__id__": 9 2443 | }, 2444 | "_children": [], 2445 | "_active": true, 2446 | "_level": 2, 2447 | "_components": [ 2448 | { 2449 | "__id__": 67 2450 | }, 2451 | { 2452 | "__id__": 68 2453 | }, 2454 | { 2455 | "__id__": 69 2456 | } 2457 | ], 2458 | "_prefab": null, 2459 | "_opacity": 255, 2460 | "_color": { 2461 | "__type__": "cc.Color", 2462 | "r": 255, 2463 | "g": 255, 2464 | "b": 255, 2465 | "a": 255 2466 | }, 2467 | "_contentSize": { 2468 | "__type__": "cc.Size", 2469 | "width": 300, 2470 | "height": 300 2471 | }, 2472 | "_anchorPoint": { 2473 | "__type__": "cc.Vec2", 2474 | "x": 0.5, 2475 | "y": 0.5 2476 | }, 2477 | "_position": { 2478 | "__type__": "cc.Vec3", 2479 | "x": 133, 2480 | "y": 169.9, 2481 | "z": 0 2482 | }, 2483 | "_scale": { 2484 | "__type__": "cc.Vec3", 2485 | "x": 1, 2486 | "y": 1, 2487 | "z": 1 2488 | }, 2489 | "_rotationX": 0, 2490 | "_rotationY": 0, 2491 | "_quat": { 2492 | "__type__": "cc.Quat", 2493 | "x": 0, 2494 | "y": 0, 2495 | "z": 0, 2496 | "w": 1 2497 | }, 2498 | "_skewX": 0, 2499 | "_skewY": 0, 2500 | "_zIndex": 0, 2501 | "groupIndex": 1, 2502 | "_id": "4ePl+e1F5G1rHIRKvsdW31" 2503 | }, 2504 | { 2505 | "__type__": "cc.Sprite", 2506 | "_name": "", 2507 | "_objFlags": 0, 2508 | "node": { 2509 | "__id__": 66 2510 | }, 2511 | "_enabled": false, 2512 | "_srcBlendFactor": 770, 2513 | "_dstBlendFactor": 1, 2514 | "_spriteFrame": null, 2515 | "_type": 0, 2516 | "_sizeMode": 0, 2517 | "_fillType": 0, 2518 | "_fillCenter": { 2519 | "__type__": "cc.Vec2", 2520 | "x": 0, 2521 | "y": 0 2522 | }, 2523 | "_fillStart": 0, 2524 | "_fillRange": 0, 2525 | "_isTrimmedMode": true, 2526 | "_state": 0, 2527 | "_atlas": null, 2528 | "_id": "45jsLOrbZEv4eCcD6Jx4dS" 2529 | }, 2530 | { 2531 | "__type__": "cc.RigidBody", 2532 | "_name": "", 2533 | "_objFlags": 0, 2534 | "node": { 2535 | "__id__": 66 2536 | }, 2537 | "_enabled": true, 2538 | "_type": 2, 2539 | "_allowSleep": true, 2540 | "_gravityScale": 1, 2541 | "_linearDamping": 0.1, 2542 | "_angularDamping": 0.1, 2543 | "_linearVelocity": { 2544 | "__type__": "cc.Vec2", 2545 | "x": 0, 2546 | "y": 0 2547 | }, 2548 | "_angularVelocity": 0, 2549 | "_fixedRotation": false, 2550 | "enabledContactListener": false, 2551 | "bullet": false, 2552 | "_id": "29u+nBVbdFa5YZZdCFEOka" 2553 | }, 2554 | { 2555 | "__type__": "cc.PhysicsCircleCollider", 2556 | "_name": "", 2557 | "_objFlags": 0, 2558 | "node": { 2559 | "__id__": 66 2560 | }, 2561 | "_enabled": true, 2562 | "tag": 0, 2563 | "_density": 1, 2564 | "_sensor": false, 2565 | "_friction": 0.1, 2566 | "_restitution": 0.35, 2567 | "body": null, 2568 | "_offset": { 2569 | "__type__": "cc.Vec2", 2570 | "x": 0, 2571 | "y": 0 2572 | }, 2573 | "_radius": 13, 2574 | "_id": "74/7ANoPxHVZJM5qHPH3es" 2575 | }, 2576 | { 2577 | "__type__": "cc.Node", 2578 | "_name": "ball_4", 2579 | "_objFlags": 0, 2580 | "_parent": { 2581 | "__id__": 9 2582 | }, 2583 | "_children": [], 2584 | "_active": true, 2585 | "_level": 2, 2586 | "_components": [ 2587 | { 2588 | "__id__": 71 2589 | }, 2590 | { 2591 | "__id__": 72 2592 | }, 2593 | { 2594 | "__id__": 73 2595 | } 2596 | ], 2597 | "_prefab": null, 2598 | "_opacity": 255, 2599 | "_color": { 2600 | "__type__": "cc.Color", 2601 | "r": 255, 2602 | "g": 255, 2603 | "b": 255, 2604 | "a": 255 2605 | }, 2606 | "_contentSize": { 2607 | "__type__": "cc.Size", 2608 | "width": 300, 2609 | "height": 300 2610 | }, 2611 | "_anchorPoint": { 2612 | "__type__": "cc.Vec2", 2613 | "x": 0.5, 2614 | "y": 0.5 2615 | }, 2616 | "_position": { 2617 | "__type__": "cc.Vec3", 2618 | "x": 29.1, 2619 | "y": 143.8, 2620 | "z": 0 2621 | }, 2622 | "_scale": { 2623 | "__type__": "cc.Vec3", 2624 | "x": 1, 2625 | "y": 1, 2626 | "z": 1 2627 | }, 2628 | "_rotationX": 0, 2629 | "_rotationY": 0, 2630 | "_quat": { 2631 | "__type__": "cc.Quat", 2632 | "x": 0, 2633 | "y": 0, 2634 | "z": 0, 2635 | "w": 1 2636 | }, 2637 | "_skewX": 0, 2638 | "_skewY": 0, 2639 | "_zIndex": 0, 2640 | "groupIndex": 1, 2641 | "_id": "eeO5WEzAVDPaNApQ0VxxpJ" 2642 | }, 2643 | { 2644 | "__type__": "cc.Sprite", 2645 | "_name": "", 2646 | "_objFlags": 0, 2647 | "node": { 2648 | "__id__": 70 2649 | }, 2650 | "_enabled": false, 2651 | "_srcBlendFactor": 770, 2652 | "_dstBlendFactor": 1, 2653 | "_spriteFrame": null, 2654 | "_type": 0, 2655 | "_sizeMode": 0, 2656 | "_fillType": 0, 2657 | "_fillCenter": { 2658 | "__type__": "cc.Vec2", 2659 | "x": 0, 2660 | "y": 0 2661 | }, 2662 | "_fillStart": 0, 2663 | "_fillRange": 0, 2664 | "_isTrimmedMode": true, 2665 | "_state": 0, 2666 | "_atlas": null, 2667 | "_id": "25swvJbyRGlbFJh4ICA5pa" 2668 | }, 2669 | { 2670 | "__type__": "cc.RigidBody", 2671 | "_name": "", 2672 | "_objFlags": 0, 2673 | "node": { 2674 | "__id__": 70 2675 | }, 2676 | "_enabled": true, 2677 | "_type": 2, 2678 | "_allowSleep": true, 2679 | "_gravityScale": 1, 2680 | "_linearDamping": 0.1, 2681 | "_angularDamping": 0.1, 2682 | "_linearVelocity": { 2683 | "__type__": "cc.Vec2", 2684 | "x": 0, 2685 | "y": 0 2686 | }, 2687 | "_angularVelocity": 0, 2688 | "_fixedRotation": false, 2689 | "enabledContactListener": false, 2690 | "bullet": false, 2691 | "_id": "6b3FwRStpFwoey3lVZu18m" 2692 | }, 2693 | { 2694 | "__type__": "cc.PhysicsCircleCollider", 2695 | "_name": "", 2696 | "_objFlags": 0, 2697 | "node": { 2698 | "__id__": 70 2699 | }, 2700 | "_enabled": true, 2701 | "tag": 0, 2702 | "_density": 1, 2703 | "_sensor": false, 2704 | "_friction": 0.1, 2705 | "_restitution": 0.35, 2706 | "body": null, 2707 | "_offset": { 2708 | "__type__": "cc.Vec2", 2709 | "x": 0, 2710 | "y": 0 2711 | }, 2712 | "_radius": 13, 2713 | "_id": "a1tMFo1DdE3p5uV9XWjv42" 2714 | }, 2715 | { 2716 | "__type__": "cc.Node", 2717 | "_name": "ball_4", 2718 | "_objFlags": 0, 2719 | "_parent": { 2720 | "__id__": 9 2721 | }, 2722 | "_children": [], 2723 | "_active": true, 2724 | "_level": 2, 2725 | "_components": [ 2726 | { 2727 | "__id__": 75 2728 | }, 2729 | { 2730 | "__id__": 76 2731 | }, 2732 | { 2733 | "__id__": 77 2734 | } 2735 | ], 2736 | "_prefab": null, 2737 | "_opacity": 255, 2738 | "_color": { 2739 | "__type__": "cc.Color", 2740 | "r": 255, 2741 | "g": 255, 2742 | "b": 255, 2743 | "a": 255 2744 | }, 2745 | "_contentSize": { 2746 | "__type__": "cc.Size", 2747 | "width": 300, 2748 | "height": 300 2749 | }, 2750 | "_anchorPoint": { 2751 | "__type__": "cc.Vec2", 2752 | "x": 0.5, 2753 | "y": 0.5 2754 | }, 2755 | "_position": { 2756 | "__type__": "cc.Vec3", 2757 | "x": 55.1, 2758 | "y": 143.8, 2759 | "z": 0 2760 | }, 2761 | "_scale": { 2762 | "__type__": "cc.Vec3", 2763 | "x": 1, 2764 | "y": 1, 2765 | "z": 1 2766 | }, 2767 | "_rotationX": 0, 2768 | "_rotationY": 0, 2769 | "_quat": { 2770 | "__type__": "cc.Quat", 2771 | "x": 0, 2772 | "y": 0, 2773 | "z": 0, 2774 | "w": 1 2775 | }, 2776 | "_skewX": 0, 2777 | "_skewY": 0, 2778 | "_zIndex": 0, 2779 | "groupIndex": 1, 2780 | "_id": "0bE+/kOkhCW4jjj/GrFmhL" 2781 | }, 2782 | { 2783 | "__type__": "cc.Sprite", 2784 | "_name": "", 2785 | "_objFlags": 0, 2786 | "node": { 2787 | "__id__": 74 2788 | }, 2789 | "_enabled": false, 2790 | "_srcBlendFactor": 770, 2791 | "_dstBlendFactor": 1, 2792 | "_spriteFrame": null, 2793 | "_type": 0, 2794 | "_sizeMode": 0, 2795 | "_fillType": 0, 2796 | "_fillCenter": { 2797 | "__type__": "cc.Vec2", 2798 | "x": 0, 2799 | "y": 0 2800 | }, 2801 | "_fillStart": 0, 2802 | "_fillRange": 0, 2803 | "_isTrimmedMode": true, 2804 | "_state": 0, 2805 | "_atlas": null, 2806 | "_id": "8fKweA/PhH3pGPdjwp45Sq" 2807 | }, 2808 | { 2809 | "__type__": "cc.RigidBody", 2810 | "_name": "", 2811 | "_objFlags": 0, 2812 | "node": { 2813 | "__id__": 74 2814 | }, 2815 | "_enabled": true, 2816 | "_type": 2, 2817 | "_allowSleep": true, 2818 | "_gravityScale": 1, 2819 | "_linearDamping": 0.1, 2820 | "_angularDamping": 0.1, 2821 | "_linearVelocity": { 2822 | "__type__": "cc.Vec2", 2823 | "x": 0, 2824 | "y": 0 2825 | }, 2826 | "_angularVelocity": 0, 2827 | "_fixedRotation": false, 2828 | "enabledContactListener": false, 2829 | "bullet": false, 2830 | "_id": "28K5R8y6ZGfrC4hUkQKnJK" 2831 | }, 2832 | { 2833 | "__type__": "cc.PhysicsCircleCollider", 2834 | "_name": "", 2835 | "_objFlags": 0, 2836 | "node": { 2837 | "__id__": 74 2838 | }, 2839 | "_enabled": true, 2840 | "tag": 0, 2841 | "_density": 1, 2842 | "_sensor": false, 2843 | "_friction": 0.1, 2844 | "_restitution": 0.35, 2845 | "body": null, 2846 | "_offset": { 2847 | "__type__": "cc.Vec2", 2848 | "x": 0, 2849 | "y": 0 2850 | }, 2851 | "_radius": 13, 2852 | "_id": "61YWi2XF1AoqS1HF65106G" 2853 | }, 2854 | { 2855 | "__type__": "cc.Node", 2856 | "_name": "ball_4", 2857 | "_objFlags": 0, 2858 | "_parent": { 2859 | "__id__": 9 2860 | }, 2861 | "_children": [], 2862 | "_active": true, 2863 | "_level": 2, 2864 | "_components": [ 2865 | { 2866 | "__id__": 79 2867 | }, 2868 | { 2869 | "__id__": 80 2870 | }, 2871 | { 2872 | "__id__": 81 2873 | } 2874 | ], 2875 | "_prefab": null, 2876 | "_opacity": 255, 2877 | "_color": { 2878 | "__type__": "cc.Color", 2879 | "r": 255, 2880 | "g": 255, 2881 | "b": 255, 2882 | "a": 255 2883 | }, 2884 | "_contentSize": { 2885 | "__type__": "cc.Size", 2886 | "width": 300, 2887 | "height": 300 2888 | }, 2889 | "_anchorPoint": { 2890 | "__type__": "cc.Vec2", 2891 | "x": 0.5, 2892 | "y": 0.5 2893 | }, 2894 | "_position": { 2895 | "__type__": "cc.Vec3", 2896 | "x": 81.1, 2897 | "y": 143.8, 2898 | "z": 0 2899 | }, 2900 | "_scale": { 2901 | "__type__": "cc.Vec3", 2902 | "x": 1, 2903 | "y": 1, 2904 | "z": 1 2905 | }, 2906 | "_rotationX": 0, 2907 | "_rotationY": 0, 2908 | "_quat": { 2909 | "__type__": "cc.Quat", 2910 | "x": 0, 2911 | "y": 0, 2912 | "z": 0, 2913 | "w": 1 2914 | }, 2915 | "_skewX": 0, 2916 | "_skewY": 0, 2917 | "_zIndex": 0, 2918 | "groupIndex": 1, 2919 | "_id": "a4IeGPSY1KpIzzF7QFO14Y" 2920 | }, 2921 | { 2922 | "__type__": "cc.Sprite", 2923 | "_name": "", 2924 | "_objFlags": 0, 2925 | "node": { 2926 | "__id__": 78 2927 | }, 2928 | "_enabled": false, 2929 | "_srcBlendFactor": 770, 2930 | "_dstBlendFactor": 1, 2931 | "_spriteFrame": null, 2932 | "_type": 0, 2933 | "_sizeMode": 0, 2934 | "_fillType": 0, 2935 | "_fillCenter": { 2936 | "__type__": "cc.Vec2", 2937 | "x": 0, 2938 | "y": 0 2939 | }, 2940 | "_fillStart": 0, 2941 | "_fillRange": 0, 2942 | "_isTrimmedMode": true, 2943 | "_state": 0, 2944 | "_atlas": null, 2945 | "_id": "58HgMhRCBD+5QmaKTQDPDm" 2946 | }, 2947 | { 2948 | "__type__": "cc.RigidBody", 2949 | "_name": "", 2950 | "_objFlags": 0, 2951 | "node": { 2952 | "__id__": 78 2953 | }, 2954 | "_enabled": true, 2955 | "_type": 2, 2956 | "_allowSleep": true, 2957 | "_gravityScale": 1, 2958 | "_linearDamping": 0.1, 2959 | "_angularDamping": 0.1, 2960 | "_linearVelocity": { 2961 | "__type__": "cc.Vec2", 2962 | "x": 0, 2963 | "y": 0 2964 | }, 2965 | "_angularVelocity": 0, 2966 | "_fixedRotation": false, 2967 | "enabledContactListener": false, 2968 | "bullet": false, 2969 | "_id": "0b+pzJAxtL+qn8eta5dhJd" 2970 | }, 2971 | { 2972 | "__type__": "cc.PhysicsCircleCollider", 2973 | "_name": "", 2974 | "_objFlags": 0, 2975 | "node": { 2976 | "__id__": 78 2977 | }, 2978 | "_enabled": true, 2979 | "tag": 0, 2980 | "_density": 1, 2981 | "_sensor": false, 2982 | "_friction": 0.1, 2983 | "_restitution": 0.35, 2984 | "body": null, 2985 | "_offset": { 2986 | "__type__": "cc.Vec2", 2987 | "x": 0, 2988 | "y": 0 2989 | }, 2990 | "_radius": 13, 2991 | "_id": "bdp9Dbf7lMI6MRR3JWB9Ea" 2992 | }, 2993 | { 2994 | "__type__": "cc.Node", 2995 | "_name": "ball_4", 2996 | "_objFlags": 0, 2997 | "_parent": { 2998 | "__id__": 9 2999 | }, 3000 | "_children": [], 3001 | "_active": true, 3002 | "_level": 2, 3003 | "_components": [ 3004 | { 3005 | "__id__": 83 3006 | }, 3007 | { 3008 | "__id__": 84 3009 | }, 3010 | { 3011 | "__id__": 85 3012 | } 3013 | ], 3014 | "_prefab": null, 3015 | "_opacity": 255, 3016 | "_color": { 3017 | "__type__": "cc.Color", 3018 | "r": 255, 3019 | "g": 255, 3020 | "b": 255, 3021 | "a": 255 3022 | }, 3023 | "_contentSize": { 3024 | "__type__": "cc.Size", 3025 | "width": 300, 3026 | "height": 300 3027 | }, 3028 | "_anchorPoint": { 3029 | "__type__": "cc.Vec2", 3030 | "x": 0.5, 3031 | "y": 0.5 3032 | }, 3033 | "_position": { 3034 | "__type__": "cc.Vec3", 3035 | "x": 107, 3036 | "y": 143.8, 3037 | "z": 0 3038 | }, 3039 | "_scale": { 3040 | "__type__": "cc.Vec3", 3041 | "x": 1, 3042 | "y": 1, 3043 | "z": 1 3044 | }, 3045 | "_rotationX": 0, 3046 | "_rotationY": 0, 3047 | "_quat": { 3048 | "__type__": "cc.Quat", 3049 | "x": 0, 3050 | "y": 0, 3051 | "z": 0, 3052 | "w": 1 3053 | }, 3054 | "_skewX": 0, 3055 | "_skewY": 0, 3056 | "_zIndex": 0, 3057 | "groupIndex": 1, 3058 | "_id": "1a8mv9f1RCir2FFfsxetOP" 3059 | }, 3060 | { 3061 | "__type__": "cc.Sprite", 3062 | "_name": "", 3063 | "_objFlags": 0, 3064 | "node": { 3065 | "__id__": 82 3066 | }, 3067 | "_enabled": false, 3068 | "_srcBlendFactor": 770, 3069 | "_dstBlendFactor": 1, 3070 | "_spriteFrame": null, 3071 | "_type": 0, 3072 | "_sizeMode": 0, 3073 | "_fillType": 0, 3074 | "_fillCenter": { 3075 | "__type__": "cc.Vec2", 3076 | "x": 0, 3077 | "y": 0 3078 | }, 3079 | "_fillStart": 0, 3080 | "_fillRange": 0, 3081 | "_isTrimmedMode": true, 3082 | "_state": 0, 3083 | "_atlas": null, 3084 | "_id": "8bshEEvPFPk54xYcs8GR5i" 3085 | }, 3086 | { 3087 | "__type__": "cc.RigidBody", 3088 | "_name": "", 3089 | "_objFlags": 0, 3090 | "node": { 3091 | "__id__": 82 3092 | }, 3093 | "_enabled": true, 3094 | "_type": 2, 3095 | "_allowSleep": true, 3096 | "_gravityScale": 1, 3097 | "_linearDamping": 0.1, 3098 | "_angularDamping": 0.1, 3099 | "_linearVelocity": { 3100 | "__type__": "cc.Vec2", 3101 | "x": 0, 3102 | "y": 0 3103 | }, 3104 | "_angularVelocity": 0, 3105 | "_fixedRotation": false, 3106 | "enabledContactListener": false, 3107 | "bullet": false, 3108 | "_id": "aebvMJP2xD8a71xZWoDhau" 3109 | }, 3110 | { 3111 | "__type__": "cc.PhysicsCircleCollider", 3112 | "_name": "", 3113 | "_objFlags": 0, 3114 | "node": { 3115 | "__id__": 82 3116 | }, 3117 | "_enabled": true, 3118 | "tag": 0, 3119 | "_density": 1, 3120 | "_sensor": false, 3121 | "_friction": 0.1, 3122 | "_restitution": 0.35, 3123 | "body": null, 3124 | "_offset": { 3125 | "__type__": "cc.Vec2", 3126 | "x": 0, 3127 | "y": 0 3128 | }, 3129 | "_radius": 13, 3130 | "_id": "795K+D2qZD6ZpmsgeOo7tW" 3131 | }, 3132 | { 3133 | "__type__": "cc.Node", 3134 | "_name": "ball_4", 3135 | "_objFlags": 0, 3136 | "_parent": { 3137 | "__id__": 9 3138 | }, 3139 | "_children": [], 3140 | "_active": true, 3141 | "_level": 2, 3142 | "_components": [ 3143 | { 3144 | "__id__": 87 3145 | }, 3146 | { 3147 | "__id__": 88 3148 | }, 3149 | { 3150 | "__id__": 89 3151 | } 3152 | ], 3153 | "_prefab": null, 3154 | "_opacity": 255, 3155 | "_color": { 3156 | "__type__": "cc.Color", 3157 | "r": 255, 3158 | "g": 255, 3159 | "b": 255, 3160 | "a": 255 3161 | }, 3162 | "_contentSize": { 3163 | "__type__": "cc.Size", 3164 | "width": 300, 3165 | "height": 300 3166 | }, 3167 | "_anchorPoint": { 3168 | "__type__": "cc.Vec2", 3169 | "x": 0.5, 3170 | "y": 0.5 3171 | }, 3172 | "_position": { 3173 | "__type__": "cc.Vec3", 3174 | "x": 133, 3175 | "y": 143.8, 3176 | "z": 0 3177 | }, 3178 | "_scale": { 3179 | "__type__": "cc.Vec3", 3180 | "x": 1, 3181 | "y": 1, 3182 | "z": 1 3183 | }, 3184 | "_rotationX": 0, 3185 | "_rotationY": 0, 3186 | "_quat": { 3187 | "__type__": "cc.Quat", 3188 | "x": 0, 3189 | "y": 0, 3190 | "z": 0, 3191 | "w": 1 3192 | }, 3193 | "_skewX": 0, 3194 | "_skewY": 0, 3195 | "_zIndex": 0, 3196 | "groupIndex": 1, 3197 | "_id": "412ELyWPFPG7wtS3+lftYY" 3198 | }, 3199 | { 3200 | "__type__": "cc.Sprite", 3201 | "_name": "", 3202 | "_objFlags": 0, 3203 | "node": { 3204 | "__id__": 86 3205 | }, 3206 | "_enabled": false, 3207 | "_srcBlendFactor": 770, 3208 | "_dstBlendFactor": 1, 3209 | "_spriteFrame": null, 3210 | "_type": 0, 3211 | "_sizeMode": 0, 3212 | "_fillType": 0, 3213 | "_fillCenter": { 3214 | "__type__": "cc.Vec2", 3215 | "x": 0, 3216 | "y": 0 3217 | }, 3218 | "_fillStart": 0, 3219 | "_fillRange": 0, 3220 | "_isTrimmedMode": true, 3221 | "_state": 0, 3222 | "_atlas": null, 3223 | "_id": "cagUJI0e5MlJVbgjqvN7Sw" 3224 | }, 3225 | { 3226 | "__type__": "cc.RigidBody", 3227 | "_name": "", 3228 | "_objFlags": 0, 3229 | "node": { 3230 | "__id__": 86 3231 | }, 3232 | "_enabled": true, 3233 | "_type": 2, 3234 | "_allowSleep": true, 3235 | "_gravityScale": 1, 3236 | "_linearDamping": 0.1, 3237 | "_angularDamping": 0.1, 3238 | "_linearVelocity": { 3239 | "__type__": "cc.Vec2", 3240 | "x": 0, 3241 | "y": 0 3242 | }, 3243 | "_angularVelocity": 0, 3244 | "_fixedRotation": false, 3245 | "enabledContactListener": false, 3246 | "bullet": false, 3247 | "_id": "a2IoT/re1NzZUtieg2QkwX" 3248 | }, 3249 | { 3250 | "__type__": "cc.PhysicsCircleCollider", 3251 | "_name": "", 3252 | "_objFlags": 0, 3253 | "node": { 3254 | "__id__": 86 3255 | }, 3256 | "_enabled": true, 3257 | "tag": 0, 3258 | "_density": 1, 3259 | "_sensor": false, 3260 | "_friction": 0.1, 3261 | "_restitution": 0.35, 3262 | "body": null, 3263 | "_offset": { 3264 | "__type__": "cc.Vec2", 3265 | "x": 0, 3266 | "y": 0 3267 | }, 3268 | "_radius": 13, 3269 | "_id": "db0cWqXHtJXrePoZcZE2ua" 3270 | }, 3271 | { 3272 | "__type__": "cc.Node", 3273 | "_name": "ball_5", 3274 | "_objFlags": 0, 3275 | "_parent": { 3276 | "__id__": 9 3277 | }, 3278 | "_children": [], 3279 | "_active": true, 3280 | "_level": 2, 3281 | "_components": [ 3282 | { 3283 | "__id__": 91 3284 | }, 3285 | { 3286 | "__id__": 92 3287 | }, 3288 | { 3289 | "__id__": 93 3290 | } 3291 | ], 3292 | "_prefab": null, 3293 | "_opacity": 255, 3294 | "_color": { 3295 | "__type__": "cc.Color", 3296 | "r": 255, 3297 | "g": 255, 3298 | "b": 255, 3299 | "a": 255 3300 | }, 3301 | "_contentSize": { 3302 | "__type__": "cc.Size", 3303 | "width": 300, 3304 | "height": 300 3305 | }, 3306 | "_anchorPoint": { 3307 | "__type__": "cc.Vec2", 3308 | "x": 0.5, 3309 | "y": 0.5 3310 | }, 3311 | "_position": { 3312 | "__type__": "cc.Vec3", 3313 | "x": 29.1, 3314 | "y": 117.7, 3315 | "z": 0 3316 | }, 3317 | "_scale": { 3318 | "__type__": "cc.Vec3", 3319 | "x": 1, 3320 | "y": 1, 3321 | "z": 1 3322 | }, 3323 | "_rotationX": 0, 3324 | "_rotationY": 0, 3325 | "_quat": { 3326 | "__type__": "cc.Quat", 3327 | "x": 0, 3328 | "y": 0, 3329 | "z": 0, 3330 | "w": 1 3331 | }, 3332 | "_skewX": 0, 3333 | "_skewY": 0, 3334 | "_zIndex": 0, 3335 | "groupIndex": 1, 3336 | "_id": "31mAYGcWhC+aTcjZMfXxGv" 3337 | }, 3338 | { 3339 | "__type__": "cc.Sprite", 3340 | "_name": "", 3341 | "_objFlags": 0, 3342 | "node": { 3343 | "__id__": 90 3344 | }, 3345 | "_enabled": false, 3346 | "_srcBlendFactor": 770, 3347 | "_dstBlendFactor": 1, 3348 | "_spriteFrame": null, 3349 | "_type": 0, 3350 | "_sizeMode": 0, 3351 | "_fillType": 0, 3352 | "_fillCenter": { 3353 | "__type__": "cc.Vec2", 3354 | "x": 0, 3355 | "y": 0 3356 | }, 3357 | "_fillStart": 0, 3358 | "_fillRange": 0, 3359 | "_isTrimmedMode": true, 3360 | "_state": 0, 3361 | "_atlas": null, 3362 | "_id": "2fizZiK2xMMoFmt5bQlxOb" 3363 | }, 3364 | { 3365 | "__type__": "cc.RigidBody", 3366 | "_name": "", 3367 | "_objFlags": 0, 3368 | "node": { 3369 | "__id__": 90 3370 | }, 3371 | "_enabled": true, 3372 | "_type": 2, 3373 | "_allowSleep": true, 3374 | "_gravityScale": 1, 3375 | "_linearDamping": 0.1, 3376 | "_angularDamping": 0.1, 3377 | "_linearVelocity": { 3378 | "__type__": "cc.Vec2", 3379 | "x": 0, 3380 | "y": 0 3381 | }, 3382 | "_angularVelocity": 0, 3383 | "_fixedRotation": false, 3384 | "enabledContactListener": false, 3385 | "bullet": false, 3386 | "_id": "19tTJosu5LkaQRuYW8ckbm" 3387 | }, 3388 | { 3389 | "__type__": "cc.PhysicsCircleCollider", 3390 | "_name": "", 3391 | "_objFlags": 0, 3392 | "node": { 3393 | "__id__": 90 3394 | }, 3395 | "_enabled": true, 3396 | "tag": 0, 3397 | "_density": 1, 3398 | "_sensor": false, 3399 | "_friction": 0.1, 3400 | "_restitution": 0.35, 3401 | "body": null, 3402 | "_offset": { 3403 | "__type__": "cc.Vec2", 3404 | "x": 0, 3405 | "y": 0 3406 | }, 3407 | "_radius": 13, 3408 | "_id": "55nB+DzH1EQbuhum0pKpCg" 3409 | }, 3410 | { 3411 | "__type__": "cc.Node", 3412 | "_name": "ball_5", 3413 | "_objFlags": 0, 3414 | "_parent": { 3415 | "__id__": 9 3416 | }, 3417 | "_children": [], 3418 | "_active": true, 3419 | "_level": 2, 3420 | "_components": [ 3421 | { 3422 | "__id__": 95 3423 | }, 3424 | { 3425 | "__id__": 96 3426 | }, 3427 | { 3428 | "__id__": 97 3429 | } 3430 | ], 3431 | "_prefab": null, 3432 | "_opacity": 255, 3433 | "_color": { 3434 | "__type__": "cc.Color", 3435 | "r": 255, 3436 | "g": 255, 3437 | "b": 255, 3438 | "a": 255 3439 | }, 3440 | "_contentSize": { 3441 | "__type__": "cc.Size", 3442 | "width": 300, 3443 | "height": 300 3444 | }, 3445 | "_anchorPoint": { 3446 | "__type__": "cc.Vec2", 3447 | "x": 0.5, 3448 | "y": 0.5 3449 | }, 3450 | "_position": { 3451 | "__type__": "cc.Vec3", 3452 | "x": 55.1, 3453 | "y": 117.7, 3454 | "z": 0 3455 | }, 3456 | "_scale": { 3457 | "__type__": "cc.Vec3", 3458 | "x": 1, 3459 | "y": 1, 3460 | "z": 1 3461 | }, 3462 | "_rotationX": 0, 3463 | "_rotationY": 0, 3464 | "_quat": { 3465 | "__type__": "cc.Quat", 3466 | "x": 0, 3467 | "y": 0, 3468 | "z": 0, 3469 | "w": 1 3470 | }, 3471 | "_skewX": 0, 3472 | "_skewY": 0, 3473 | "_zIndex": 0, 3474 | "groupIndex": 1, 3475 | "_id": "7625g3+oZFeqfNRB/QNvIt" 3476 | }, 3477 | { 3478 | "__type__": "cc.Sprite", 3479 | "_name": "", 3480 | "_objFlags": 0, 3481 | "node": { 3482 | "__id__": 94 3483 | }, 3484 | "_enabled": false, 3485 | "_srcBlendFactor": 770, 3486 | "_dstBlendFactor": 1, 3487 | "_spriteFrame": null, 3488 | "_type": 0, 3489 | "_sizeMode": 0, 3490 | "_fillType": 0, 3491 | "_fillCenter": { 3492 | "__type__": "cc.Vec2", 3493 | "x": 0, 3494 | "y": 0 3495 | }, 3496 | "_fillStart": 0, 3497 | "_fillRange": 0, 3498 | "_isTrimmedMode": true, 3499 | "_state": 0, 3500 | "_atlas": null, 3501 | "_id": "8ft1U3GihP8a2J6gKtxkgu" 3502 | }, 3503 | { 3504 | "__type__": "cc.RigidBody", 3505 | "_name": "", 3506 | "_objFlags": 0, 3507 | "node": { 3508 | "__id__": 94 3509 | }, 3510 | "_enabled": true, 3511 | "_type": 2, 3512 | "_allowSleep": true, 3513 | "_gravityScale": 1, 3514 | "_linearDamping": 0.1, 3515 | "_angularDamping": 0.1, 3516 | "_linearVelocity": { 3517 | "__type__": "cc.Vec2", 3518 | "x": 0, 3519 | "y": 0 3520 | }, 3521 | "_angularVelocity": 0, 3522 | "_fixedRotation": false, 3523 | "enabledContactListener": false, 3524 | "bullet": false, 3525 | "_id": "daKNj2l15KOJLaHQPj8G0N" 3526 | }, 3527 | { 3528 | "__type__": "cc.PhysicsCircleCollider", 3529 | "_name": "", 3530 | "_objFlags": 0, 3531 | "node": { 3532 | "__id__": 94 3533 | }, 3534 | "_enabled": true, 3535 | "tag": 0, 3536 | "_density": 1, 3537 | "_sensor": false, 3538 | "_friction": 0.1, 3539 | "_restitution": 0.35, 3540 | "body": null, 3541 | "_offset": { 3542 | "__type__": "cc.Vec2", 3543 | "x": 0, 3544 | "y": 0 3545 | }, 3546 | "_radius": 13, 3547 | "_id": "78hraWoP9FVaHm7PGePHM3" 3548 | }, 3549 | { 3550 | "__type__": "cc.Node", 3551 | "_name": "ball_5", 3552 | "_objFlags": 0, 3553 | "_parent": { 3554 | "__id__": 9 3555 | }, 3556 | "_children": [], 3557 | "_active": true, 3558 | "_level": 2, 3559 | "_components": [ 3560 | { 3561 | "__id__": 99 3562 | }, 3563 | { 3564 | "__id__": 100 3565 | }, 3566 | { 3567 | "__id__": 101 3568 | } 3569 | ], 3570 | "_prefab": null, 3571 | "_opacity": 255, 3572 | "_color": { 3573 | "__type__": "cc.Color", 3574 | "r": 255, 3575 | "g": 255, 3576 | "b": 255, 3577 | "a": 255 3578 | }, 3579 | "_contentSize": { 3580 | "__type__": "cc.Size", 3581 | "width": 300, 3582 | "height": 300 3583 | }, 3584 | "_anchorPoint": { 3585 | "__type__": "cc.Vec2", 3586 | "x": 0.5, 3587 | "y": 0.5 3588 | }, 3589 | "_position": { 3590 | "__type__": "cc.Vec3", 3591 | "x": 81.1, 3592 | "y": 117.7, 3593 | "z": 0 3594 | }, 3595 | "_scale": { 3596 | "__type__": "cc.Vec3", 3597 | "x": 1, 3598 | "y": 1, 3599 | "z": 1 3600 | }, 3601 | "_rotationX": 0, 3602 | "_rotationY": 0, 3603 | "_quat": { 3604 | "__type__": "cc.Quat", 3605 | "x": 0, 3606 | "y": 0, 3607 | "z": 0, 3608 | "w": 1 3609 | }, 3610 | "_skewX": 0, 3611 | "_skewY": 0, 3612 | "_zIndex": 0, 3613 | "groupIndex": 1, 3614 | "_id": "feOT5wlGRBiqduce6b6LCL" 3615 | }, 3616 | { 3617 | "__type__": "cc.Sprite", 3618 | "_name": "", 3619 | "_objFlags": 0, 3620 | "node": { 3621 | "__id__": 98 3622 | }, 3623 | "_enabled": false, 3624 | "_srcBlendFactor": 770, 3625 | "_dstBlendFactor": 1, 3626 | "_spriteFrame": null, 3627 | "_type": 0, 3628 | "_sizeMode": 0, 3629 | "_fillType": 0, 3630 | "_fillCenter": { 3631 | "__type__": "cc.Vec2", 3632 | "x": 0, 3633 | "y": 0 3634 | }, 3635 | "_fillStart": 0, 3636 | "_fillRange": 0, 3637 | "_isTrimmedMode": true, 3638 | "_state": 0, 3639 | "_atlas": null, 3640 | "_id": "0cBiJBRMlFC41G8+YHEjZ/" 3641 | }, 3642 | { 3643 | "__type__": "cc.RigidBody", 3644 | "_name": "", 3645 | "_objFlags": 0, 3646 | "node": { 3647 | "__id__": 98 3648 | }, 3649 | "_enabled": true, 3650 | "_type": 2, 3651 | "_allowSleep": true, 3652 | "_gravityScale": 1, 3653 | "_linearDamping": 0.1, 3654 | "_angularDamping": 0.1, 3655 | "_linearVelocity": { 3656 | "__type__": "cc.Vec2", 3657 | "x": 0, 3658 | "y": 0 3659 | }, 3660 | "_angularVelocity": 0, 3661 | "_fixedRotation": false, 3662 | "enabledContactListener": false, 3663 | "bullet": false, 3664 | "_id": "51VMd3B2BM3ryGADnUKknJ" 3665 | }, 3666 | { 3667 | "__type__": "cc.PhysicsCircleCollider", 3668 | "_name": "", 3669 | "_objFlags": 0, 3670 | "node": { 3671 | "__id__": 98 3672 | }, 3673 | "_enabled": true, 3674 | "tag": 0, 3675 | "_density": 1, 3676 | "_sensor": false, 3677 | "_friction": 0.1, 3678 | "_restitution": 0.35, 3679 | "body": null, 3680 | "_offset": { 3681 | "__type__": "cc.Vec2", 3682 | "x": 0, 3683 | "y": 0 3684 | }, 3685 | "_radius": 13, 3686 | "_id": "0cFBUdGxNNtq85i+PoqpUX" 3687 | }, 3688 | { 3689 | "__type__": "cc.Node", 3690 | "_name": "ball_5", 3691 | "_objFlags": 0, 3692 | "_parent": { 3693 | "__id__": 9 3694 | }, 3695 | "_children": [], 3696 | "_active": true, 3697 | "_level": 2, 3698 | "_components": [ 3699 | { 3700 | "__id__": 103 3701 | }, 3702 | { 3703 | "__id__": 104 3704 | }, 3705 | { 3706 | "__id__": 105 3707 | } 3708 | ], 3709 | "_prefab": null, 3710 | "_opacity": 255, 3711 | "_color": { 3712 | "__type__": "cc.Color", 3713 | "r": 255, 3714 | "g": 255, 3715 | "b": 255, 3716 | "a": 255 3717 | }, 3718 | "_contentSize": { 3719 | "__type__": "cc.Size", 3720 | "width": 300, 3721 | "height": 300 3722 | }, 3723 | "_anchorPoint": { 3724 | "__type__": "cc.Vec2", 3725 | "x": 0.5, 3726 | "y": 0.5 3727 | }, 3728 | "_position": { 3729 | "__type__": "cc.Vec3", 3730 | "x": 107, 3731 | "y": 117.7, 3732 | "z": 0 3733 | }, 3734 | "_scale": { 3735 | "__type__": "cc.Vec3", 3736 | "x": 1, 3737 | "y": 1, 3738 | "z": 1 3739 | }, 3740 | "_rotationX": 0, 3741 | "_rotationY": 0, 3742 | "_quat": { 3743 | "__type__": "cc.Quat", 3744 | "x": 0, 3745 | "y": 0, 3746 | "z": 0, 3747 | "w": 1 3748 | }, 3749 | "_skewX": 0, 3750 | "_skewY": 0, 3751 | "_zIndex": 0, 3752 | "groupIndex": 1, 3753 | "_id": "79ylRmPGRPOrKinodz/bco" 3754 | }, 3755 | { 3756 | "__type__": "cc.Sprite", 3757 | "_name": "", 3758 | "_objFlags": 0, 3759 | "node": { 3760 | "__id__": 102 3761 | }, 3762 | "_enabled": false, 3763 | "_srcBlendFactor": 770, 3764 | "_dstBlendFactor": 1, 3765 | "_spriteFrame": null, 3766 | "_type": 0, 3767 | "_sizeMode": 0, 3768 | "_fillType": 0, 3769 | "_fillCenter": { 3770 | "__type__": "cc.Vec2", 3771 | "x": 0, 3772 | "y": 0 3773 | }, 3774 | "_fillStart": 0, 3775 | "_fillRange": 0, 3776 | "_isTrimmedMode": true, 3777 | "_state": 0, 3778 | "_atlas": null, 3779 | "_id": "93BJwhTf1E/IuD+jaEvP/I" 3780 | }, 3781 | { 3782 | "__type__": "cc.RigidBody", 3783 | "_name": "", 3784 | "_objFlags": 0, 3785 | "node": { 3786 | "__id__": 102 3787 | }, 3788 | "_enabled": true, 3789 | "_type": 2, 3790 | "_allowSleep": true, 3791 | "_gravityScale": 1, 3792 | "_linearDamping": 0.1, 3793 | "_angularDamping": 0.1, 3794 | "_linearVelocity": { 3795 | "__type__": "cc.Vec2", 3796 | "x": 0, 3797 | "y": 0 3798 | }, 3799 | "_angularVelocity": 0, 3800 | "_fixedRotation": false, 3801 | "enabledContactListener": false, 3802 | "bullet": false, 3803 | "_id": "ddoN6RCXFDeJAKUtNjYZy+" 3804 | }, 3805 | { 3806 | "__type__": "cc.PhysicsCircleCollider", 3807 | "_name": "", 3808 | "_objFlags": 0, 3809 | "node": { 3810 | "__id__": 102 3811 | }, 3812 | "_enabled": true, 3813 | "tag": 0, 3814 | "_density": 1, 3815 | "_sensor": false, 3816 | "_friction": 0.1, 3817 | "_restitution": 0.35, 3818 | "body": null, 3819 | "_offset": { 3820 | "__type__": "cc.Vec2", 3821 | "x": 0, 3822 | "y": 0 3823 | }, 3824 | "_radius": 13, 3825 | "_id": "208drb1k9IFIZiiXzprx4Z" 3826 | }, 3827 | { 3828 | "__type__": "cc.Node", 3829 | "_name": "ball_5", 3830 | "_objFlags": 0, 3831 | "_parent": { 3832 | "__id__": 9 3833 | }, 3834 | "_children": [], 3835 | "_active": true, 3836 | "_level": 2, 3837 | "_components": [ 3838 | { 3839 | "__id__": 107 3840 | }, 3841 | { 3842 | "__id__": 108 3843 | }, 3844 | { 3845 | "__id__": 109 3846 | } 3847 | ], 3848 | "_prefab": null, 3849 | "_opacity": 255, 3850 | "_color": { 3851 | "__type__": "cc.Color", 3852 | "r": 255, 3853 | "g": 255, 3854 | "b": 255, 3855 | "a": 255 3856 | }, 3857 | "_contentSize": { 3858 | "__type__": "cc.Size", 3859 | "width": 300, 3860 | "height": 300 3861 | }, 3862 | "_anchorPoint": { 3863 | "__type__": "cc.Vec2", 3864 | "x": 0.5, 3865 | "y": 0.5 3866 | }, 3867 | "_position": { 3868 | "__type__": "cc.Vec3", 3869 | "x": 133, 3870 | "y": 117.7, 3871 | "z": 0 3872 | }, 3873 | "_scale": { 3874 | "__type__": "cc.Vec3", 3875 | "x": 1, 3876 | "y": 1, 3877 | "z": 1 3878 | }, 3879 | "_rotationX": 0, 3880 | "_rotationY": 0, 3881 | "_quat": { 3882 | "__type__": "cc.Quat", 3883 | "x": 0, 3884 | "y": 0, 3885 | "z": 0, 3886 | "w": 1 3887 | }, 3888 | "_skewX": 0, 3889 | "_skewY": 0, 3890 | "_zIndex": 0, 3891 | "groupIndex": 1, 3892 | "_id": "20AvBtgqFGzK9zyke2Qmrs" 3893 | }, 3894 | { 3895 | "__type__": "cc.Sprite", 3896 | "_name": "", 3897 | "_objFlags": 0, 3898 | "node": { 3899 | "__id__": 106 3900 | }, 3901 | "_enabled": false, 3902 | "_srcBlendFactor": 770, 3903 | "_dstBlendFactor": 1, 3904 | "_spriteFrame": null, 3905 | "_type": 0, 3906 | "_sizeMode": 0, 3907 | "_fillType": 0, 3908 | "_fillCenter": { 3909 | "__type__": "cc.Vec2", 3910 | "x": 0, 3911 | "y": 0 3912 | }, 3913 | "_fillStart": 0, 3914 | "_fillRange": 0, 3915 | "_isTrimmedMode": true, 3916 | "_state": 0, 3917 | "_atlas": null, 3918 | "_id": "8egjv11KtP1r8QPbaDd3Qz" 3919 | }, 3920 | { 3921 | "__type__": "cc.RigidBody", 3922 | "_name": "", 3923 | "_objFlags": 0, 3924 | "node": { 3925 | "__id__": 106 3926 | }, 3927 | "_enabled": true, 3928 | "_type": 2, 3929 | "_allowSleep": true, 3930 | "_gravityScale": 1, 3931 | "_linearDamping": 0.1, 3932 | "_angularDamping": 0.1, 3933 | "_linearVelocity": { 3934 | "__type__": "cc.Vec2", 3935 | "x": 0, 3936 | "y": 0 3937 | }, 3938 | "_angularVelocity": 0, 3939 | "_fixedRotation": false, 3940 | "enabledContactListener": false, 3941 | "bullet": false, 3942 | "_id": "6auNwSYahLmoWRicNhz0hT" 3943 | }, 3944 | { 3945 | "__type__": "cc.PhysicsCircleCollider", 3946 | "_name": "", 3947 | "_objFlags": 0, 3948 | "node": { 3949 | "__id__": 106 3950 | }, 3951 | "_enabled": true, 3952 | "tag": 0, 3953 | "_density": 1, 3954 | "_sensor": false, 3955 | "_friction": 0.1, 3956 | "_restitution": 0.35, 3957 | "body": null, 3958 | "_offset": { 3959 | "__type__": "cc.Vec2", 3960 | "x": 0, 3961 | "y": 0 3962 | }, 3963 | "_radius": 13, 3964 | "_id": "baLLeBOGVArZWBRTwM/f8T" 3965 | }, 3966 | { 3967 | "__type__": "cc.Node", 3968 | "_name": "draw", 3969 | "_objFlags": 512, 3970 | "_parent": { 3971 | "__id__": 2 3972 | }, 3973 | "_children": [], 3974 | "_active": true, 3975 | "_level": 1, 3976 | "_components": [ 3977 | { 3978 | "__id__": 111 3979 | }, 3980 | { 3981 | "__id__": 112 3982 | }, 3983 | { 3984 | "__id__": 113 3985 | } 3986 | ], 3987 | "_prefab": null, 3988 | "_opacity": 255, 3989 | "_color": { 3990 | "__type__": "cc.Color", 3991 | "r": 255, 3992 | "g": 255, 3993 | "b": 255, 3994 | "a": 255 3995 | }, 3996 | "_contentSize": { 3997 | "__type__": "cc.Size", 3998 | "width": 720, 3999 | "height": 1280 4000 | }, 4001 | "_anchorPoint": { 4002 | "__type__": "cc.Vec2", 4003 | "x": 0.5, 4004 | "y": 0.5 4005 | }, 4006 | "_position": { 4007 | "__type__": "cc.Vec3", 4008 | "x": 0, 4009 | "y": 0, 4010 | "z": 0 4011 | }, 4012 | "_scale": { 4013 | "__type__": "cc.Vec3", 4014 | "x": 1, 4015 | "y": 1, 4016 | "z": 1 4017 | }, 4018 | "_rotationX": 0, 4019 | "_rotationY": 0, 4020 | "_quat": { 4021 | "__type__": "cc.Quat", 4022 | "x": 0, 4023 | "y": 0, 4024 | "z": 0, 4025 | "w": 1 4026 | }, 4027 | "_skewX": 0, 4028 | "_skewY": 0, 4029 | "_zIndex": 0, 4030 | "groupIndex": 0, 4031 | "_id": "1aGZ2whLNHM4UNtDrGOJYM" 4032 | }, 4033 | { 4034 | "__type__": "cc.Sprite", 4035 | "_name": "", 4036 | "_objFlags": 0, 4037 | "node": { 4038 | "__id__": 110 4039 | }, 4040 | "_enabled": true, 4041 | "_srcBlendFactor": 770, 4042 | "_dstBlendFactor": 771, 4043 | "_spriteFrame": { 4044 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 4045 | }, 4046 | "_type": 0, 4047 | "_sizeMode": 0, 4048 | "_fillType": 0, 4049 | "_fillCenter": { 4050 | "__type__": "cc.Vec2", 4051 | "x": 0, 4052 | "y": 0 4053 | }, 4054 | "_fillStart": 0, 4055 | "_fillRange": 0, 4056 | "_isTrimmedMode": true, 4057 | "_state": 0, 4058 | "_atlas": null, 4059 | "_id": "35Yho86oZKAakKdJvSDX6z" 4060 | }, 4061 | { 4062 | "__type__": "cc.Widget", 4063 | "_name": "", 4064 | "_objFlags": 0, 4065 | "node": { 4066 | "__id__": 110 4067 | }, 4068 | "_enabled": true, 4069 | "alignMode": 1, 4070 | "_target": null, 4071 | "_alignFlags": 45, 4072 | "_left": 0, 4073 | "_right": 0, 4074 | "_top": 0, 4075 | "_bottom": 0, 4076 | "_verticalCenter": 0, 4077 | "_horizontalCenter": 0, 4078 | "_isAbsLeft": true, 4079 | "_isAbsRight": true, 4080 | "_isAbsTop": true, 4081 | "_isAbsBottom": true, 4082 | "_isAbsHorizontalCenter": true, 4083 | "_isAbsVerticalCenter": true, 4084 | "_originalWidth": 100, 4085 | "_originalHeight": 100, 4086 | "_id": "91csCtfTZLPLrByGZKQU10" 4087 | }, 4088 | { 4089 | "__type__": "9a223iEoYZAqYIJeDWL77bd", 4090 | "_name": "", 4091 | "_objFlags": 0, 4092 | "node": { 4093 | "__id__": 110 4094 | }, 4095 | "_enabled": true, 4096 | "sprite": { 4097 | "__id__": 111 4098 | }, 4099 | "_id": "17y0tXb7BGL5JisqaUL7Fg" 4100 | }, 4101 | { 4102 | "__type__": "cc.Node", 4103 | "_name": "default", 4104 | "_objFlags": 512, 4105 | "_parent": { 4106 | "__id__": 2 4107 | }, 4108 | "_children": [ 4109 | { 4110 | "__id__": 115 4111 | }, 4112 | { 4113 | "__id__": 119 4114 | }, 4115 | { 4116 | "__id__": 123 4117 | }, 4118 | { 4119 | "__id__": 127 4120 | }, 4121 | { 4122 | "__id__": 131 4123 | }, 4124 | { 4125 | "__id__": 133 4126 | }, 4127 | { 4128 | "__id__": 139 4129 | } 4130 | ], 4131 | "_active": true, 4132 | "_level": 1, 4133 | "_components": [], 4134 | "_prefab": null, 4135 | "_opacity": 255, 4136 | "_color": { 4137 | "__type__": "cc.Color", 4138 | "r": 255, 4139 | "g": 255, 4140 | "b": 255, 4141 | "a": 255 4142 | }, 4143 | "_contentSize": { 4144 | "__type__": "cc.Size", 4145 | "width": 0, 4146 | "height": 0 4147 | }, 4148 | "_anchorPoint": { 4149 | "__type__": "cc.Vec2", 4150 | "x": 0.5, 4151 | "y": 0.5 4152 | }, 4153 | "_position": { 4154 | "__type__": "cc.Vec3", 4155 | "x": -360, 4156 | "y": -640, 4157 | "z": 0 4158 | }, 4159 | "_scale": { 4160 | "__type__": "cc.Vec3", 4161 | "x": 1, 4162 | "y": 1, 4163 | "z": 1 4164 | }, 4165 | "_rotationX": 0, 4166 | "_rotationY": 0, 4167 | "_quat": { 4168 | "__type__": "cc.Quat", 4169 | "x": 0, 4170 | "y": 0, 4171 | "z": 0, 4172 | "w": 1 4173 | }, 4174 | "_skewX": 0, 4175 | "_skewY": 0, 4176 | "_zIndex": 0, 4177 | "groupIndex": 0, 4178 | "_id": "4dw2Km9nBCRKtkOilstN/v" 4179 | }, 4180 | { 4181 | "__type__": "cc.Node", 4182 | "_name": "sprite_splash", 4183 | "_objFlags": 0, 4184 | "_parent": { 4185 | "__id__": 114 4186 | }, 4187 | "_children": [], 4188 | "_active": true, 4189 | "_level": 2, 4190 | "_components": [ 4191 | { 4192 | "__id__": 116 4193 | }, 4194 | { 4195 | "__id__": 117 4196 | }, 4197 | { 4198 | "__id__": 118 4199 | } 4200 | ], 4201 | "_prefab": null, 4202 | "_opacity": 200, 4203 | "_color": { 4204 | "__type__": "cc.Color", 4205 | "r": 255, 4206 | "g": 0, 4207 | "b": 0, 4208 | "a": 255 4209 | }, 4210 | "_contentSize": { 4211 | "__type__": "cc.Size", 4212 | "width": 50, 4213 | "height": 50 4214 | }, 4215 | "_anchorPoint": { 4216 | "__type__": "cc.Vec2", 4217 | "x": 0.5, 4218 | "y": 0.5 4219 | }, 4220 | "_position": { 4221 | "__type__": "cc.Vec3", 4222 | "x": 354, 4223 | "y": 340, 4224 | "z": 0 4225 | }, 4226 | "_scale": { 4227 | "__type__": "cc.Vec3", 4228 | "x": 1, 4229 | "y": 1, 4230 | "z": 1 4231 | }, 4232 | "_rotationX": 45, 4233 | "_rotationY": 45, 4234 | "_quat": { 4235 | "__type__": "cc.Quat", 4236 | "x": 0, 4237 | "y": 0, 4238 | "z": -0.3826834323650898, 4239 | "w": 0.9238795325112867 4240 | }, 4241 | "_skewX": 0, 4242 | "_skewY": 0, 4243 | "_zIndex": 0, 4244 | "groupIndex": 0, 4245 | "_id": "d8B2pbxQ5HS6stbAnyOJzO" 4246 | }, 4247 | { 4248 | "__type__": "cc.Sprite", 4249 | "_name": "", 4250 | "_objFlags": 0, 4251 | "node": { 4252 | "__id__": 115 4253 | }, 4254 | "_enabled": true, 4255 | "_srcBlendFactor": 770, 4256 | "_dstBlendFactor": 771, 4257 | "_spriteFrame": { 4258 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 4259 | }, 4260 | "_type": 0, 4261 | "_sizeMode": 0, 4262 | "_fillType": 0, 4263 | "_fillCenter": { 4264 | "__type__": "cc.Vec2", 4265 | "x": 0, 4266 | "y": 0 4267 | }, 4268 | "_fillStart": 0, 4269 | "_fillRange": 0, 4270 | "_isTrimmedMode": true, 4271 | "_state": 0, 4272 | "_atlas": null, 4273 | "_id": "8dz//WkgNJ47q+q8BdRq1W" 4274 | }, 4275 | { 4276 | "__type__": "cc.RigidBody", 4277 | "_name": "", 4278 | "_objFlags": 0, 4279 | "node": { 4280 | "__id__": 115 4281 | }, 4282 | "_enabled": true, 4283 | "_type": 0, 4284 | "_allowSleep": true, 4285 | "_gravityScale": 1, 4286 | "_linearDamping": 0, 4287 | "_angularDamping": 0, 4288 | "_linearVelocity": { 4289 | "__type__": "cc.Vec2", 4290 | "x": 0, 4291 | "y": 0 4292 | }, 4293 | "_angularVelocity": 0, 4294 | "_fixedRotation": false, 4295 | "enabledContactListener": false, 4296 | "bullet": false, 4297 | "_id": "951ggdsKpOvJSVzL6pkrNm" 4298 | }, 4299 | { 4300 | "__type__": "cc.PhysicsBoxCollider", 4301 | "_name": "", 4302 | "_objFlags": 0, 4303 | "node": { 4304 | "__id__": 115 4305 | }, 4306 | "_enabled": true, 4307 | "tag": 0, 4308 | "_density": 1, 4309 | "_sensor": false, 4310 | "_friction": 0.2, 4311 | "_restitution": 0, 4312 | "body": null, 4313 | "_offset": { 4314 | "__type__": "cc.Vec2", 4315 | "x": 0, 4316 | "y": 0 4317 | }, 4318 | "_size": { 4319 | "__type__": "cc.Size", 4320 | "width": 50, 4321 | "height": 50 4322 | }, 4323 | "_id": "75HjzDcWVFZKqynl6f4aIJ" 4324 | }, 4325 | { 4326 | "__type__": "cc.Node", 4327 | "_name": "sprite_splash", 4328 | "_objFlags": 0, 4329 | "_parent": { 4330 | "__id__": 114 4331 | }, 4332 | "_children": [], 4333 | "_active": true, 4334 | "_level": 2, 4335 | "_components": [ 4336 | { 4337 | "__id__": 120 4338 | }, 4339 | { 4340 | "__id__": 121 4341 | }, 4342 | { 4343 | "__id__": 122 4344 | } 4345 | ], 4346 | "_prefab": null, 4347 | "_opacity": 200, 4348 | "_color": { 4349 | "__type__": "cc.Color", 4350 | "r": 206, 4351 | "g": 127, 4352 | "b": 42, 4353 | "a": 255 4354 | }, 4355 | "_contentSize": { 4356 | "__type__": "cc.Size", 4357 | "width": 100, 4358 | "height": 100 4359 | }, 4360 | "_anchorPoint": { 4361 | "__type__": "cc.Vec2", 4362 | "x": 0.5, 4363 | "y": 0.5 4364 | }, 4365 | "_position": { 4366 | "__type__": "cc.Vec3", 4367 | "x": 10, 4368 | "y": 73, 4369 | "z": 0 4370 | }, 4371 | "_scale": { 4372 | "__type__": "cc.Vec3", 4373 | "x": 3.91, 4374 | "y": 3.91, 4375 | "z": 1 4376 | }, 4377 | "_rotationX": -30, 4378 | "_rotationY": -30, 4379 | "_quat": { 4380 | "__type__": "cc.Quat", 4381 | "x": 0, 4382 | "y": 0, 4383 | "z": 0.25881904510252074, 4384 | "w": 0.9659258262890683 4385 | }, 4386 | "_skewX": 0, 4387 | "_skewY": 0, 4388 | "_zIndex": 0, 4389 | "groupIndex": 0, 4390 | "_id": "5cVgdkGhtPAI9SIuM+3l8i" 4391 | }, 4392 | { 4393 | "__type__": "cc.Sprite", 4394 | "_name": "", 4395 | "_objFlags": 0, 4396 | "node": { 4397 | "__id__": 119 4398 | }, 4399 | "_enabled": true, 4400 | "_srcBlendFactor": 770, 4401 | "_dstBlendFactor": 771, 4402 | "_spriteFrame": { 4403 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 4404 | }, 4405 | "_type": 0, 4406 | "_sizeMode": 0, 4407 | "_fillType": 0, 4408 | "_fillCenter": { 4409 | "__type__": "cc.Vec2", 4410 | "x": 0, 4411 | "y": 0 4412 | }, 4413 | "_fillStart": 0, 4414 | "_fillRange": 0, 4415 | "_isTrimmedMode": true, 4416 | "_state": 0, 4417 | "_atlas": null, 4418 | "_id": "4dNqjAJCJGzqbA8pGYA4sl" 4419 | }, 4420 | { 4421 | "__type__": "cc.RigidBody", 4422 | "_name": "", 4423 | "_objFlags": 0, 4424 | "node": { 4425 | "__id__": 119 4426 | }, 4427 | "_enabled": true, 4428 | "_type": 0, 4429 | "_allowSleep": true, 4430 | "_gravityScale": 1, 4431 | "_linearDamping": 0, 4432 | "_angularDamping": 0, 4433 | "_linearVelocity": { 4434 | "__type__": "cc.Vec2", 4435 | "x": 0, 4436 | "y": 0 4437 | }, 4438 | "_angularVelocity": 0, 4439 | "_fixedRotation": false, 4440 | "enabledContactListener": false, 4441 | "bullet": false, 4442 | "_id": "f6/59xLuNKoJiEtAq8p4nG" 4443 | }, 4444 | { 4445 | "__type__": "cc.PhysicsPolygonCollider", 4446 | "_name": "", 4447 | "_objFlags": 0, 4448 | "node": { 4449 | "__id__": 119 4450 | }, 4451 | "_enabled": true, 4452 | "tag": 0, 4453 | "_density": 1, 4454 | "_sensor": false, 4455 | "_friction": 0.2, 4456 | "_restitution": 0, 4457 | "body": null, 4458 | "_offset": { 4459 | "__type__": "cc.Vec2", 4460 | "x": 0, 4461 | "y": 0 4462 | }, 4463 | "points": [ 4464 | { 4465 | "__type__": "cc.Vec2", 4466 | "x": -50, 4467 | "y": -50 4468 | }, 4469 | { 4470 | "__type__": "cc.Vec2", 4471 | "x": 50, 4472 | "y": -50 4473 | }, 4474 | { 4475 | "__type__": "cc.Vec2", 4476 | "x": 50, 4477 | "y": 50 4478 | }, 4479 | { 4480 | "__type__": "cc.Vec2", 4481 | "x": -50, 4482 | "y": 50 4483 | } 4484 | ], 4485 | "_id": "8aYjZWZ31Fkrj/P5Dfs6kd" 4486 | }, 4487 | { 4488 | "__type__": "cc.Node", 4489 | "_name": "sprite_splash", 4490 | "_objFlags": 0, 4491 | "_parent": { 4492 | "__id__": 114 4493 | }, 4494 | "_children": [], 4495 | "_active": true, 4496 | "_level": 2, 4497 | "_components": [ 4498 | { 4499 | "__id__": 124 4500 | }, 4501 | { 4502 | "__id__": 125 4503 | }, 4504 | { 4505 | "__id__": 126 4506 | } 4507 | ], 4508 | "_prefab": null, 4509 | "_opacity": 200, 4510 | "_color": { 4511 | "__type__": "cc.Color", 4512 | "r": 206, 4513 | "g": 127, 4514 | "b": 42, 4515 | "a": 255 4516 | }, 4517 | "_contentSize": { 4518 | "__type__": "cc.Size", 4519 | "width": 100, 4520 | "height": 100 4521 | }, 4522 | "_anchorPoint": { 4523 | "__type__": "cc.Vec2", 4524 | "x": 0.5, 4525 | "y": 0.5 4526 | }, 4527 | "_position": { 4528 | "__type__": "cc.Vec3", 4529 | "x": 710, 4530 | "y": 73, 4531 | "z": 0 4532 | }, 4533 | "_scale": { 4534 | "__type__": "cc.Vec3", 4535 | "x": 3.91, 4536 | "y": 3.91, 4537 | "z": 1 4538 | }, 4539 | "_rotationX": 30, 4540 | "_rotationY": 30, 4541 | "_quat": { 4542 | "__type__": "cc.Quat", 4543 | "x": 0, 4544 | "y": 0, 4545 | "z": -0.25881904510252074, 4546 | "w": 0.9659258262890683 4547 | }, 4548 | "_skewX": 0, 4549 | "_skewY": 0, 4550 | "_zIndex": 0, 4551 | "groupIndex": 0, 4552 | "_id": "4274dU6iFOh4RB2mIJ5Fb8" 4553 | }, 4554 | { 4555 | "__type__": "cc.Sprite", 4556 | "_name": "", 4557 | "_objFlags": 0, 4558 | "node": { 4559 | "__id__": 123 4560 | }, 4561 | "_enabled": true, 4562 | "_srcBlendFactor": 770, 4563 | "_dstBlendFactor": 771, 4564 | "_spriteFrame": { 4565 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 4566 | }, 4567 | "_type": 0, 4568 | "_sizeMode": 0, 4569 | "_fillType": 0, 4570 | "_fillCenter": { 4571 | "__type__": "cc.Vec2", 4572 | "x": 0, 4573 | "y": 0 4574 | }, 4575 | "_fillStart": 0, 4576 | "_fillRange": 0, 4577 | "_isTrimmedMode": true, 4578 | "_state": 0, 4579 | "_atlas": null, 4580 | "_id": "aanT3NMotDDbQuNlH1aEAQ" 4581 | }, 4582 | { 4583 | "__type__": "cc.RigidBody", 4584 | "_name": "", 4585 | "_objFlags": 0, 4586 | "node": { 4587 | "__id__": 123 4588 | }, 4589 | "_enabled": true, 4590 | "_type": 0, 4591 | "_allowSleep": true, 4592 | "_gravityScale": 1, 4593 | "_linearDamping": 0, 4594 | "_angularDamping": 0, 4595 | "_linearVelocity": { 4596 | "__type__": "cc.Vec2", 4597 | "x": 0, 4598 | "y": 0 4599 | }, 4600 | "_angularVelocity": 0, 4601 | "_fixedRotation": false, 4602 | "enabledContactListener": false, 4603 | "bullet": false, 4604 | "_id": "25J4Nf0DNHFIdLHEvbaf/v" 4605 | }, 4606 | { 4607 | "__type__": "cc.PhysicsPolygonCollider", 4608 | "_name": "", 4609 | "_objFlags": 0, 4610 | "node": { 4611 | "__id__": 123 4612 | }, 4613 | "_enabled": true, 4614 | "tag": 0, 4615 | "_density": 1, 4616 | "_sensor": false, 4617 | "_friction": 0.2, 4618 | "_restitution": 0, 4619 | "body": null, 4620 | "_offset": { 4621 | "__type__": "cc.Vec2", 4622 | "x": 0, 4623 | "y": 0 4624 | }, 4625 | "points": [ 4626 | { 4627 | "__type__": "cc.Vec2", 4628 | "x": -50, 4629 | "y": -50 4630 | }, 4631 | { 4632 | "__type__": "cc.Vec2", 4633 | "x": 50, 4634 | "y": -50 4635 | }, 4636 | { 4637 | "__type__": "cc.Vec2", 4638 | "x": 50, 4639 | "y": 50 4640 | }, 4641 | { 4642 | "__type__": "cc.Vec2", 4643 | "x": -50, 4644 | "y": 50 4645 | } 4646 | ], 4647 | "_id": "d6gojZTRxIVr2sTE/jcqRw" 4648 | }, 4649 | { 4650 | "__type__": "cc.Node", 4651 | "_name": "sprite_splash", 4652 | "_objFlags": 0, 4653 | "_parent": { 4654 | "__id__": 114 4655 | }, 4656 | "_children": [], 4657 | "_active": true, 4658 | "_level": 2, 4659 | "_components": [ 4660 | { 4661 | "__id__": 128 4662 | }, 4663 | { 4664 | "__id__": 129 4665 | }, 4666 | { 4667 | "__id__": 130 4668 | } 4669 | ], 4670 | "_prefab": null, 4671 | "_opacity": 200, 4672 | "_color": { 4673 | "__type__": "cc.Color", 4674 | "r": 206, 4675 | "g": 127, 4676 | "b": 42, 4677 | "a": 255 4678 | }, 4679 | "_contentSize": { 4680 | "__type__": "cc.Size", 4681 | "width": 100, 4682 | "height": 100 4683 | }, 4684 | "_anchorPoint": { 4685 | "__type__": "cc.Vec2", 4686 | "x": 0.5, 4687 | "y": 0.5 4688 | }, 4689 | "_position": { 4690 | "__type__": "cc.Vec3", 4691 | "x": 377, 4692 | "y": -193, 4693 | "z": 0 4694 | }, 4695 | "_scale": { 4696 | "__type__": "cc.Vec3", 4697 | "x": 10, 4698 | "y": 3.91, 4699 | "z": 1 4700 | }, 4701 | "_rotationX": 0, 4702 | "_rotationY": 0, 4703 | "_quat": { 4704 | "__type__": "cc.Quat", 4705 | "x": 0, 4706 | "y": 0, 4707 | "z": 0, 4708 | "w": 1 4709 | }, 4710 | "_skewX": 0, 4711 | "_skewY": 0, 4712 | "_zIndex": 0, 4713 | "groupIndex": 0, 4714 | "_id": "33En7kg4BH7qd2CZKZ0t0K" 4715 | }, 4716 | { 4717 | "__type__": "cc.Sprite", 4718 | "_name": "", 4719 | "_objFlags": 0, 4720 | "node": { 4721 | "__id__": 127 4722 | }, 4723 | "_enabled": true, 4724 | "_srcBlendFactor": 770, 4725 | "_dstBlendFactor": 771, 4726 | "_spriteFrame": { 4727 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 4728 | }, 4729 | "_type": 0, 4730 | "_sizeMode": 0, 4731 | "_fillType": 0, 4732 | "_fillCenter": { 4733 | "__type__": "cc.Vec2", 4734 | "x": 0, 4735 | "y": 0 4736 | }, 4737 | "_fillStart": 0, 4738 | "_fillRange": 0, 4739 | "_isTrimmedMode": true, 4740 | "_state": 0, 4741 | "_atlas": null, 4742 | "_id": "c4Mb5zFYtA3Z0Uo4qZz3dd" 4743 | }, 4744 | { 4745 | "__type__": "cc.RigidBody", 4746 | "_name": "", 4747 | "_objFlags": 0, 4748 | "node": { 4749 | "__id__": 127 4750 | }, 4751 | "_enabled": true, 4752 | "_type": 0, 4753 | "_allowSleep": true, 4754 | "_gravityScale": 1, 4755 | "_linearDamping": 0, 4756 | "_angularDamping": 0, 4757 | "_linearVelocity": { 4758 | "__type__": "cc.Vec2", 4759 | "x": 0, 4760 | "y": 0 4761 | }, 4762 | "_angularVelocity": 0, 4763 | "_fixedRotation": false, 4764 | "enabledContactListener": false, 4765 | "bullet": false, 4766 | "_id": "7fNBI3O4VO2L4ucx+D3dTX" 4767 | }, 4768 | { 4769 | "__type__": "cc.PhysicsPolygonCollider", 4770 | "_name": "", 4771 | "_objFlags": 0, 4772 | "node": { 4773 | "__id__": 127 4774 | }, 4775 | "_enabled": true, 4776 | "tag": 0, 4777 | "_density": 1, 4778 | "_sensor": false, 4779 | "_friction": 0.2, 4780 | "_restitution": 0, 4781 | "body": null, 4782 | "_offset": { 4783 | "__type__": "cc.Vec2", 4784 | "x": 0, 4785 | "y": 0 4786 | }, 4787 | "points": [ 4788 | { 4789 | "__type__": "cc.Vec2", 4790 | "x": -50, 4791 | "y": -50 4792 | }, 4793 | { 4794 | "__type__": "cc.Vec2", 4795 | "x": 50, 4796 | "y": -50 4797 | }, 4798 | { 4799 | "__type__": "cc.Vec2", 4800 | "x": 50, 4801 | "y": 50 4802 | }, 4803 | { 4804 | "__type__": "cc.Vec2", 4805 | "x": -50, 4806 | "y": 50 4807 | } 4808 | ], 4809 | "_id": "e8gf+bi4NAjbvX3VllXynm" 4810 | }, 4811 | { 4812 | "__type__": "cc.Node", 4813 | "_name": "label", 4814 | "_objFlags": 0, 4815 | "_parent": { 4816 | "__id__": 114 4817 | }, 4818 | "_children": [], 4819 | "_active": true, 4820 | "_level": 2, 4821 | "_components": [ 4822 | { 4823 | "__id__": 132 4824 | } 4825 | ], 4826 | "_prefab": null, 4827 | "_opacity": 255, 4828 | "_color": { 4829 | "__type__": "cc.Color", 4830 | "r": 0, 4831 | "g": 0, 4832 | "b": 0, 4833 | "a": 255 4834 | }, 4835 | "_contentSize": { 4836 | "__type__": "cc.Size", 4837 | "width": 128.98, 4838 | "height": 40 4839 | }, 4840 | "_anchorPoint": { 4841 | "__type__": "cc.Vec2", 4842 | "x": 0.5, 4843 | "y": 0.5 4844 | }, 4845 | "_position": { 4846 | "__type__": "cc.Vec3", 4847 | "x": 360, 4848 | "y": 907.9, 4849 | "z": 0 4850 | }, 4851 | "_scale": { 4852 | "__type__": "cc.Vec3", 4853 | "x": 1, 4854 | "y": 1, 4855 | "z": 1 4856 | }, 4857 | "_rotationX": 0, 4858 | "_rotationY": 0, 4859 | "_quat": { 4860 | "__type__": "cc.Quat", 4861 | "x": 0, 4862 | "y": 0, 4863 | "z": 0, 4864 | "w": 1 4865 | }, 4866 | "_skewX": 0, 4867 | "_skewY": 0, 4868 | "_zIndex": 0, 4869 | "groupIndex": 0, 4870 | "_id": "66AxoQ7clBM5Rfjqr1hfDU" 4871 | }, 4872 | { 4873 | "__type__": "cc.Label", 4874 | "_name": "", 4875 | "_objFlags": 0, 4876 | "node": { 4877 | "__id__": 131 4878 | }, 4879 | "_enabled": true, 4880 | "_srcBlendFactor": 1, 4881 | "_dstBlendFactor": 771, 4882 | "_useOriginalSize": false, 4883 | "_string": "Shader", 4884 | "_N$string": "Shader", 4885 | "_fontSize": 40, 4886 | "_lineHeight": 40, 4887 | "_enableWrapText": true, 4888 | "_N$file": null, 4889 | "_isSystemFontUsed": true, 4890 | "_spacingX": 0, 4891 | "_N$horizontalAlign": 1, 4892 | "_N$verticalAlign": 1, 4893 | "_N$fontFamily": "Arial", 4894 | "_N$overflow": 0, 4895 | "_id": "6bJj3ehK1BUotYAYlLAVmB" 4896 | }, 4897 | { 4898 | "__type__": "cc.Node", 4899 | "_name": "button", 4900 | "_objFlags": 0, 4901 | "_parent": { 4902 | "__id__": 114 4903 | }, 4904 | "_children": [ 4905 | { 4906 | "__id__": 134 4907 | } 4908 | ], 4909 | "_active": true, 4910 | "_level": 2, 4911 | "_components": [ 4912 | { 4913 | "__id__": 136 4914 | }, 4915 | { 4916 | "__id__": 137 4917 | }, 4918 | { 4919 | "__id__": 138 4920 | } 4921 | ], 4922 | "_prefab": null, 4923 | "_opacity": 255, 4924 | "_color": { 4925 | "__type__": "cc.Color", 4926 | "r": 255, 4927 | "g": 255, 4928 | "b": 255, 4929 | "a": 255 4930 | }, 4931 | "_contentSize": { 4932 | "__type__": "cc.Size", 4933 | "width": 100, 4934 | "height": 40 4935 | }, 4936 | "_anchorPoint": { 4937 | "__type__": "cc.Vec2", 4938 | "x": 0.5, 4939 | "y": 0.5 4940 | }, 4941 | "_position": { 4942 | "__type__": "cc.Vec3", 4943 | "x": 360, 4944 | "y": 845, 4945 | "z": 0 4946 | }, 4947 | "_scale": { 4948 | "__type__": "cc.Vec3", 4949 | "x": 1, 4950 | "y": 1, 4951 | "z": 1 4952 | }, 4953 | "_rotationX": 0, 4954 | "_rotationY": 0, 4955 | "_quat": { 4956 | "__type__": "cc.Quat", 4957 | "x": 0, 4958 | "y": 0, 4959 | "z": 0, 4960 | "w": 1 4961 | }, 4962 | "_skewX": 0, 4963 | "_skewY": 0, 4964 | "_zIndex": 0, 4965 | "groupIndex": 0, 4966 | "_id": "1fv8FHdJ1M5rgMpCzIpVHI" 4967 | }, 4968 | { 4969 | "__type__": "cc.Node", 4970 | "_name": "Label", 4971 | "_objFlags": 0, 4972 | "_parent": { 4973 | "__id__": 133 4974 | }, 4975 | "_children": [], 4976 | "_active": true, 4977 | "_level": 0, 4978 | "_components": [ 4979 | { 4980 | "__id__": 135 4981 | } 4982 | ], 4983 | "_prefab": null, 4984 | "_opacity": 255, 4985 | "_color": { 4986 | "__type__": "cc.Color", 4987 | "r": 0, 4988 | "g": 0, 4989 | "b": 0, 4990 | "a": 255 4991 | }, 4992 | "_contentSize": { 4993 | "__type__": "cc.Size", 4994 | "width": 100, 4995 | "height": 40 4996 | }, 4997 | "_anchorPoint": { 4998 | "__type__": "cc.Vec2", 4999 | "x": 0.5, 5000 | "y": 0.5 5001 | }, 5002 | "_position": { 5003 | "__type__": "cc.Vec3", 5004 | "x": 0, 5005 | "y": 0, 5006 | "z": 0 5007 | }, 5008 | "_scale": { 5009 | "__type__": "cc.Vec3", 5010 | "x": 1, 5011 | "y": 1, 5012 | "z": 1 5013 | }, 5014 | "_rotationX": 0, 5015 | "_rotationY": 0, 5016 | "_quat": { 5017 | "__type__": "cc.Quat", 5018 | "x": 0, 5019 | "y": 0, 5020 | "z": 0, 5021 | "w": 1 5022 | }, 5023 | "_skewX": 0, 5024 | "_skewY": 0, 5025 | "_zIndex": 0, 5026 | "groupIndex": 0, 5027 | "_id": "9d+HtTUPVEm7grdtIUOAuY" 5028 | }, 5029 | { 5030 | "__type__": "cc.Label", 5031 | "_name": "", 5032 | "_objFlags": 0, 5033 | "node": { 5034 | "__id__": 134 5035 | }, 5036 | "_enabled": true, 5037 | "_srcBlendFactor": 1, 5038 | "_dstBlendFactor": 771, 5039 | "_useOriginalSize": false, 5040 | "_string": "切换", 5041 | "_N$string": "切换", 5042 | "_fontSize": 20, 5043 | "_lineHeight": 40, 5044 | "_enableWrapText": false, 5045 | "_N$file": null, 5046 | "_isSystemFontUsed": true, 5047 | "_spacingX": 0, 5048 | "_N$horizontalAlign": 1, 5049 | "_N$verticalAlign": 1, 5050 | "_N$fontFamily": "Arial", 5051 | "_N$overflow": 1, 5052 | "_id": "3ccnropSVL3Lg+5atgS/ER" 5053 | }, 5054 | { 5055 | "__type__": "cc.Sprite", 5056 | "_name": "", 5057 | "_objFlags": 0, 5058 | "node": { 5059 | "__id__": 133 5060 | }, 5061 | "_enabled": true, 5062 | "_srcBlendFactor": 770, 5063 | "_dstBlendFactor": 771, 5064 | "_spriteFrame": { 5065 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5066 | }, 5067 | "_type": 1, 5068 | "_sizeMode": 0, 5069 | "_fillType": 0, 5070 | "_fillCenter": { 5071 | "__type__": "cc.Vec2", 5072 | "x": 0, 5073 | "y": 0 5074 | }, 5075 | "_fillStart": 0, 5076 | "_fillRange": 0, 5077 | "_isTrimmedMode": true, 5078 | "_state": 0, 5079 | "_atlas": null, 5080 | "_id": "baTmqhbYFIoa7Zufa8XOd7" 5081 | }, 5082 | { 5083 | "__type__": "cc.Button", 5084 | "_name": "", 5085 | "_objFlags": 0, 5086 | "node": { 5087 | "__id__": 133 5088 | }, 5089 | "_enabled": true, 5090 | "transition": 2, 5091 | "pressedColor": { 5092 | "__type__": "cc.Color", 5093 | "r": 255, 5094 | "g": 255, 5095 | "b": 255, 5096 | "a": 255 5097 | }, 5098 | "hoverColor": { 5099 | "__type__": "cc.Color", 5100 | "r": 255, 5101 | "g": 255, 5102 | "b": 255, 5103 | "a": 255 5104 | }, 5105 | "duration": 0.1, 5106 | "zoomScale": 1.2, 5107 | "clickEvents": [], 5108 | "_N$interactable": true, 5109 | "_N$enableAutoGrayEffect": false, 5110 | "_N$normalColor": { 5111 | "__type__": "cc.Color", 5112 | "r": 255, 5113 | "g": 255, 5114 | "b": 255, 5115 | "a": 255 5116 | }, 5117 | "_N$disabledColor": { 5118 | "__type__": "cc.Color", 5119 | "r": 255, 5120 | "g": 255, 5121 | "b": 255, 5122 | "a": 255 5123 | }, 5124 | "_N$normalSprite": { 5125 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5126 | }, 5127 | "_N$pressedSprite": { 5128 | "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a" 5129 | }, 5130 | "pressedSprite": { 5131 | "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a" 5132 | }, 5133 | "_N$hoverSprite": { 5134 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5135 | }, 5136 | "hoverSprite": { 5137 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5138 | }, 5139 | "_N$disabledSprite": { 5140 | "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e" 5141 | }, 5142 | "_N$target": { 5143 | "__id__": 133 5144 | }, 5145 | "_id": "c60QybK9BBQaXX/FmS5NFc" 5146 | }, 5147 | { 5148 | "__type__": "8d94099DoZOHLDDz4WCW+ou", 5149 | "_name": "", 5150 | "_objFlags": 0, 5151 | "node": { 5152 | "__id__": 133 5153 | }, 5154 | "_enabled": true, 5155 | "nextScene": "SceneRender", 5156 | "_id": "6fGWocnUxDr70Jb9Fapc42" 5157 | }, 5158 | { 5159 | "__type__": "cc.Node", 5160 | "_name": "button", 5161 | "_objFlags": 0, 5162 | "_parent": { 5163 | "__id__": 114 5164 | }, 5165 | "_children": [ 5166 | { 5167 | "__id__": 140 5168 | } 5169 | ], 5170 | "_active": true, 5171 | "_level": 2, 5172 | "_components": [ 5173 | { 5174 | "__id__": 142 5175 | }, 5176 | { 5177 | "__id__": 143 5178 | }, 5179 | { 5180 | "__id__": 144 5181 | } 5182 | ], 5183 | "_prefab": null, 5184 | "_opacity": 255, 5185 | "_color": { 5186 | "__type__": "cc.Color", 5187 | "r": 255, 5188 | "g": 255, 5189 | "b": 255, 5190 | "a": 255 5191 | }, 5192 | "_contentSize": { 5193 | "__type__": "cc.Size", 5194 | "width": 100, 5195 | "height": 40 5196 | }, 5197 | "_anchorPoint": { 5198 | "__type__": "cc.Vec2", 5199 | "x": 0.5, 5200 | "y": 0.5 5201 | }, 5202 | "_position": { 5203 | "__type__": "cc.Vec3", 5204 | "x": 360, 5205 | "y": 797, 5206 | "z": 0 5207 | }, 5208 | "_scale": { 5209 | "__type__": "cc.Vec3", 5210 | "x": 1, 5211 | "y": 1, 5212 | "z": 1 5213 | }, 5214 | "_rotationX": 0, 5215 | "_rotationY": 0, 5216 | "_quat": { 5217 | "__type__": "cc.Quat", 5218 | "x": 0, 5219 | "y": 0, 5220 | "z": 0, 5221 | "w": 1 5222 | }, 5223 | "_skewX": 0, 5224 | "_skewY": 0, 5225 | "_zIndex": 0, 5226 | "groupIndex": 0, 5227 | "_id": "50erjgv69Jlb4MLlOAg6cn" 5228 | }, 5229 | { 5230 | "__type__": "cc.Node", 5231 | "_name": "Label", 5232 | "_objFlags": 0, 5233 | "_parent": { 5234 | "__id__": 139 5235 | }, 5236 | "_children": [], 5237 | "_active": true, 5238 | "_level": 0, 5239 | "_components": [ 5240 | { 5241 | "__id__": 141 5242 | } 5243 | ], 5244 | "_prefab": null, 5245 | "_opacity": 255, 5246 | "_color": { 5247 | "__type__": "cc.Color", 5248 | "r": 0, 5249 | "g": 0, 5250 | "b": 0, 5251 | "a": 255 5252 | }, 5253 | "_contentSize": { 5254 | "__type__": "cc.Size", 5255 | "width": 100, 5256 | "height": 40 5257 | }, 5258 | "_anchorPoint": { 5259 | "__type__": "cc.Vec2", 5260 | "x": 0.5, 5261 | "y": 0.5 5262 | }, 5263 | "_position": { 5264 | "__type__": "cc.Vec3", 5265 | "x": 0, 5266 | "y": 0, 5267 | "z": 0 5268 | }, 5269 | "_scale": { 5270 | "__type__": "cc.Vec3", 5271 | "x": 1, 5272 | "y": 1, 5273 | "z": 1 5274 | }, 5275 | "_rotationX": 0, 5276 | "_rotationY": 0, 5277 | "_quat": { 5278 | "__type__": "cc.Quat", 5279 | "x": 0, 5280 | "y": 0, 5281 | "z": 0, 5282 | "w": 1 5283 | }, 5284 | "_skewX": 0, 5285 | "_skewY": 0, 5286 | "_zIndex": 0, 5287 | "groupIndex": 0, 5288 | "_id": "046ucGcypIzaalt6aVibi6" 5289 | }, 5290 | { 5291 | "__type__": "cc.Label", 5292 | "_name": "", 5293 | "_objFlags": 0, 5294 | "node": { 5295 | "__id__": 140 5296 | }, 5297 | "_enabled": true, 5298 | "_srcBlendFactor": 1, 5299 | "_dstBlendFactor": 771, 5300 | "_useOriginalSize": false, 5301 | "_string": "刷新", 5302 | "_N$string": "刷新", 5303 | "_fontSize": 20, 5304 | "_lineHeight": 40, 5305 | "_enableWrapText": false, 5306 | "_N$file": null, 5307 | "_isSystemFontUsed": true, 5308 | "_spacingX": 0, 5309 | "_N$horizontalAlign": 1, 5310 | "_N$verticalAlign": 1, 5311 | "_N$fontFamily": "Arial", 5312 | "_N$overflow": 1, 5313 | "_id": "2foSek50dDOrXH6591/8o8" 5314 | }, 5315 | { 5316 | "__type__": "cc.Sprite", 5317 | "_name": "", 5318 | "_objFlags": 0, 5319 | "node": { 5320 | "__id__": 139 5321 | }, 5322 | "_enabled": true, 5323 | "_srcBlendFactor": 770, 5324 | "_dstBlendFactor": 771, 5325 | "_spriteFrame": { 5326 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5327 | }, 5328 | "_type": 1, 5329 | "_sizeMode": 0, 5330 | "_fillType": 0, 5331 | "_fillCenter": { 5332 | "__type__": "cc.Vec2", 5333 | "x": 0, 5334 | "y": 0 5335 | }, 5336 | "_fillStart": 0, 5337 | "_fillRange": 0, 5338 | "_isTrimmedMode": true, 5339 | "_state": 0, 5340 | "_atlas": null, 5341 | "_id": "c6HKd4/qFOcrnEiinWIk9B" 5342 | }, 5343 | { 5344 | "__type__": "cc.Button", 5345 | "_name": "", 5346 | "_objFlags": 0, 5347 | "node": { 5348 | "__id__": 139 5349 | }, 5350 | "_enabled": true, 5351 | "transition": 2, 5352 | "pressedColor": { 5353 | "__type__": "cc.Color", 5354 | "r": 255, 5355 | "g": 255, 5356 | "b": 255, 5357 | "a": 255 5358 | }, 5359 | "hoverColor": { 5360 | "__type__": "cc.Color", 5361 | "r": 255, 5362 | "g": 255, 5363 | "b": 255, 5364 | "a": 255 5365 | }, 5366 | "duration": 0.1, 5367 | "zoomScale": 1.2, 5368 | "clickEvents": [], 5369 | "_N$interactable": true, 5370 | "_N$enableAutoGrayEffect": false, 5371 | "_N$normalColor": { 5372 | "__type__": "cc.Color", 5373 | "r": 255, 5374 | "g": 255, 5375 | "b": 255, 5376 | "a": 255 5377 | }, 5378 | "_N$disabledColor": { 5379 | "__type__": "cc.Color", 5380 | "r": 255, 5381 | "g": 255, 5382 | "b": 255, 5383 | "a": 255 5384 | }, 5385 | "_N$normalSprite": { 5386 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5387 | }, 5388 | "_N$pressedSprite": { 5389 | "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a" 5390 | }, 5391 | "pressedSprite": { 5392 | "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a" 5393 | }, 5394 | "_N$hoverSprite": { 5395 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5396 | }, 5397 | "hoverSprite": { 5398 | "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952" 5399 | }, 5400 | "_N$disabledSprite": { 5401 | "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e" 5402 | }, 5403 | "_N$target": { 5404 | "__id__": 139 5405 | }, 5406 | "_id": "88cF1x0UtGEr1M98zveqfl" 5407 | }, 5408 | { 5409 | "__type__": "8d94099DoZOHLDDz4WCW+ou", 5410 | "_name": "", 5411 | "_objFlags": 0, 5412 | "node": { 5413 | "__id__": 139 5414 | }, 5415 | "_enabled": true, 5416 | "nextScene": "SceneShader", 5417 | "_id": "b5rVQckTNGv6Lo1qK0v4gg" 5418 | }, 5419 | { 5420 | "__type__": "cc.Canvas", 5421 | "_name": "", 5422 | "_objFlags": 0, 5423 | "node": { 5424 | "__id__": 2 5425 | }, 5426 | "_enabled": true, 5427 | "_designResolution": { 5428 | "__type__": "cc.Size", 5429 | "width": 720, 5430 | "height": 1280 5431 | }, 5432 | "_fitWidth": true, 5433 | "_fitHeight": false, 5434 | "_id": "e3/cnqlpdBNKR4kvG4FMQz" 5435 | } 5436 | ] -------------------------------------------------------------------------------- /assets/resources/scene/SceneShader.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "be6e03b4-591c-4bc3-a079-286ec51a148d", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/resources/texture.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "8e04099c-359c-44ef-be31-65d2deab89fa", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/resources/texture/ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuwenkai1023/ccc-fluid-demo/c288d46cda7b60e87cc5e4a3608d0611254c7fd0/assets/resources/texture/ball.png -------------------------------------------------------------------------------- /assets/resources/texture/ball.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.2.0", 3 | "uuid": "bc62713f-567f-4c9a-b2f8-2c04ea78328e", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "subMetas": { 9 | "ball": { 10 | "ver": "1.0.3", 11 | "uuid": "e8ee23b2-f380-4935-b539-6ff074a74deb", 12 | "rawTextureUuid": "bc62713f-567f-4c9a-b2f8-2c04ea78328e", 13 | "trimType": "auto", 14 | "trimThreshold": 1, 15 | "rotated": false, 16 | "offsetX": 0.5, 17 | "offsetY": -0.5, 18 | "trimX": 5, 19 | "trimY": 5, 20 | "width": 291, 21 | "height": 291, 22 | "rawWidth": 300, 23 | "rawHeight": 300, 24 | "borderTop": 0, 25 | "borderBottom": 0, 26 | "borderLeft": 0, 27 | "borderRight": 0, 28 | "subMetas": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /assets/resources/texture/singleColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuwenkai1023/ccc-fluid-demo/c288d46cda7b60e87cc5e4a3608d0611254c7fd0/assets/resources/texture/singleColor.png -------------------------------------------------------------------------------- /assets/resources/texture/singleColor.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.2.0", 3 | "uuid": "263f9093-f56a-481a-9668-90e509cae675", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "subMetas": { 9 | "singleColor": { 10 | "ver": "1.0.3", 11 | "uuid": "9480572b-f720-4a93-959c-56f71a031d4c", 12 | "rawTextureUuid": "263f9093-f56a-481a-9668-90e509cae675", 13 | "trimType": "auto", 14 | "trimThreshold": 1, 15 | "rotated": false, 16 | "offsetX": 0, 17 | "offsetY": 0, 18 | "trimX": 0, 19 | "trimY": 0, 20 | "width": 2, 21 | "height": 2, 22 | "rawWidth": 2, 23 | "rawHeight": 2, 24 | "borderTop": 0, 25 | "borderBottom": 0, 26 | "borderLeft": 0, 27 | "borderRight": 0, 28 | "subMetas": {} 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /assets/script.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "dc553c5c-c94d-4601-a7df-d5980d75bff2", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/app.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "bb57a544-fec0-48d6-b644-3fe5df88b75d", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/app/components.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "383dc458-6f7f-4906-83dc-b1173e8bbad2", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/app/components/MetaballsShader.ts: -------------------------------------------------------------------------------- 1 | import { ShaderManager, ShaderType } from "../../base/extension/shader/ShaderManager"; 2 | import SingletonFactory from "../../base/extension/shader/SingleFactory"; 3 | import { ShaderCustomMaterial } from "../../base/extension/shader/CustomMaterial"; 4 | 5 | 6 | const { ccclass, property } = cc._decorator; 7 | 8 | @ccclass 9 | export class MetaballsShader extends cc.Component { 10 | 11 | @property(cc.Sprite) 12 | private sprite: cc.Sprite = null; 13 | 14 | private mat: ShaderCustomMaterial; 15 | 16 | start() { 17 | this.mat = SingletonFactory.getInstance(ShaderManager).setShader(this.sprite, ShaderType.MetaBalls); 18 | } 19 | 20 | 21 | update() { 22 | if (this.mat) { 23 | let scale = SingletonFactory.getInstance(ShaderManager).convertTotalScale(this.sprite.node); 24 | this.mat.setParamValue("metaballs", this.balls); 25 | this.mat.setParamValue("resolution", new cc.Vec3(this.sprite.node.width * scale.x, this.sprite.node.height * scale.y)); 26 | } 27 | } 28 | 29 | 30 | get balls(): cc.Node[] { 31 | let tmp = []; 32 | let node = this.sprite.node; 33 | for (const circle of cc.director.getScene().getComponentsInChildren(cc.PhysicsCircleCollider)) { 34 | let scale = SingletonFactory.getInstance(ShaderManager).convertTotalScale(circle.node); 35 | let position = node.convertToNodeSpace(circle.node.convertToWorldSpaceAR(cc.v2(0, 0))); 36 | tmp.push(position.x * cc.view[`_scaleX`]); 37 | tmp.push(position.y * cc.view[`_scaleY`]); 38 | tmp.push(circle.radius * scale.x); 39 | tmp.push(0); 40 | } 41 | return tmp; 42 | } 43 | 44 | } -------------------------------------------------------------------------------- /assets/script/app/components/MetaballsShader.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "9a223884-a186-40a9-8209-78358befb6dd", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/app/components/PhysicsBounds.ts: -------------------------------------------------------------------------------- 1 | 2 | const { ccclass, property, disallowMultiple} = cc._decorator; 3 | 4 | @ccclass 5 | @disallowMultiple 6 | export default class PhysicsBounds extends cc.Component { 7 | 8 | @property(cc.Size) 9 | size: cc.Size = cc.size(0, 0); 10 | 11 | @property(cc.Boolean) 12 | mouseJoint: boolean = true; 13 | 14 | start(){ 15 | this.node.children.forEach(child => { 16 | child.removeFromParent(); 17 | }) 18 | let width = this.size.width || this.node.width; 19 | let height = this.size.height || this.node.height; 20 | let node = new cc.Node(); 21 | let body = node.addComponent(cc.RigidBody); 22 | body.type = cc.RigidBodyType.Static; 23 | if (this.mouseJoint) { 24 | // add mouse joint 25 | let joint = node.addComponent(cc.MouseJoint); 26 | joint.mouseRegion = this.node; 27 | } 28 | this._addBound(node, 0, height / 2, width, 20); 29 | this._addBound(node, 0, -height / 2, width, 20); 30 | this._addBound(node, -width / 2, 0, 20, height); 31 | this._addBound(node, width / 2, 0, 20, height); 32 | node.setParent(this.node); 33 | } 34 | 35 | _addBound(node, x, y, width, height) { 36 | let collider = node.addComponent(cc.PhysicsBoxCollider); 37 | collider.offset.x = x; 38 | collider.offset.y = y; 39 | collider.size.width = width; 40 | collider.size.height = height; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /assets/script/app/components/PhysicsBounds.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "07d6a461-8419-4b5b-8cc7-8662b2010384", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/app/components/RenderMask.ts: -------------------------------------------------------------------------------- 1 | // Learn TypeScript: 2 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html 3 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html 4 | // Learn Attribute: 5 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html 6 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html 7 | // Learn life-cycle callbacks: 8 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html 9 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html 10 | 11 | const { ccclass, property } = cc._decorator; 12 | 13 | @ccclass 14 | export default class RenderMask extends cc.Component { 15 | 16 | @property(cc.Camera) 17 | camera: cc.Camera = null; 18 | 19 | @property(cc.Mask) 20 | mask: cc.Mask = null; 21 | 22 | @property(cc.Sprite) 23 | sprite: cc.Sprite = null; 24 | 25 | private renderTexture: cc.RenderTexture; 26 | 27 | // LIFE-CYCLE CALLBACKS: 28 | 29 | onLoad() { 30 | this.renderTexture = new cc.RenderTexture(); 31 | this.renderTexture.initWithSize(cc.winSize.width, cc.winSize.height); 32 | this.camera.targetTexture = this.renderTexture; 33 | // this.renderTexture['_premultiplyAlpha'] = true; 34 | } 35 | 36 | start() { 37 | if (this.sprite) { 38 | this.sprite.node.active = true; 39 | this.sprite.spriteFrame = new cc.SpriteFrame(this.renderTexture); 40 | this.sprite.setState(0); 41 | } else if (this.mask) { 42 | this.mask.node.active = true; 43 | this.mask.spriteFrame = new cc.SpriteFrame(this.renderTexture); 44 | } 45 | } 46 | 47 | // update (dt) {} 48 | } 49 | -------------------------------------------------------------------------------- /assets/script/app/components/RenderMask.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "0bec4268-b86e-4e40-9a79-2dd9f7e90d17", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/app/components/SwitchScene.ts: -------------------------------------------------------------------------------- 1 | const { ccclass, property, requireComponent } = cc._decorator; 2 | 3 | @ccclass 4 | @requireComponent(cc.Button) 5 | export default class SwitchScene extends cc.Component { 6 | 7 | @property 8 | nextScene: string = ''; 9 | 10 | start() { 11 | this.node.on("click", () => { 12 | cc.director.loadScene(this.nextScene); 13 | }); 14 | } 15 | 16 | // update (dt) {} 17 | } 18 | -------------------------------------------------------------------------------- /assets/script/app/components/SwitchScene.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "8d940f7d-0e86-4e1c-b0c3-cf85825bea2e", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "b3d1f5ad-2fa1-45c2-8910-3caace6ce1b1", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/base/ShaderSprite.ts: -------------------------------------------------------------------------------- 1 | import { ShaderType, ShaderManager } from "./extension/shader/ShaderManager"; 2 | import SingletonFactory from "./extension/shader/SingleFactory"; 3 | 4 | const { ccclass, property, disallowMultiple, requireComponent, executeInEditMode } = cc._decorator; 5 | 6 | @ccclass 7 | @disallowMultiple 8 | @executeInEditMode 9 | @requireComponent(cc.Sprite) 10 | export default class BaseShaderSprite extends cc.Component { 11 | 12 | @property({ visible: false }) 13 | private _shader: ShaderType = ShaderType.Default; 14 | 15 | @property({ type: cc.Enum(ShaderType) }) 16 | get shader() { return this._shader; } 17 | set shader(type) { 18 | this._shader = type; 19 | this.applyShaderSettings(); 20 | } 21 | 22 | private sprite: cc.Sprite; 23 | 24 | protected start() { 25 | this.sprite = this.node.getComponent(cc.Sprite); 26 | this.applyShaderSettings(); 27 | } 28 | 29 | private applyShaderSettings() { 30 | SingletonFactory.getInstance(ShaderManager).setShader(this.sprite, this._shader); 31 | } 32 | 33 | protected onDestroy() { 34 | CC_EDITOR && this.sprite && this.sprite.setState(0); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /assets/script/base/ShaderSprite.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "fef0bc9c-1023-4fa2-9ff5-9e4f128ae6e2", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "8452de83-dee8-441c-ba58-350caf4f63e5", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "4f1dd115-c4bc-4029-95a3-e3cdc7f94b1d", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/CustomMaterial.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义材质 3 | */ 4 | 5 | const renderEngine = cc.renderer.renderEngine; 6 | const renderer = renderEngine.renderer; 7 | const gfx = renderEngine.gfx; 8 | const Material = renderEngine.Material; 9 | 10 | export class ShaderCustomMaterial extends Material { 11 | 12 | public _params: any; 13 | public _defines: any; 14 | public _name: any; 15 | private _texIds: any; 16 | private _effect: any; 17 | private _texture: any; 18 | public _mainTech: any; // 不要删,会用到 19 | private _useColor: boolean = false; 20 | public _color: { r: number; g: number; b: number; a: number; }; 21 | private _useTexture: boolean; 22 | private _useModel: boolean; 23 | private _use2DPos: boolean; 24 | 25 | constructor(name?: string | void, params?: any | void, defines?: any | void) { 26 | super(); 27 | Material.call(this, false); 28 | let pass = new renderer.Pass(name); 29 | pass.setDepth(false, false); 30 | pass.setCullMode(gfx.CULL_NONE); 31 | pass.setBlend( 32 | gfx.BLEND_FUNC_ADD, 33 | gfx.BLEND_SRC_ALPHA, 34 | gfx.BLEND_ONE_MINUS_SRC_ALPHA, 35 | gfx.BLEND_FUNC_ADD, 36 | gfx.BLEND_SRC_ALPHA, 37 | gfx.BLEND_ONE_MINUS_SRC_ALPHA 38 | ); 39 | 40 | let techParams = [ 41 | { name: 'texture', type: renderer.PARAM_TEXTURE_2D }, 42 | { name: 'color', type: renderer.PARAM_COLOR4 }, 43 | { name: 'time', type: renderer.PARAM_FLOAT }, 44 | ]; 45 | 46 | if (params) techParams = techParams.concat(params); 47 | 48 | let mainTech = new renderer.Technique( 49 | ['transparent'], 50 | techParams, 51 | [pass] 52 | ); 53 | 54 | this._texture = null; 55 | this._color = { r: 1, g: 1, b: 1, a: 1 }; 56 | this._effect = new renderer.Effect( 57 | [mainTech], 58 | { 59 | 'color': this._color, 60 | 'time': 0.0, 61 | }, 62 | defines.concat([ 63 | { name: 'useTexture', value: true }, 64 | { name: 'useModel', value: false }, 65 | { name: 'alphaTest', value: false }, 66 | { name: 'use2DPos', value: true }, 67 | { name: 'useColor', value: true } 68 | ]) 69 | ); 70 | 71 | this.name = name; 72 | this.params = params; 73 | this.defines = defines; 74 | this._mainTech = mainTech; 75 | } 76 | 77 | clone() { 78 | let copy: ShaderCustomMaterial = new ShaderCustomMaterial(); 79 | copy.texture = this.texture; 80 | copy.color = this.color; 81 | copy.updateHash(); 82 | return copy; 83 | } 84 | 85 | // 设置自定义参数的值 86 | setParamValue = function (name, value) { 87 | this._effect.setProperty(name, value); 88 | return this; 89 | }; 90 | 91 | // 设置定义值 92 | setDefine = function (name, value) { 93 | this._effect.define(name, value); 94 | return this; 95 | }; 96 | 97 | get effect() { 98 | return this._effect; 99 | } 100 | 101 | get texture() { 102 | return this._texture; 103 | } 104 | 105 | set texture(val) { 106 | if (this._texture !== val) { 107 | this._texture = val; 108 | this._effect.setProperty('texture', val.getImpl()); 109 | this._texIds['texture'] = val.getId(); 110 | } 111 | } 112 | 113 | get color() { 114 | return this._color; 115 | } 116 | 117 | set color(val) { 118 | let color = this._color; 119 | color.r = val.r / 255; 120 | color.g = val.g / 255; 121 | color.b = val.b / 255; 122 | color.a = val.a / 255; 123 | this._effect.setProperty('color', color); 124 | } 125 | 126 | get name() { 127 | return this._name; 128 | } 129 | 130 | set name(name) { 131 | this._name = name; 132 | } 133 | 134 | get params() { 135 | return this._params; 136 | } 137 | 138 | set params(params) { 139 | this._params = params; 140 | } 141 | 142 | get defines() { 143 | return this._defines; 144 | } 145 | 146 | set defines(define) { 147 | this._defines = define; 148 | } 149 | 150 | get useColor() { 151 | return this._useColor; 152 | } 153 | 154 | set useColor(value: boolean) { 155 | this._useColor = value; 156 | this.setDefine('useColor', value); 157 | } 158 | 159 | get useTexture() { 160 | return this._useTexture; 161 | } 162 | 163 | set useTexture(value: boolean) { 164 | this._useTexture = value; 165 | this.setDefine('useTexture', value); 166 | } 167 | 168 | get useModel() { 169 | return this._useModel; 170 | } 171 | 172 | set useModel(value: boolean) { 173 | this._useModel = value; 174 | this.setDefine('useModel', value); 175 | } 176 | 177 | get use2DPos() { 178 | return this._use2DPos; 179 | } 180 | 181 | set use2DPos(value: boolean) { 182 | this._use2DPos = value; 183 | this.setDefine('use2DPos', value); 184 | } 185 | 186 | } 187 | 188 | // if (Material) 189 | // CustomMaterial.prototype = Object.create(Material && Material.prototype); 190 | // CustomMaterial.prototype.constructor = CustomMaterial; 191 | -------------------------------------------------------------------------------- /assets/script/base/extension/shader/CustomMaterial.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "b21de5b6-e358-4f4f-9855-1028162f45d2", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/Shader.ts: -------------------------------------------------------------------------------- 1 | export interface Define { name: string, value?: boolean | void }; 2 | export interface Param { name: string, type?: number | void }; 3 | const renderer = cc.renderer.renderEngine.renderer; 4 | const MVP = ` 5 | uniform mat4 viewProj; 6 | attribute vec3 a_position; 7 | attribute vec2 a_uv0; 8 | varying vec2 uv0; 9 | void main () { 10 | vec4 pos = viewProj * vec4(a_position, 1); 11 | gl_Position = pos; 12 | uv0 = a_uv0; 13 | }`; 14 | 15 | export class Shader { 16 | public renderer = renderer; 17 | public name: string; 18 | public defines: Array; 19 | public params: Array; 20 | public vert: string = MVP; 21 | public frag: string; 22 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/Shader.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "d9045e7f-4ab0-455e-8a05-22b6671dbe38", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/ShaderLib.ts: -------------------------------------------------------------------------------- 1 | import { Shader } from "./Shader"; 2 | import * as shaders from "./shaders"; 3 | 4 | 5 | /** 6 | * Shader库 7 | */ 8 | export interface ShaderMap { [key: string]: Shader } 9 | 10 | export class ShaderLib { 11 | 12 | private _shaders: ShaderMap = {}; 13 | 14 | 15 | constructor() { 16 | this.init(); 17 | } 18 | 19 | 20 | /** 21 | * 初始化一些shader实例 22 | */ 23 | public init() { 24 | this.addShader(new shaders.Default()); 25 | this.addShader(new shaders.MetaBalls()); 26 | this.addShader(new shaders.CustomMask()); 27 | } 28 | 29 | 30 | /** 31 | * 增加一个新的Shader 32 | * @param shader 33 | */ 34 | public addShader(shader: Shader): boolean { 35 | if (this._shaders && this._shaders[shader.name]) { 36 | return false; 37 | } 38 | (cc.renderer)._forward._programLib.define(shader.name, shader.vert, shader.frag, shader.defines); 39 | this._shaders[shader.name] = shader; 40 | return true; 41 | } 42 | 43 | 44 | /** 45 | * 取Shader的定义 46 | * @param name 47 | */ 48 | public getShader(name): Shader { 49 | if (this._shaders[name]) { 50 | return this._shaders[name] 51 | } 52 | throw "ShadlerLib中不存在Shader:" + name; 53 | } 54 | } 55 | 56 | -------------------------------------------------------------------------------- /assets/script/base/extension/shader/ShaderLib.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "c597eaa9-c893-4764-baf9-d06a7495eaf1", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/ShaderManager.ts: -------------------------------------------------------------------------------- 1 | import { ShaderLib } from "./ShaderLib"; 2 | import { SpriteHook } from "./SpriteHook"; 3 | import { ShaderCustomMaterial } from "./CustomMaterial"; 4 | import SingletonFactory from "./SingleFactory"; 5 | 6 | export enum ShaderType { 7 | Default, 8 | CustomMask, 9 | MetaBalls, 10 | } 11 | 12 | export class ShaderManager { 13 | // private static _instance: ShaderManager; 14 | constructor() { 15 | SpriteHook.init(); 16 | } 17 | 18 | // public static getInstance() { 19 | // if (!this._instance) { 20 | // this._instance = new ShaderManager(); 21 | // } 22 | // return this._instance; 23 | // } 24 | 25 | public setShader(_sprite: cc.Sprite, _shader: ShaderType, _handler?: { (mat: ShaderCustomMaterial) } | void) { 26 | // console.log(`【${_sprite.node.name}】->[setShader]->${ShaderType[_shader]}`); 27 | if (!_sprite) return; 28 | if (_shader == ShaderType.Default) { 29 | _sprite.setState(0); 30 | return; 31 | } 32 | 33 | let shaderName = ShaderType[_shader]; 34 | let shader = SingletonFactory.getInstance(ShaderLib).getShader(shaderName); 35 | let sprite: any = _sprite; 36 | let mat: ShaderCustomMaterial = sprite.getCustomMaterial(shaderName); 37 | 38 | if (!mat) { 39 | mat = new ShaderCustomMaterial(shader.name, shader.params, shader.defines); 40 | sprite.setCustomMaterial(shaderName, mat); 41 | mat.texture = _sprite.spriteFrame.getTexture(); 42 | } 43 | 44 | sprite.activateCustomMaterial(shaderName); 45 | mat.texture.update(); 46 | let scale = this.convertTotalScale(sprite.node); 47 | mat.setParamValue("resolution", new cc.Vec3(sprite.node.width * scale.x, sprite.node.width * scale.y)); 48 | mat.setParamValue("texSize", new cc.Vec2(sprite.node.width * scale.x, sprite.node.width * scale.y)); 49 | if (_handler) { _handler(mat); } 50 | return mat; 51 | } 52 | 53 | public convertTotalScale(node: cc.Node): cc.Vec2 { 54 | let viewScale = cc.v2(cc.view["_scaleX"], cc.view["_scaleY"]); 55 | let nodeScale = cc.v2(node.scaleX, node.scaleY); 56 | let totalScale = viewScale.scale(nodeScale); 57 | return totalScale; 58 | } 59 | 60 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/ShaderManager.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "10031372-0748-4ed5-bab9-1971ca6b36c1", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/SingleFactory.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 单例工厂 3 | */ 4 | export default class SingletonFactory { 5 | 6 | private static instanceList: Map<{ new() }, Object> = new Map<{ new() }, Object>(); 7 | 8 | public static getInstance(c: { new(): T }): T { 9 | if (!SingletonFactory.instanceList.has(c)) { 10 | let obj = new c(); 11 | SingletonFactory.instanceList.set(c, obj); 12 | return obj; 13 | } 14 | return SingletonFactory.instanceList.get(c); 15 | } 16 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/SingleFactory.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "575b00d0-59a4-4f42-9523-2a4b907d8495", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/SpriteHook.ts: -------------------------------------------------------------------------------- 1 | // var SpriteHook = { 2 | // } 3 | // 支持自定义Shader 4 | const renderEngine = cc.renderer.renderEngine; 5 | const SpriteMaterial = renderEngine.SpriteMaterial; 6 | const GraySpriteMaterial = renderEngine.GraySpriteMaterial; 7 | const STATE_CUSTOM = 101; 8 | 9 | export class SpriteHook { 10 | 11 | static compareVersion() { 12 | let curVersion = cc.ENGINE_VERSION; 13 | let targetVersion = '2.0.10'; 14 | return this.getVersionCode(curVersion) < this.getVersionCode(targetVersion); 15 | } 16 | 17 | static getVersionCode(versionA) { 18 | let versionNums = versionA.split("."); 19 | let versionCode = Number(versionNums[0]) * 1000 + Number(versionNums[1]) * 100 + Number(versionNums[2]); 20 | // console.log(versionCode); 21 | return versionCode; 22 | } 23 | 24 | static init() { 25 | let prototype: any = cc.Sprite.prototype; 26 | // @ts-ignore 27 | cc.dynamicAtlasManager.enabled = false; 28 | prototype.oldVersion = SpriteHook.compareVersion(); 29 | 30 | // 设置自定义材质 31 | prototype.setCustomMaterial = function (name, mat) { 32 | // console.log("prototype.setMaterial") 33 | if (!this._materials) { 34 | this._materials = {} 35 | } 36 | this._materials[name] = mat; 37 | } 38 | 39 | // 取自定义材质 40 | prototype.getCustomMaterial = function (name) { 41 | // console.log("prototype.setMaterial") 42 | if (this._materials) { 43 | return this._materials[name]; 44 | } 45 | } 46 | 47 | // 取当前的材质 48 | prototype.getCurrMaterial = function () { 49 | // console.log("prototype.getCurrMaterial") 50 | if (this._state === STATE_CUSTOM) { 51 | return this._currMaterial; 52 | } 53 | } 54 | 55 | // 激活某个材质 56 | prototype.activateCustomMaterial = function (name) { 57 | var mat = this.getCustomMaterial(name); 58 | if (mat && mat !== this._currMaterial) { 59 | if (this.node) { 60 | mat.color = this.node.color; 61 | } 62 | if (this.spriteFrame) { 63 | mat.texture = this.spriteFrame.getTexture(); 64 | } 65 | this.node._renderFlag |= (cc).RenderFlow.FLAG_COLOR; 66 | this._currMaterial = mat; 67 | this._currMaterial.name = name; 68 | this._state = STATE_CUSTOM; 69 | this._activateMaterial(); 70 | } 71 | } 72 | 73 | 74 | prototype._activateMaterial = function () { 75 | let spriteFrame = this._spriteFrame; 76 | // WebGL 77 | if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) { 78 | // Get material 79 | let material; 80 | if (this._state === cc.Sprite['State'].GRAY) { 81 | if (!this._graySpriteMaterial) { 82 | this._graySpriteMaterial = new GraySpriteMaterial(); 83 | } 84 | material = this._graySpriteMaterial; 85 | this._currMaterial = null; 86 | } else if (this._state === STATE_CUSTOM) { 87 | if (!this._currMaterial) { 88 | // console.error("_activateMaterial: _currMaterial undefined!") 89 | return; 90 | } 91 | material = this._currMaterial; 92 | } else { 93 | if (!this._spriteMaterial) { 94 | this._spriteMaterial = new SpriteMaterial(); 95 | } 96 | material = this._spriteMaterial; 97 | this._currMaterial = null; 98 | } 99 | // For batch rendering, do not use uniform color. 100 | material.useColor = this.oldVersion; 101 | // Set texture 102 | if (spriteFrame && spriteFrame.textureLoaded()) { 103 | let texture = spriteFrame.getTexture(); 104 | if (material.texture !== texture) { 105 | material.texture = texture; 106 | this._updateMaterial(material); 107 | } 108 | else if (material !== this._material) { 109 | this._updateMaterial(material); 110 | } 111 | if (this._renderData) { 112 | this._renderData.material = material; 113 | } 114 | 115 | this.node._renderFlag |= cc['RenderFlow'].FLAG_COLOR; 116 | this.markForUpdateRenderData(true); 117 | this.markForRender(true); 118 | } 119 | else { 120 | this.disableRender(); 121 | } 122 | } 123 | else { 124 | this.markForUpdateRenderData(true); 125 | this.markForRender(true); 126 | } 127 | } 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /assets/script/base/extension/shader/SpriteHook.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "ac5133d9-221b-40c4-8d87-66299ee41700", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "0d8f5306-bddb-4263-997f-25e10823706e", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/CustomMask.ts: -------------------------------------------------------------------------------- 1 | import { Shader } from "../Shader"; 2 | 3 | // Shader= Gray 4 | 5 | export class CustomMask extends Shader { 6 | 7 | public name = "CustomMask"; 8 | 9 | public params = []; 10 | 11 | public defines = []; 12 | 13 | public frag = ` 14 | uniform sampler2D texture; 15 | uniform vec4 color; 16 | varying vec2 uv0; 17 | void main () { 18 | vec4 c = color * texture2D(texture, uv0); 19 | if(c.a > 0.925) { 20 | c.a = 1.0; 21 | } 22 | else if(c.a > 0.90) { 23 | c.a = 0.2; 24 | }else{ 25 | c.a = 0.0; 26 | } 27 | gl_FragColor = c; 28 | } 29 | `; 30 | 31 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/CustomMask.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "1d69c883-4263-4826-943a-75d51a57978a", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/Default.ts: -------------------------------------------------------------------------------- 1 | import { Shader } from "../Shader"; 2 | 3 | // Shader= Banish 4 | 5 | export class Default extends Shader { 6 | 7 | public name = "Default"; 8 | 9 | public defines = []; 10 | 11 | public params = []; 12 | 13 | public frag = ` 14 | uniform sampler2D texture; 15 | uniform vec4 color; 16 | varying vec2 uv0; 17 | void main () { 18 | vec4 c = color * texture2D(texture, uv0); 19 | float gg = (c.r + c.g + c.b) * (1.0 / 3.0); 20 | c.r = gg * 0.9; 21 | c.g = gg * 1.2; 22 | c.b = gg * 0.8; 23 | c.a *= (gg + 0.1); 24 | gl_FragColor = c; 25 | } 26 | `; 27 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/Default.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "04290fdf-7d79-443d-820a-2d0ac54a463c", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/MetaBalls.ts: -------------------------------------------------------------------------------- 1 | import { Shader } from "../Shader"; 2 | 3 | // Shader= MetaBalls 4 | 5 | export class MetaBalls extends Shader { 6 | 7 | public name = "MetaBalls"; 8 | 9 | public params = [ 10 | { name: 'resolution', type: this.renderer.PARAM_FLOAT3 }, 11 | { name: 'metaballs', type: this.renderer.PARAM_FLOAT }, 12 | ]; 13 | 14 | public defines = []; 15 | 16 | frag = 17 | `precision lowp float; 18 | uniform vec4 metaballs[100]; 19 | uniform vec3 resolution; 20 | varying vec2 uv0; 21 | 22 | void main(){ 23 | float x = uv0.x * resolution.x; 24 | float y = resolution.y- uv0.y * resolution.y; 25 | float v = 0.0; 26 | for (int i = 0; i < 100; i++) { 27 | vec4 mb = metaballs[i]; 28 | float dx = mb.x - x; 29 | float dy = mb.y - y; 30 | float r = mb.z; 31 | v += r*r/(dx*dx + dy*dy); 32 | } 33 | if (v > 1.0) { 34 | // gl_FragColor = vec4(x/resolution.x, y/resolution.y, 0.0, 1.0); 35 | gl_FragColor = vec4(33.0/255.0, 166.0/255.0, 255.0/255.0, 1.0); 36 | } else { 37 | gl_FragColor = vec4(1.0, 0.0, 0.0, 0.0); 38 | } 39 | // if(x > resolution.x || y > resolution.y){ 40 | // gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); 41 | // } 42 | }`; 43 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/MetaBalls.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "8ba925d5-bf5a-4e42-894e-0976913f4ded", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Default" 2 | export * from "./MetaBalls" 3 | export * from "./CustomMask" -------------------------------------------------------------------------------- /assets/script/base/extension/shader/shaders/index.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "4da9d8d1-6f31-4560-9c95-042adae24b2b", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/settings.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "35ad87cc-81ea-4ff5-8dc1-899bdb17e538", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/settings/physics-settings.js: -------------------------------------------------------------------------------- 1 | cc.game.on(cc.game.EVENT_ENGINE_INITED, () => { 2 | let physicsManager = cc.director.getPhysicsManager(); 3 | physicsManager.enabled = true; 4 | physicsManager.enabledAccumulator = false; 5 | cc.PhysicsManager.FIXED_TIME_STEP = 1 / 60; 6 | physicsManager.debugDrawFlags = cc.PhysicsManager.DrawBits.e_jointBit; 7 | // physicsManager.debugDrawFlags = 8 | // // // 0; 9 | // // cc.PhysicsManager.DrawBits.e_aabbBit | 10 | // cc.PhysicsManager.DrawBits.e_jointBit | 11 | // cc.PhysicsManager.DrawBits.e_shapeBit 12 | ; 13 | }); 14 | 15 | -------------------------------------------------------------------------------- /assets/settings/physics-settings.js.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "9d86ad5b-fda3-4bf0-90ea-27bf84d17214", 4 | "isPlugin": true, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "experimentalDecorators": true 6 | }, 7 | "exclude": [ 8 | "node_modules", 9 | ".vscode", 10 | "library", 11 | "local", 12 | "settings", 13 | "temp" 14 | ] 15 | } -------------------------------------------------------------------------------- /project.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "cocos2d-html5", 3 | "packages": "packages" 4 | } -------------------------------------------------------------------------------- /screen capture/Test.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuwenkai1023/ccc-fluid-demo/c288d46cda7b60e87cc5e4a3608d0611254c7fd0/screen capture/Test.gif -------------------------------------------------------------------------------- /settings/builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "appKey": "BDA1ADE0-93DC-258B-66DB-58F81692D893", 3 | "appSecret": "5140cfc22f2acaefcb6040fb941fd688", 4 | "encryptJs": false, 5 | "excludeScenes": [], 6 | "fb-instant-games": {}, 7 | "includeAnySDK": false, 8 | "includeSDKBox": false, 9 | "inlineSpriteFrames": true, 10 | "inlineSpriteFrames_native": false, 11 | "jailbreakPlatform": false, 12 | "md5Cache": true, 13 | "mergeStartScene": false, 14 | "oauthLoginServer": "http://oauth.anysdk.com/api/User/LoginOauth/", 15 | "optimizeHotUpdate": false, 16 | "orientation": { 17 | "landscapeLeft": false, 18 | "landscapeRight": false, 19 | "portrait": true, 20 | "upsideDown": false 21 | }, 22 | "packageName": "org.liuwenkai.project2", 23 | "privateKey": "54966EB3D5156CAF5F84D362C9256E7D", 24 | "qqplay": { 25 | "REMOTE_SERVER_ROOT": "", 26 | "orientation": "portrait" 27 | }, 28 | "startScene": "2ec303f6-4299-4997-97d5-28ea37162bce", 29 | "title": "project", 30 | "webOrientation": "auto", 31 | "wechatgame": { 32 | "REMOTE_SERVER_ROOT": "", 33 | "appid": "wx171b511bd9a4ace7", 34 | "isSubdomain": false, 35 | "orientation": "portrait", 36 | "subContext": "" 37 | }, 38 | "xxteaKey": "f12bde3d-3b11-4a", 39 | "zipCompressJs": true 40 | } -------------------------------------------------------------------------------- /settings/builder.panel.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludeScenes": [], 3 | "packageName": "org.liuwenkai.project", 4 | "platform": "web-mobile", 5 | "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49", 6 | "title": "project" 7 | } -------------------------------------------------------------------------------- /settings/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "cocos-analytics": { 3 | "appID": "13798", 4 | "appSecret": "959b3ac0037d0f3c2fdce94f8421a9b2", 5 | "channel": "", 6 | "enable": false, 7 | "version": "" 8 | }, 9 | "collision-matrix": [ 10 | [ 11 | true, 12 | true 13 | ], 14 | [ 15 | true, 16 | true 17 | ] 18 | ], 19 | "design-resolution-height": 1280, 20 | "design-resolution-width": 720, 21 | "excluded-modules": [], 22 | "fit-height": true, 23 | "fit-width": true, 24 | "group-list": [ 25 | "default", 26 | "other" 27 | ], 28 | "simulator-orientation": false, 29 | "simulator-resolution": { 30 | "height": 640, 31 | "width": 960 32 | }, 33 | "use-customize-simulator": false, 34 | "use-project-simulator-setting": false, 35 | "start-scene": "current" 36 | } -------------------------------------------------------------------------------- /template-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuwenkai1023/ccc-fluid-demo/c288d46cda7b60e87cc5e4a3608d0611254c7fd0/template-banner.png -------------------------------------------------------------------------------- /template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TEMPLATES.helloworld-ts.name", 3 | "desc": "TEMPLATES.helloworld-ts.desc", 4 | "banner": "template-banner.png" 5 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": [ "dom", "es5", "es2015.promise" ], 5 | "target": "es5", 6 | "experimentalDecorators": true, 7 | "skipLibCheck": true 8 | }, 9 | "exclude": [ 10 | "node_modules", 11 | "library", 12 | "local", 13 | "temp", 14 | "build", 15 | "settings" 16 | ] 17 | } --------------------------------------------------------------------------------