mirror of
https://github.com/KuoKuo666/CocosCreator-Bubble.git
synced 2026-05-06 13:51:07 +08:00
20191012
This commit is contained in:
53
.gitignore
vendored
Normal file
53
.gitignore
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
# Fireball Projects
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/library/
|
||||
/temp/
|
||||
/local/
|
||||
/build/
|
||||
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
# npm files
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
npm-debug.log
|
||||
node_modules/
|
||||
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
# Logs and databases
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
*.log
|
||||
*.sql
|
||||
*.sqlite
|
||||
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
# files for debugger
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
*.sln
|
||||
*.csproj
|
||||
*.pidb
|
||||
*.unityproj
|
||||
*.suo
|
||||
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
# OS generated files
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
.DS_Store
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
# WebStorm files
|
||||
#/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
.idea/
|
||||
|
||||
#//////////////////////////
|
||||
# VS Code files
|
||||
#//////////////////////////
|
||||
|
||||
.vscode/
|
||||
7
assets/data.meta
Normal file
7
assets/data.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "5fab39bd-6792-493d-8f43-d3f6cabf548a",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
16
assets/data/levelData.json
Normal file
16
assets/data/levelData.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"lv1": [
|
||||
[2,2,2,3,3,3,4,4,4],
|
||||
[2,2,0,3,3,0,4,4],
|
||||
[0,2,0,0,3,0,0,4,0],
|
||||
[0,1,1,1,1,1,1,0],
|
||||
[0,0,1,1,0,1,1,0,0],
|
||||
[0,0,1,0,0,1,0,0],
|
||||
[0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0]
|
||||
]
|
||||
}
|
||||
5
assets/data/levelData.json.meta
Normal file
5
assets/data/levelData.json.meta
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"uuid": "917b9546-68b8-479e-ad5f-5cb1e32ef234",
|
||||
"subMetas": {}
|
||||
}
|
||||
643
assets/game.fire
Normal file
643
assets/game.fire
Normal file
@@ -0,0 +1,643 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.SceneAsset",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"scene": {
|
||||
"__id__": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Scene",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_active": false,
|
||||
"_level": 0,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_is3DNode": true,
|
||||
"groupIndex": 0,
|
||||
"autoReleaseAssets": false,
|
||||
"_id": "8a7db86e-40ea-4005-ad31-ef806fec11ee"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Canvas",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 3
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 7
|
||||
},
|
||||
{
|
||||
"__id__": 8
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 720,
|
||||
"height": 1280
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 360,
|
||||
"y": 640,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "53UUydPLZOpa+h6FhzKizp"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Main Camera",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 4
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 1108.5125168440816
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "b7I7i0ythBQZfDkmS3w3cr"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Camera",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 3
|
||||
},
|
||||
"_enabled": true,
|
||||
"_cullingMask": 4294967295,
|
||||
"_clearFlags": 7,
|
||||
"_backgroundColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_depth": -1,
|
||||
"_zoomRatio": 1,
|
||||
"_targetTexture": null,
|
||||
"_fov": 60,
|
||||
"_orthoSize": 10,
|
||||
"_nearClip": 1,
|
||||
"_farClip": 4096,
|
||||
"_ortho": true,
|
||||
"_rect": {
|
||||
"__type__": "cc.Rect",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
"_renderStages": 1,
|
||||
"_id": "07PAe1g3hEW5SsoMKWyCiW"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "bg",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 6
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 720,
|
||||
"height": 1280
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "8a0Gat9EVFr4dta5pNEo2L"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "e8904d7e-e46a-45f3-a319-150119858587"
|
||||
},
|
||||
"_type": 0,
|
||||
"_sizeMode": 1,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": "baMzXQDt9PK7BdpMsbZIx1"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Canvas",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"_designResolution": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 720,
|
||||
"height": 1280
|
||||
},
|
||||
"_fitWidth": true,
|
||||
"_fitHeight": false,
|
||||
"_id": "66rNXTRbdIf4zQpjtxeC03"
|
||||
},
|
||||
{
|
||||
"__type__": "6e8f2bpKJRLLJnPCx8f3vFZ",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"shooter": {
|
||||
"__id__": 9
|
||||
},
|
||||
"_id": "d6EiZd6VpG36qcNqNdCSuI"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "shooter",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 10
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 3,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 14
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 40,
|
||||
"height": 131
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": -0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 360,
|
||||
"y": 180,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "e1SOEVDRlPd680IvW73b5t"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "ShootLayer",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 9
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_level": 2,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "43uXlv+8JHX7gxKFlcjej1"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "GameLayer",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 10
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "a01MPeoe1Iupu6gyILn6e6"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "BubbleLayer",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 2,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 13
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 0,
|
||||
"height": 0
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": "c3nPtTsMhJqoN36wh7hDzA"
|
||||
},
|
||||
{
|
||||
"__type__": "c3c35Rv27JBRIOSDzrh7MRZ",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 12
|
||||
},
|
||||
"_enabled": true,
|
||||
"bubbleSpriteFrame": [
|
||||
{
|
||||
"__uuid__": "f8ebb73e-6f80-4166-a352-8e043ae708df"
|
||||
},
|
||||
{
|
||||
"__uuid__": "2ff6dd8e-6890-4950-8bb3-b0b2978ca97d"
|
||||
},
|
||||
{
|
||||
"__uuid__": "7fe1a0d4-37d0-4c6e-956b-19d09a99fb0e"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3c26acf7-0d23-4b6a-b56b-3b5ad1f3519b"
|
||||
}
|
||||
],
|
||||
"bubblePrefab": {
|
||||
"__uuid__": "91c2ccd6-0bd3-4da2-b4cc-58797a202360"
|
||||
},
|
||||
"shooter": {
|
||||
"__id__": 9
|
||||
},
|
||||
"levelData": {
|
||||
"__uuid__": "917b9546-68b8-479e-ad5f-5cb1e32ef234"
|
||||
},
|
||||
"_id": "eamkUHYPpOGp5dAeumBIoQ"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 9
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "7bc48a43-36c4-4ed2-a4df-a50bf76e462f"
|
||||
},
|
||||
"_type": 0,
|
||||
"_sizeMode": 1,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": "32gt9M6IVGz6oID0QzTVWC"
|
||||
}
|
||||
]
|
||||
7
assets/game.fire.meta
Normal file
7
assets/game.fire.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"uuid": "8a7db86e-40ea-4005-ad31-ef806fec11ee",
|
||||
"asyncLoadAssets": false,
|
||||
"autoReleaseAssets": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
7
assets/res.meta
Normal file
7
assets/res.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "cf91833e-a427-42e8-89ce-64a6223805e7",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
7
assets/res/prefab.meta
Normal file
7
assets/res/prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "01583de9-f3c1-4ad2-866a-bab38b987937",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
128
assets/res/prefab/bubble.prefab
Normal file
128
assets/res/prefab/bubble.prefab
Normal file
@@ -0,0 +1,128 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 0,
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "bubble",
|
||||
"_objFlags": 0,
|
||||
"_parent": null,
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_level": 1,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 3
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 4
|
||||
},
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 80,
|
||||
"height": 80
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_position": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_scale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"groupIndex": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_srcBlendFactor": 770,
|
||||
"_dstBlendFactor": 771,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "f8ebb73e-6f80-4166-a352-8e043ae708df"
|
||||
},
|
||||
"_type": 0,
|
||||
"_sizeMode": 1,
|
||||
"_fillType": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_atlas": null,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "2620bjKKJhPi6b/2EnkJDAa",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "91c2ccd6-0bd3-4da2-b4cc-58797a202360"
|
||||
},
|
||||
"fileId": "3d4jKgOJlEnJTpQvENhkWO",
|
||||
"sync": false
|
||||
}
|
||||
]
|
||||
8
assets/res/prefab/bubble.prefab.meta
Normal file
8
assets/res/prefab/bubble.prefab.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"uuid": "91c2ccd6-0bd3-4da2-b4cc-58797a202360",
|
||||
"optimizationPolicy": "AUTO",
|
||||
"asyncLoadAssets": false,
|
||||
"readonly": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
7
assets/res/textures.meta
Normal file
7
assets/res/textures.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "e18b149f-6e9e-49d0-89ed-f3b871b0f45d",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
BIN
assets/res/textures/bg.png
Normal file
BIN
assets/res/textures/bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
32
assets/res/textures/bg.png.meta
Normal file
32
assets/res/textures/bg.png.meta
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"ver": "2.3.1",
|
||||
"uuid": "7bb0f575-dfe8-45af-ab1e-e9cf63c610a9",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"bg": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "e8904d7e-e46a-45f3-a319-150119858587",
|
||||
"rawTextureUuid": "7bb0f575-dfe8-45af-ab1e-e9cf63c610a9",
|
||||
"trimType": "custom",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 720,
|
||||
"height": 1280,
|
||||
"rawWidth": 720,
|
||||
"rawHeight": 1280,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
assets/res/textures/bubbles.meta
Normal file
7
assets/res/textures/bubbles.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "910de0c5-4449-43dd-9a86-86739f810cd3",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
BIN
assets/res/textures/bubbles/bubble1.png
Normal file
BIN
assets/res/textures/bubbles/bubble1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
32
assets/res/textures/bubbles/bubble1.png.meta
Normal file
32
assets/res/textures/bubbles/bubble1.png.meta
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"ver": "2.3.1",
|
||||
"uuid": "c24f9b07-2e19-488f-affe-945da3e86b2b",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"bubble1": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "f8ebb73e-6f80-4166-a352-8e043ae708df",
|
||||
"rawTextureUuid": "c24f9b07-2e19-488f-affe-945da3e86b2b",
|
||||
"trimType": "custom",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 80,
|
||||
"height": 80,
|
||||
"rawWidth": 80,
|
||||
"rawHeight": 80,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
assets/res/textures/bubbles/bubble2.png
Normal file
BIN
assets/res/textures/bubbles/bubble2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
32
assets/res/textures/bubbles/bubble2.png.meta
Normal file
32
assets/res/textures/bubbles/bubble2.png.meta
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"ver": "2.3.1",
|
||||
"uuid": "ec8937fa-55f5-4d97-b41d-73d44225ff50",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"bubble2": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "2ff6dd8e-6890-4950-8bb3-b0b2978ca97d",
|
||||
"rawTextureUuid": "ec8937fa-55f5-4d97-b41d-73d44225ff50",
|
||||
"trimType": "custom",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 80,
|
||||
"height": 80,
|
||||
"rawWidth": 80,
|
||||
"rawHeight": 80,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
assets/res/textures/bubbles/bubble3.png
Normal file
BIN
assets/res/textures/bubbles/bubble3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
32
assets/res/textures/bubbles/bubble3.png.meta
Normal file
32
assets/res/textures/bubbles/bubble3.png.meta
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"ver": "2.3.1",
|
||||
"uuid": "7504a837-22f3-48ed-9cdd-5f5318cff6c7",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"bubble3": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "7fe1a0d4-37d0-4c6e-956b-19d09a99fb0e",
|
||||
"rawTextureUuid": "7504a837-22f3-48ed-9cdd-5f5318cff6c7",
|
||||
"trimType": "custom",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 80,
|
||||
"height": 80,
|
||||
"rawWidth": 80,
|
||||
"rawHeight": 80,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
assets/res/textures/bubbles/bubble4.png
Normal file
BIN
assets/res/textures/bubbles/bubble4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
32
assets/res/textures/bubbles/bubble4.png.meta
Normal file
32
assets/res/textures/bubbles/bubble4.png.meta
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"ver": "2.3.1",
|
||||
"uuid": "68dd0831-75a9-41ea-8112-5159283f9b5e",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"bubble4": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "3c26acf7-0d23-4b6a-b56b-3b5ad1f3519b",
|
||||
"rawTextureUuid": "68dd0831-75a9-41ea-8112-5159283f9b5e",
|
||||
"trimType": "custom",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 80,
|
||||
"height": 80,
|
||||
"rawWidth": 80,
|
||||
"rawHeight": 80,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
assets/res/textures/shoot.meta
Normal file
7
assets/res/textures/shoot.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "d51177ac-c6b0-45ae-bc0a-85a9080086e5",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
BIN
assets/res/textures/shoot/shooter.png
Normal file
BIN
assets/res/textures/shoot/shooter.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
32
assets/res/textures/shoot/shooter.png.meta
Normal file
32
assets/res/textures/shoot/shooter.png.meta
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"ver": "2.3.1",
|
||||
"uuid": "f3a97a43-32c8-41b7-b672-c9143186b8bb",
|
||||
"type": "sprite",
|
||||
"wrapMode": "clamp",
|
||||
"filterMode": "bilinear",
|
||||
"premultiplyAlpha": false,
|
||||
"platformSettings": {},
|
||||
"subMetas": {
|
||||
"shooter": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "7bc48a43-36c4-4ed2-a4df-a50bf76e462f",
|
||||
"rawTextureUuid": "f3a97a43-32c8-41b7-b672-c9143186b8bb",
|
||||
"trimType": "custom",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 0,
|
||||
"width": 40,
|
||||
"height": 131,
|
||||
"rawWidth": 40,
|
||||
"rawHeight": 131,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"subMetas": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
assets/script.meta
Normal file
7
assets/script.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "504c2b9b-61e3-49e9-9f2f-87af8471aa67",
|
||||
"isSubpackage": false,
|
||||
"subpackageName": "",
|
||||
"subMetas": {}
|
||||
}
|
||||
56
assets/script/Bubble.ts
Normal file
56
assets/script/Bubble.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import BubbleMgr from "./BubbleMgr";
|
||||
|
||||
const {ccclass, property} = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class Bubble extends cc.Component {
|
||||
|
||||
// 父节点类
|
||||
private parent: BubbleMgr;
|
||||
|
||||
/** 初始化 */
|
||||
public init (parent: BubbleMgr, position: cc.Vec2, spriteFrame: cc.SpriteFrame): void {
|
||||
parent.node.addChild(this.node);
|
||||
this.parent = parent;
|
||||
this.node.position = position;
|
||||
this.setSpriteFrame(spriteFrame);
|
||||
}
|
||||
|
||||
/** 设置纹理 */
|
||||
public setSpriteFrame (spriteFrame: cc.SpriteFrame): void {
|
||||
this.getComponent(cc.Sprite).spriteFrame = spriteFrame;
|
||||
}
|
||||
|
||||
/** 死亡动画 */
|
||||
public playDeathAnimation (index: cc.Vec2): void {
|
||||
this.node.runAction(
|
||||
cc.sequence(
|
||||
// 膨胀后消除自己
|
||||
cc.scaleTo(0.1, 1.2),
|
||||
cc.scaleTo(0.1, 1.0),
|
||||
cc.callFunc(() => {
|
||||
// 将位置空出
|
||||
this.parent.bubblesArray[index.x][index.y] = undefined;
|
||||
}, this),
|
||||
cc.removeSelf()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/** 下落动画 */
|
||||
public playDownAnimation (index: cc.Vec2): void {
|
||||
this.node.runAction(
|
||||
// 渐隐下落
|
||||
cc.sequence(
|
||||
cc.spawn(
|
||||
cc.moveBy(0.5, 0, -300),
|
||||
cc.fadeOut(0.5)
|
||||
),
|
||||
cc.callFunc(() => {
|
||||
this.parent.bubblesArray[index.x][index.y] = undefined;
|
||||
}, this),
|
||||
cc.removeSelf()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
9
assets/script/Bubble.ts.meta
Normal file
9
assets/script/Bubble.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "2620b8ca-2898-4f8b-a6ff-d849e424301a",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
284
assets/script/BubbleMgr.ts
Normal file
284
assets/script/BubbleMgr.ts
Normal file
@@ -0,0 +1,284 @@
|
||||
import { bubbleData, EVENT } from "./Interface";
|
||||
import Bubble from "./Bubble";
|
||||
import Util from "./Util";
|
||||
|
||||
const {ccclass, property} = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class BubbleMgr extends cc.Component {
|
||||
|
||||
/** 泡泡纹理 */
|
||||
@property([cc.SpriteFrame]) bubbleSpriteFrame: cc.SpriteFrame[] = [];
|
||||
/** 预制体 */
|
||||
@property(cc.Prefab) bubblePrefab: cc.Prefab = null;
|
||||
/** 确认发射点 */
|
||||
@property(cc.Node) shooter: cc.Node = null;
|
||||
/** 关卡数据 */
|
||||
@property(cc.JsonAsset) levelData: cc.JsonAsset = null;
|
||||
|
||||
/** 装载场景中所有泡泡,注意 s 这是二维数组 */
|
||||
public bubblesArray: bubbleData[][] = [];
|
||||
/** 当前待发射球 */
|
||||
public shootBubble: bubbleData;
|
||||
/** 是否正在射击的标志 */
|
||||
public isShooting: boolean = false;
|
||||
/** 射出方向 */
|
||||
public shootDir: cc.Vec2 = null;
|
||||
|
||||
public onLoad (): void {
|
||||
this.init("lv1");
|
||||
// 监听触摸结束
|
||||
cc.director.on(EVENT.TOUCHEND_SHOOT, (data) => {
|
||||
console.log('BubbleMgr -on -touchend');
|
||||
// console.log(data);
|
||||
// 转为弧度
|
||||
let r = cc.misc.degreesToRadians(data);
|
||||
// 分量 x - sin y - cos
|
||||
this.shootDir = cc.v2(-Math.sin(r), Math.cos(r));
|
||||
console.log(this.shootDir);
|
||||
// 开启射击
|
||||
this.isShooting = true;
|
||||
}, this);
|
||||
|
||||
this._createOneShooter();
|
||||
}
|
||||
|
||||
public update (dt: number) {
|
||||
if (this.isShooting) {
|
||||
// 小球移动
|
||||
this._bubbleMove(dt);
|
||||
this._isCollided();
|
||||
}
|
||||
}
|
||||
|
||||
/** 检测碰撞 */
|
||||
private _isCollided (): void {
|
||||
for (let row = 0; row < this.bubblesArray.length; row++) {
|
||||
for (let col = 0; col < this.bubblesArray[row].length; col++) {
|
||||
// 是否存在小球
|
||||
if (!this.bubblesArray[row][col]) continue;
|
||||
let n: cc.Node = this.bubblesArray[row][col].node;
|
||||
// 先看 y 轴
|
||||
let offsetY = Math.abs(n.y - this.shootBubble.node.y);
|
||||
if (offsetY > Util.BUBBLE_R * 2) continue;
|
||||
// 再看 x 轴
|
||||
let offsetX = Math.abs(n.x - this.shootBubble.node.x);
|
||||
if (offsetX > Util.BUBBLE_R * 2) continue;
|
||||
// 再做乘法
|
||||
let dis = offsetX * offsetX + offsetY * offsetY;
|
||||
if (dis > Util.BUBBLE_R * 2 * Util.BUBBLE_R * 2) continue;
|
||||
// 在范围内,触发碰撞,停止射击移动
|
||||
this.isShooting = false;
|
||||
// 位置修正
|
||||
this._setBubblePos();
|
||||
// 如果有小球符合条件,return
|
||||
return;
|
||||
}
|
||||
}
|
||||
// 没触发碰撞且碰到最上方
|
||||
if (this.shootBubble.node.y > Util.SCREEN_H - Util.BUBBLE_R) {
|
||||
this.isShooting = false;
|
||||
// 位置修正
|
||||
this._setBubblePos();
|
||||
}
|
||||
}
|
||||
|
||||
/** 根据停止位置,修正 */
|
||||
private _setBubblePos (): void {
|
||||
let index: cc.Vec2 = Util.convertPosToRowCol(this.shootBubble.node.x, this.shootBubble.node.y);
|
||||
this.shootBubble.node.position = Util.convertRowColToPos(index.x, index.y);
|
||||
// 设置对应数据
|
||||
let obj: bubbleData = Object.create(null);
|
||||
obj.node = this.shootBubble.node;
|
||||
obj.color = this.shootBubble.color;
|
||||
obj.isLinked = false;
|
||||
obj.isVisited = false;
|
||||
this.bubblesArray[index.x][index.y] = obj;
|
||||
// 应该遍历相同颜色的泡泡了
|
||||
this._mapColor(index);
|
||||
}
|
||||
|
||||
/** 相同颜色检测,传入当前小球位置 */
|
||||
private _mapColor (index: cc.Vec2): void {
|
||||
// 检测消除方法
|
||||
let test: Function = (row: number, col: number, color: number) => {
|
||||
// 非空检测
|
||||
if (!this.bubblesArray[row] || !this.bubblesArray[row][col]) return;
|
||||
// 获取泡泡数据
|
||||
let b: bubbleData = this.bubblesArray[row][col];
|
||||
// 如果被访问过
|
||||
if (b.isVisited) return;
|
||||
// 如果颜色不同
|
||||
if (b.color !== color) return;
|
||||
// 符合条件
|
||||
b.isVisited = true;
|
||||
let leftTop = col;
|
||||
// 根据不同的行做偏移
|
||||
if (row % 2 === 0) {
|
||||
leftTop = col - 1;
|
||||
}
|
||||
// 每个泡泡周围有6个,依次检测
|
||||
// 左上
|
||||
test(row - 1, leftTop, color);
|
||||
//右上
|
||||
test(row - 1, leftTop + 1, color);
|
||||
//左
|
||||
test(row, col - 1, color);
|
||||
//右
|
||||
test(row, col + 1, color);
|
||||
//左下
|
||||
test(row + 1, leftTop, color);
|
||||
//右下
|
||||
test(row + 1, leftTop + 1, color);
|
||||
}
|
||||
|
||||
// 执行
|
||||
test(index.x, index.y, this.bubblesArray[index.x][index.y].color);
|
||||
// 看有几个相同的
|
||||
let count: number = 0;
|
||||
// 记录消除行列值
|
||||
let record: cc.Vec2[] = [];
|
||||
for (let row = 0; row < this.bubblesArray.length; row++) {
|
||||
for (let col = 0; col < this.bubblesArray[row].length; col++) {
|
||||
if (!this.bubblesArray[row][col]) continue;
|
||||
if (this.bubblesArray[row][col].isVisited) {
|
||||
this.bubblesArray[row][col].isVisited = false;
|
||||
count ++;
|
||||
// 记录要进行消除的泡泡行列值
|
||||
record.push(cc.v2(row, col));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count >= 3) {
|
||||
// 执行消除
|
||||
for (let i in record) {
|
||||
// 获取到该位置泡泡,执行消除
|
||||
let b = this.bubblesArray[record[i].x][record[i].y].node;
|
||||
b.getComponent(Bubble).playDeathAnimation(record[i]);
|
||||
}
|
||||
this.scheduleOnce(this._testUnLinked, 0.3);
|
||||
// this.scheduleOnce(this._nextBubble, 0.3);
|
||||
} else {
|
||||
this._nextBubble();
|
||||
}
|
||||
}
|
||||
|
||||
/** 悬空检测 同理 */
|
||||
private _testUnLinked (): void {
|
||||
// 检测方法
|
||||
let test: Function = (row: number, col: number) => {
|
||||
//从刚刚加入的泡泡为起点,递归寻找相连的
|
||||
if (!this.bubblesArray[row] || !this.bubblesArray[row][col]) return;
|
||||
let b = this.bubblesArray[row][col];
|
||||
if (b.isVisited) return;
|
||||
// 符合条件
|
||||
b.isVisited = true;
|
||||
b.isLinked = true;
|
||||
let leftTop = col;
|
||||
if (row % 2 === 0) {
|
||||
leftTop = col - 1;
|
||||
}
|
||||
// 每个泡泡周围有6个,依次检测
|
||||
// 左上
|
||||
test(row - 1, leftTop);
|
||||
//右上
|
||||
test(row - 1, leftTop + 1);
|
||||
//左
|
||||
test(row, col - 1);
|
||||
//右
|
||||
test(row, col + 1);
|
||||
//左下
|
||||
test(row + 1, leftTop);
|
||||
//右下
|
||||
test(row + 1, leftTop + 1);
|
||||
}
|
||||
// 执行
|
||||
for (let i = 0; i < this.bubblesArray[0].length; i++) {
|
||||
// 执行最上的一排泡泡
|
||||
if (!this.bubblesArray[0][i]) continue;
|
||||
test(0, i);
|
||||
}
|
||||
|
||||
// 局部标志,是否执行过下落
|
||||
let flag: boolean = true;
|
||||
for (let row = 0; row < this.bubblesArray.length; row++) {
|
||||
for (let col = 0; col < this.bubblesArray[row].length; col++) {
|
||||
if (!this.bubblesArray[row][col]) continue;
|
||||
if (!this.bubblesArray[row][col].isLinked) {
|
||||
flag = false;
|
||||
let b = this.bubblesArray[row][col].node;
|
||||
b.getComponent(Bubble).playDownAnimation(cc.v2(row, col));
|
||||
} else {
|
||||
this.bubblesArray[row][col].isVisited = false;
|
||||
this.bubblesArray[row][col].isLinked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag) {
|
||||
this._nextBubble();
|
||||
} else {
|
||||
this.scheduleOnce(this._nextBubble, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
private _nextBubble (): void {
|
||||
// 继续游戏
|
||||
this._createOneShooter();
|
||||
}
|
||||
|
||||
private _bubbleMove (dt: number): void {
|
||||
// 移动速度
|
||||
let speed = 1000;
|
||||
let n: cc.Node = this.shootBubble.node;
|
||||
// 左右出区域要改向 因为不知正负,先求绝对值
|
||||
if (n.x < Util.BUBBLE_R) this.shootDir.x = Math.abs(this.shootDir.x);
|
||||
if (n.x > Util.SCREEN_W - Util.BUBBLE_R) this.shootDir.x = -Math.abs(this.shootDir.x);
|
||||
n.x += this.shootDir.x * speed * dt;
|
||||
n.y += this.shootDir.y * speed * dt;
|
||||
}
|
||||
|
||||
// 根据数据初始化
|
||||
public init (str: string): void {
|
||||
// 获取到关卡数据
|
||||
let data: [][] = this.levelData.json[str];
|
||||
// 将所有数据遍历,0代表空
|
||||
for (let row = 0; row < data.length; row++) {
|
||||
let colBubbleData: bubbleData[] = data[row];
|
||||
// 一起初始化一下 bubblesArray
|
||||
this.bubblesArray[row] = [];
|
||||
for (let col = 0; col < colBubbleData.length; col++) {
|
||||
let color = data[row][col];
|
||||
if (color === 0) continue;
|
||||
// 实例化泡泡
|
||||
let b = cc.instantiate(this.bubblePrefab);
|
||||
// 行列 -> 坐标
|
||||
let pos = Util.convertRowColToPos(row, col);
|
||||
// 调用泡泡初始化
|
||||
b.getComponent(Bubble).init(this, pos, this.bubbleSpriteFrame[color-1]);
|
||||
// 往bubblesArray 里 设置对应数据
|
||||
let obj: bubbleData = Object.create(null);
|
||||
obj.node = b;
|
||||
obj.color = color;
|
||||
obj.isLinked = false;
|
||||
obj.isVisited = false;
|
||||
this.bubblesArray[row][col] = obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** 创造发射小球 */
|
||||
private _createOneShooter (): void {
|
||||
let b = cc.instantiate(this.bubblePrefab);
|
||||
let color = Util.randNum(1, 4);
|
||||
b.getComponent(Bubble).init(this, this.shooter.position, this.bubbleSpriteFrame[color-1]);
|
||||
// 设置对应数据
|
||||
let obj: bubbleData = Object.create(null);
|
||||
obj.node = b;
|
||||
obj.color = color;
|
||||
obj.isLinked = false;
|
||||
obj.isVisited = false;
|
||||
// 指定当前 shootBubble
|
||||
this.shootBubble = obj;
|
||||
}
|
||||
|
||||
}
|
||||
9
assets/script/BubbleMgr.ts.meta
Normal file
9
assets/script/BubbleMgr.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "c3c3546f-dbb2-4144-8392-0f3ae1ecc459",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
13
assets/script/Interface.ts
Normal file
13
assets/script/Interface.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
/** 泡泡对象 */
|
||||
export interface bubbleData {
|
||||
node: cc.Node,
|
||||
color: number,
|
||||
isVisited: boolean,
|
||||
isLinked: boolean
|
||||
}
|
||||
|
||||
/** 导出事件名称枚举 */
|
||||
export enum EVENT {
|
||||
/** 触摸结束后,射击事件,附带角度参数 */
|
||||
TOUCHEND_SHOOT = 'shoot'
|
||||
}
|
||||
9
assets/script/Interface.ts.meta
Normal file
9
assets/script/Interface.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "022296e7-a6b0-46b0-9422-0007550c1e35",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
59
assets/script/TouchMgr.ts
Normal file
59
assets/script/TouchMgr.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { EVENT } from "./Interface";
|
||||
|
||||
const {ccclass, property} = cc._decorator;
|
||||
|
||||
@ccclass
|
||||
export default class TouchMgr extends cc.Component {
|
||||
|
||||
@property(cc.Node) shooter: cc.Node = null;
|
||||
|
||||
public onLoad (): void {
|
||||
this.openTouch();
|
||||
}
|
||||
|
||||
public openTouch (): void {
|
||||
this.node.on(cc.Node.EventType.TOUCH_START, this._touchStart, this);
|
||||
this.node.on(cc.Node.EventType.TOUCH_MOVE, this._touchsMove, this);
|
||||
this.node.on(cc.Node.EventType.TOUCH_END, this._touchEnd, this);
|
||||
}
|
||||
|
||||
public closeTouch (): void {
|
||||
this.node.off(cc.Node.EventType.TOUCH_START, this._touchStart, this);
|
||||
this.node.off(cc.Node.EventType.TOUCH_MOVE, this._touchsMove, this);
|
||||
this.node.off(cc.Node.EventType.TOUCH_END, this._touchEnd, this);
|
||||
}
|
||||
|
||||
private _touchStart (e: cc.Event.EventTouch): void {
|
||||
let d = this.convertToDegree(e);
|
||||
this.shooter.angle = d;
|
||||
}
|
||||
|
||||
private _touchsMove (e: cc.Event.EventTouch): void {
|
||||
let d = this.convertToDegree(e);
|
||||
this.shooter.angle = d;
|
||||
}
|
||||
|
||||
private _touchEnd (e: cc.Event.EventTouch): void {
|
||||
let d = this.convertToDegree(e);
|
||||
this.shooter.angle = d;
|
||||
// 发送角度
|
||||
cc.director.emit(EVENT.TOUCHEND_SHOOT, d);
|
||||
}
|
||||
|
||||
// 转化角度
|
||||
private convertToDegree (e: cc.Event.EventTouch): number {
|
||||
let pos: cc.Vec2 = e.getLocation();
|
||||
let x = pos.x - this.shooter.x;
|
||||
let y = pos.y - this.shooter.y;
|
||||
let radian = Math.atan2(y, x);
|
||||
// 弧度转角度 0 - 2π -> 0 - 360
|
||||
let degree = cc.misc.radiansToDegrees(radian);
|
||||
// angle 与原版 rotation 差 90
|
||||
degree -= 90;
|
||||
// console.log(degree);
|
||||
if (degree < -80 && degree > -180) degree = -80;
|
||||
if (degree > 80 || degree <= -180) degree = 80;
|
||||
return degree;
|
||||
}
|
||||
|
||||
}
|
||||
9
assets/script/TouchMgr.ts.meta
Normal file
9
assets/script/TouchMgr.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "6e8f26e9-2894-4b2c-99cf-0b1f1fdef159",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
31
assets/script/Util.ts
Normal file
31
assets/script/Util.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export default class Util {
|
||||
|
||||
public static readonly SCREEN_W: number = 720;
|
||||
public static readonly SCREEN_H: number = 1280;
|
||||
public static readonly BUBBLE_R: number = 40;
|
||||
/** Y 方向偏差为 40 倍根号 3 */
|
||||
public static readonly BUBBLE_Y: number = 40 * Math.sqrt(3);
|
||||
|
||||
/** 随机数 min - max */
|
||||
public static randNum (min: number, max: number): number {
|
||||
// random 0 - 1 不包括 1
|
||||
return min + Math.floor((max - min + 1) * Math.random());
|
||||
}
|
||||
|
||||
/** 传入二维数组行列,返回泡泡对应位置坐标 */
|
||||
public static convertRowColToPos (row: number, col: number): cc.Vec2 {
|
||||
// 奇数行前方少一个半径宽
|
||||
// 如果为偶数行 row % 2 = 0;
|
||||
let posX: number = this.BUBBLE_R * ((row % 2) + 1) + col * this.BUBBLE_R * 2;
|
||||
let posY: number = this.SCREEN_H - (this.BUBBLE_R + row * this.BUBBLE_Y);
|
||||
return cc.v2(posX, posY);
|
||||
}
|
||||
|
||||
/** 传入泡泡对应位置坐标,返回二维数组行列 */
|
||||
public static convertPosToRowCol (posX: number, posY: number): cc.Vec2 {
|
||||
let row: number = Math.round((this.SCREEN_H - posY - this.BUBBLE_R) / this.BUBBLE_Y);
|
||||
let col: number = Math.round((posX - this.BUBBLE_R * ((row % 2) + 1)) / (this.BUBBLE_R * 2));
|
||||
return cc.v2(row, col);
|
||||
}
|
||||
|
||||
}
|
||||
9
assets/script/Util.ts.meta
Normal file
9
assets/script/Util.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "70790414-52bd-4147-996c-3e13662d4472",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
||||
25777
creator.d.ts
vendored
Normal file
25777
creator.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
15
jsconfig.json
Normal file
15
jsconfig.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
".vscode",
|
||||
"library",
|
||||
"local",
|
||||
"settings",
|
||||
"temp"
|
||||
]
|
||||
}
|
||||
5
project.json
Normal file
5
project.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"engine": "cocos-creator-js",
|
||||
"packages": "packages",
|
||||
"version": "2.1.2"
|
||||
}
|
||||
35
settings/project.json
Normal file
35
settings/project.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"start-scene": "current",
|
||||
"group-list": [
|
||||
"default"
|
||||
],
|
||||
"collision-matrix": [
|
||||
[
|
||||
true
|
||||
]
|
||||
],
|
||||
"excluded-modules": [],
|
||||
"last-module-event-record-time": 0,
|
||||
"design-resolution-width": 960,
|
||||
"design-resolution-height": 640,
|
||||
"fit-width": false,
|
||||
"fit-height": true,
|
||||
"use-project-simulator-setting": false,
|
||||
"simulator-orientation": false,
|
||||
"use-customize-simulator": false,
|
||||
"simulator-resolution": {
|
||||
"width": 960,
|
||||
"height": 640
|
||||
},
|
||||
"assets-sort-type": "name",
|
||||
"facebook": {
|
||||
"enable": false,
|
||||
"appID": "",
|
||||
"live": {
|
||||
"enable": false
|
||||
},
|
||||
"audience": {
|
||||
"enable": false
|
||||
}
|
||||
}
|
||||
}
|
||||
103
settings/services.json
Normal file
103
settings/services.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"services": [
|
||||
{
|
||||
"service_id": "235",
|
||||
"service_name": "Cocos Analytics",
|
||||
"service_icon": "https://account.cocos.com/client/3f8f31ccf66995e183044f167c092395.png",
|
||||
"service_desc": "提供最核心最基本的数据、标准化界面功能简洁易用、数据准确性最好",
|
||||
"service_title": "精准了解游戏的新增、活跃、留存、付费等数据",
|
||||
"service_guide_url": "https://n-analytics.cocos.com/docs/",
|
||||
"service_sample_url": "https://github.com/cocos-creator/tutorial-dark-slash/tree/analytics",
|
||||
"service_dev_url": "http://analytics.cocos.com/realtime/jump_to/<app_id>",
|
||||
"service_type": "3",
|
||||
"service_type_zh": "公司和个人游戏",
|
||||
"support_platform": [
|
||||
"Android",
|
||||
"iOS",
|
||||
"HTML5"
|
||||
],
|
||||
"package_download_url": "https://download.cocos.com/CocosServices/plugins/service-analytics/1.2.0_2.1.0.zip",
|
||||
"package_version_desc": "<b>更新日期:</b>2019/6/10<br>\n<br><b>更新说明:</b><br>\n1、优化SDK,修复H5-SDK 与多个小游戏平台适配问题,删除和优化init事件无用接口<br>\n2、如有相关问题咨询或者需求, 可以联系我们技术支持邮箱 <a href=' '>support-cocos@cocos.com</a>",
|
||||
"service_component_name": "service-analytics",
|
||||
"package_versions": [
|
||||
"1.2.1_2.1.0",
|
||||
"1.2.0_2.1.0",
|
||||
"1.1.7_2.0.3",
|
||||
"1.1.6_2.0.1_2.0.2",
|
||||
"1.1.5_2.0.1",
|
||||
"1.1.4_2.0.1",
|
||||
"1.1.3_2.0.1",
|
||||
"1.1.2_2.0.0",
|
||||
"1.0.0_1.0.5"
|
||||
],
|
||||
"build_platform": [],
|
||||
"require_verify": 0,
|
||||
"service_price": "",
|
||||
"service_protocol": "游戏首次开启该服务时,Cocos会后台通知服务方为游戏开通服务并初始化参数,服务方根据需要可能会获取您的Cocos账户信息,包括账户基本资料、游戏基本资料、账户余额等,点击确认开通按钮即视为您同意该服务访问您的账户信息,详见<a href='http://auth.cocos.com/CocosServiceAgreement.html'>《Cocos用户服务协议》</a>和<a href='http://auth.cocos.com/PrivacyPolicy.html'>《Cocos隐私政策》</a>"
|
||||
},
|
||||
{
|
||||
"service_id": "241",
|
||||
"service_name": "Matchvs",
|
||||
"service_icon": "https://account.cocos.com/client/14406719a07eb3d714d36e5edc6e06fa.png",
|
||||
"service_desc": "通过SDK接入快速实现联网功能、帧同步、国内外多节点、服务器独立部署、gameServer自定义游戏服务端逻辑。",
|
||||
"service_title": "专业成熟的移动游戏联网与服务端解决方案",
|
||||
"service_guide_url": "http://doc.matchvs.com/QuickStart/QuickStart-CocosCreator",
|
||||
"service_sample_url": "http://www.matchvs.com/serviceCourse",
|
||||
"service_dev_url": "http://www.matchvs.com/cocosLogin",
|
||||
"service_type": "3",
|
||||
"service_type_zh": "公司和个人游戏",
|
||||
"support_platform": [
|
||||
"Android",
|
||||
"iOS",
|
||||
"HTML5"
|
||||
],
|
||||
"package_download_url": "https://download.cocos.com/CocosServices/plugins/service-matchvs/1.0.10_3.7.9.10.zip",
|
||||
"package_version_desc": "<p><strong>更新日期:</strong> 2019/9/12\n<strong>更新内容:</strong>\n1.多语言支持\n2.SDK日常更新</p>",
|
||||
"service_component_name": "service-matchvs",
|
||||
"package_versions": [
|
||||
"1.0.9_3.7.9.9",
|
||||
"1.0.7_3.7.9.6",
|
||||
"1.0.6_3.7.9.2",
|
||||
"1.0.5_3.7.7.3",
|
||||
"1.0.3_3.7.6.4",
|
||||
"1.0.10_3.7.9.10"
|
||||
],
|
||||
"build_platform": [],
|
||||
"require_verify": 0,
|
||||
"service_price": "该服务按使用量计费,<a href='https://www.matchvs.com/price'><font color='#dddddd'>计费规则</font></a>,所产生的费用将由第三方从您的 <a href='https://account.cocos.com/#/finance/finance_list'><font color='#dddddd'>Cocos 账户余额</font></a> 中扣除。",
|
||||
"service_protocol": "游戏首次开启该服务时,Cocos会后台通知服务方为游戏开通服务并初始化参数,服务方根据需要可能会获取您的Cocos账户信息,包括账户基本资料、游戏基本资料、账户余额等,点击确认开通按钮即视为您同意该服务访问您的账户信息,详见<a href='http://auth.cocos.com/CocosServiceAgreement.html'>《Cocos用户服务协议》</a>和<a href='http://auth.cocos.com/PrivacyPolicy.html'>《Cocos隐私政策》</a>"
|
||||
},
|
||||
{
|
||||
"service_id": "242",
|
||||
"service_name": "Agora Voice",
|
||||
"service_icon": "https://account.cocos.com/uploads/client_icon/2019-07-16/273952d155b4cdb72d2b1bc61de91ade.png",
|
||||
"service_desc": "稳定、低耗、76ms超低延时、全球200+数据中心覆盖;变声器、超高音质、听声辩位等丰富玩法极速接入;全平台支持:Android、iOS、Web。",
|
||||
"service_title": "游戏内置实时语音",
|
||||
"service_guide_url": "https://docs.agora.io/cn/Interactive Gaming/game_c?platform=Cocos Creator",
|
||||
"service_sample_url": "https://github.com/AgoraIO/Voice-Call-for-Mobile-Gaming/tree/master/Basic-Voice-Call-for-Gaming/Hello-CocosCreator-Voice-Agora",
|
||||
"service_dev_url": "https://sso.agora.io/api/oauth/cocos/login",
|
||||
"service_type": "3",
|
||||
"service_type_zh": "公司和个人游戏",
|
||||
"support_platform": [
|
||||
"Android",
|
||||
"iOS",
|
||||
"HTML5"
|
||||
],
|
||||
"package_download_url": "https://download.cocos.com/CocosServices/plugins/service-agora/1.0.2_2.2.3.20_2.5.2.zip",
|
||||
"package_version_desc": "<b>更新日期:<b>2019/06/27<br>\n<br><b>更新内容:</b><br>\n1、修复部分BUG<br>\n2、代码优化",
|
||||
"service_component_name": "service-agora",
|
||||
"package_versions": [
|
||||
"1.0.2_2.2.3.20_2.5.2",
|
||||
"1.0.1_2.2.3.20_2.5.2"
|
||||
],
|
||||
"build_platform": [],
|
||||
"require_verify": 1,
|
||||
"service_price": "该服务按使用量计费,<a href='https://www.agora.io/cn/price/'><font color='#dddddd'>计费规则</font></a>,所产生的费用将由第三方从您的 <a href='https://account.cocos.com/#/finance/finance_list'><font color='#dddddd'>Cocos 账户余额</font></a> 中扣除。",
|
||||
"service_protocol": "游戏首次开启该服务时,Cocos会后台通知服务方为游戏开通服务并初始化参数,服务方根据需要可能会获取您的Cocos账户信息,包括账户基本资料、游戏基本资料、账户余额等,点击确认开通按钮即视为您同意该服务访问您的账户信息,详见<a href='http://auth.cocos.com/CocosServiceAgreement.html'>《Cocos用户服务协议》</a>和<a href='http://auth.cocos.com/PrivacyPolicy.html'>《Cocos隐私政策》</a>"
|
||||
}
|
||||
],
|
||||
"game": {
|
||||
"name": "未知游戏",
|
||||
"appid": "UNKNOW"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user