From a5995a7942e05bf52a7ae36f1b77113f61df6442 Mon Sep 17 00:00:00 2001 From: tiendat3699 <96950844+tiendat3699@users.noreply.github.com> Date: Thu, 7 Mar 2024 18:15:08 +0700 Subject: [PATCH] feat: game environment logic --- assets/_Game/Animations/goal.anim | 224 ----- assets/_Game/Animations/goal.anim.meta | 13 - assets/_Game/Materials/mat_ring.mtl | 40 + assets/_Game/Materials/mat_ring.mtl.meta | 11 + assets/_Game/Prefabs/Ball.prefab | 531 +++++++++--- assets/_Game/Prefabs/Impact Particle.prefab | 772 ++++++++++++++++++ .../_Game/Prefabs/Impact Particle.prefab.meta | 13 + assets/_Game/Prefabs/box.prefab | 243 ++++++ assets/_Game/Prefabs/box.prefab.meta | 13 + assets/_Game/Scenes/EndLessScene.scene | 617 +++++++++----- assets/_Game/Scripts/Enum/GameEvent.ts | 6 - assets/_Game/Scripts/Enum/PhysicGroup.ts | 10 + .../PhysicGroup.ts.meta} | 2 +- assets/_Game/Scripts/Enum/ScoreType.ts | 6 + assets/_Game/Scripts/Enum/ScoreType.ts.meta | 9 + .../{Interface.meta => Environments.meta} | 2 +- .../Scripts/Environments/DamageableObject.ts | 57 ++ .../Environments/DamageableObject.ts.meta | 9 + assets/_Game/Scripts/Environments/Goal.ts | 19 + .../_Game/Scripts/Environments/Goal.ts.meta | 9 + assets/_Game/Scripts/Events.meta | 12 + assets/_Game/Scripts/Events/GameEvent.ts | 19 + .../{Enum => Events}/GameEvent.ts.meta | 2 +- assets/_Game/Scripts/Gameplay/Ball.ts | 91 ++- .../_Game/Scripts/Interface/GameEventMap.ts | 12 - assets/_Game/Scripts/Manager/EventManger.ts | 3 +- assets/_Game/Scripts/Manager/GameManager.ts | 38 +- .../Scripts/Manager/SpawnObjectManager.ts | 21 + .../Manager/SpawnObjectManager.ts.meta | 9 + assets/_Game/Scripts/UI.meta | 12 + assets/_Game/Scripts/UI/UIController.ts | 14 + assets/_Game/Scripts/UI/UIController.ts.meta | 9 + assets/_Game/Sprites/ring.png | Bin 0 -> 9546 bytes assets/_Game/Sprites/ring.png.meta | 134 +++ settings/v2/packages/project.json | 29 +- 35 files changed, 2368 insertions(+), 643 deletions(-) delete mode 100644 assets/_Game/Animations/goal.anim delete mode 100644 assets/_Game/Animations/goal.anim.meta create mode 100644 assets/_Game/Materials/mat_ring.mtl create mode 100644 assets/_Game/Materials/mat_ring.mtl.meta create mode 100644 assets/_Game/Prefabs/Impact Particle.prefab create mode 100644 assets/_Game/Prefabs/Impact Particle.prefab.meta create mode 100644 assets/_Game/Prefabs/box.prefab create mode 100644 assets/_Game/Prefabs/box.prefab.meta delete mode 100644 assets/_Game/Scripts/Enum/GameEvent.ts create mode 100644 assets/_Game/Scripts/Enum/PhysicGroup.ts rename assets/_Game/Scripts/{Interface/GameEventMap.ts.meta => Enum/PhysicGroup.ts.meta} (70%) create mode 100644 assets/_Game/Scripts/Enum/ScoreType.ts create mode 100644 assets/_Game/Scripts/Enum/ScoreType.ts.meta rename assets/_Game/Scripts/{Interface.meta => Environments.meta} (77%) create mode 100644 assets/_Game/Scripts/Environments/DamageableObject.ts create mode 100644 assets/_Game/Scripts/Environments/DamageableObject.ts.meta create mode 100644 assets/_Game/Scripts/Environments/Goal.ts create mode 100644 assets/_Game/Scripts/Environments/Goal.ts.meta create mode 100644 assets/_Game/Scripts/Events.meta create mode 100644 assets/_Game/Scripts/Events/GameEvent.ts rename assets/_Game/Scripts/{Enum => Events}/GameEvent.ts.meta (70%) delete mode 100644 assets/_Game/Scripts/Interface/GameEventMap.ts create mode 100644 assets/_Game/Scripts/Manager/SpawnObjectManager.ts create mode 100644 assets/_Game/Scripts/Manager/SpawnObjectManager.ts.meta create mode 100644 assets/_Game/Scripts/UI.meta create mode 100644 assets/_Game/Scripts/UI/UIController.ts create mode 100644 assets/_Game/Scripts/UI/UIController.ts.meta create mode 100644 assets/_Game/Sprites/ring.png create mode 100644 assets/_Game/Sprites/ring.png.meta diff --git a/assets/_Game/Animations/goal.anim b/assets/_Game/Animations/goal.anim deleted file mode 100644 index fd00e9e..0000000 --- a/assets/_Game/Animations/goal.anim +++ /dev/null @@ -1,224 +0,0 @@ -[ - { - "__type__": "cc.AnimationClip", - "_name": "goal", - "_objFlags": 0, - "__editorExtras__": { - "embeddedPlayerGroups": [] - }, - "_native": "", - "sample": 60, - "speed": 1, - "wrapMode": 1, - "enableTrsBlending": false, - "_duration": 0.25, - "_hash": 500763545, - "_tracks": [ - { - "__id__": 1 - } - ], - "_exoticAnimation": null, - "_events": [], - "_embeddedPlayers": [] - }, - { - "__type__": "cc.animation.VectorTrack", - "_binding": { - "__type__": "cc.animation.TrackBinding", - "path": { - "__id__": 2 - }, - "proxy": null - }, - "_channels": [ - { - "__id__": 4 - }, - { - "__id__": 6 - }, - { - "__id__": 8 - }, - { - "__id__": 10 - } - ], - "_nComponents": 3 - }, - { - "__type__": "cc.animation.TrackPath", - "_paths": [ - { - "__id__": 3 - }, - "position" - ] - }, - { - "__type__": "cc.animation.HierarchyPath", - "path": "goal" - }, - { - "__type__": "cc.animation.Channel", - "_curve": { - "__id__": 5 - } - }, - { - "__type__": "cc.RealCurve", - "_times": [ - 0, - 0.03333333333333333, - 0.08333333333333333, - 0.15, - 0.2, - 0.25 - ], - "_values": [ - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": 0, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": -10, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": -2, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": 10, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": -3, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": 0, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - } - ], - "preExtrapolation": 1, - "postExtrapolation": 1 - }, - { - "__type__": "cc.animation.Channel", - "_curve": { - "__id__": 7 - } - }, - { - "__type__": "cc.RealCurve", - "_times": [ - 0 - ], - "_values": [ - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 0, - "tangentWeightMode": 0, - "value": 0, - "rightTangent": 0, - "rightTangentWeight": 1, - "leftTangent": 0, - "leftTangentWeight": 1, - "easingMethod": 0, - "__editorExtras__": { - "tangentMode": 0 - } - } - ], - "preExtrapolation": 1, - "postExtrapolation": 1 - }, - { - "__type__": "cc.animation.Channel", - "_curve": { - "__id__": 9 - } - }, - { - "__type__": "cc.RealCurve", - "_times": [], - "_values": [], - "preExtrapolation": 1, - "postExtrapolation": 1 - }, - { - "__type__": "cc.animation.Channel", - "_curve": { - "__id__": 11 - } - }, - { - "__type__": "cc.RealCurve", - "_times": [], - "_values": [], - "preExtrapolation": 1, - "postExtrapolation": 1 - } -] \ No newline at end of file diff --git a/assets/_Game/Animations/goal.anim.meta b/assets/_Game/Animations/goal.anim.meta deleted file mode 100644 index e46c6ce..0000000 --- a/assets/_Game/Animations/goal.anim.meta +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ver": "2.0.3", - "importer": "animation-clip", - "imported": true, - "uuid": "e0cda13a-c026-4d67-82c4-54acfe00f72d", - "files": [ - ".cconb" - ], - "subMetas": {}, - "userData": { - "name": "goal" - } -} diff --git a/assets/_Game/Materials/mat_ring.mtl b/assets/_Game/Materials/mat_ring.mtl new file mode 100644 index 0000000..fde808f --- /dev/null +++ b/assets/_Game/Materials/mat_ring.mtl @@ -0,0 +1,40 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + } + ], + "_props": [ + { + "mainTexture": { + "__uuid__": "55cef4ac-5e35-45d5-90f5-b50f6dcefca7@6c48a", + "__expectedType__": "cc.Texture2D" + }, + "tintColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + } + } + ] +} \ No newline at end of file diff --git a/assets/_Game/Materials/mat_ring.mtl.meta b/assets/_Game/Materials/mat_ring.mtl.meta new file mode 100644 index 0000000..020f647 --- /dev/null +++ b/assets/_Game/Materials/mat_ring.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.20", + "importer": "material", + "imported": true, + "uuid": "9aa5d037-ec4c-4f5a-9513-4a423d576110", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/assets/_Game/Prefabs/Ball.prefab b/assets/_Game/Prefabs/Ball.prefab index 1ff495b..8e06177 100644 --- a/assets/_Game/Prefabs/Ball.prefab +++ b/assets/_Game/Prefabs/Ball.prefab @@ -24,23 +24,20 @@ "_active": true, "_components": [ { - "__id__": 61 + "__id__": 71 }, { - "__id__": 63 + "__id__": 73 }, { - "__id__": 65 + "__id__": 75 }, { - "__id__": 67 - }, - { - "__id__": 69 + "__id__": 77 } ], "_prefab": { - "__id__": 71 + "__id__": 81 }, "_lpos": { "__type__": "cc.Vec3", @@ -73,20 +70,73 @@ }, { "__type__": "cc.Node", - "_name": "Trail", + "_name": "Graphics", "_objFlags": 0, "_parent": { "__id__": 1 }, + "_children": [ + { + "__id__": 3 + }, + { + "__id__": 62 + } + ], + "_active": true, + "_components": [ + { + "__id__": 68 + } + ], + "_prefab": { + "__id__": 70 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "Trail", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, "_children": [], "_active": true, "_components": [ { - "__id__": 3 + "__id__": 4 } ], "_prefab": { - "__id__": 60 + "__id__": 61 }, "_lpos": { "__type__": "cc.Vec3", @@ -122,11 +172,11 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 2 + "__id__": 3 }, "_enabled": true, "__prefab": { - "__id__": 4 + "__id__": 5 }, "_materials": [ { @@ -137,57 +187,57 @@ ], "_visFlags": 0, "startColor": { - "__id__": 5 + "__id__": 6 }, "scaleSpace": 1, "startSize3D": false, "startSizeX": { - "__id__": 6 - }, - "startSize": { - "__id__": 6 - }, - "startSizeY": { "__id__": 7 }, - "startSizeZ": { + "startSize": { + "__id__": 7 + }, + "startSizeY": { "__id__": 8 }, - "startSpeed": { + "startSizeZ": { "__id__": 9 }, + "startSpeed": { + "__id__": 10 + }, "startRotation3D": false, "startRotationX": { - "__id__": 10 - }, - "startRotationY": { "__id__": 11 }, + "startRotationY": { + "__id__": 12 + }, "startRotationZ": { - "__id__": 12 - }, - "startRotation": { - "__id__": 12 - }, - "startDelay": { "__id__": 13 }, - "startLifetime": { + "startRotation": { + "__id__": 13 + }, + "startDelay": { "__id__": 14 }, + "startLifetime": { + "__id__": 15 + }, "duration": 1, "loop": true, "simulationSpeed": 1, "playOnAwake": true, "gravityModifier": { - "__id__": 15 - }, - "rateOverTime": { "__id__": 16 }, - "rateOverDistance": { + "rateOverTime": { "__id__": 17 }, + "rateOverDistance": { + "__id__": 18 + }, "bursts": [], "_renderCulling": false, "_cullingMode": 0, @@ -197,37 +247,37 @@ "_dataCulling": false, "enableCulling": false, "_colorOverLifetimeModule": { - "__id__": 18 + "__id__": 19 }, "_shapeModule": { - "__id__": 20 + "__id__": 21 }, "_sizeOvertimeModule": { - "__id__": 22 + "__id__": 23 }, "_velocityOvertimeModule": { - "__id__": 27 + "__id__": 28 }, "_forceOvertimeModule": { - "__id__": 32 + "__id__": 33 }, "_limitVelocityOvertimeModule": { - "__id__": 36 + "__id__": 37 }, "_rotationOvertimeModule": { - "__id__": 41 + "__id__": 42 }, "_textureAnimationModule": { - "__id__": 45 + "__id__": 46 }, "_noiseModule": { - "__id__": 49 - }, - "_trailModule": { "__id__": 50 }, + "_trailModule": { + "__id__": 51 + }, "renderer": { - "__id__": 59 + "__id__": 60 }, "_prewarm": true, "_capacity": 1, @@ -325,7 +375,7 @@ "__type__": "cc.ColorOvertimeModule", "_enable": false, "color": { - "__id__": 19 + "__id__": 20 } }, { @@ -354,7 +404,7 @@ "arcMode": 0, "arcSpread": 0, "arcSpeed": { - "__id__": 21 + "__id__": 22 }, "length": 5, "boxThickness": { @@ -395,16 +445,16 @@ "_enable": false, "separateAxes": false, "size": { - "__id__": 23 - }, - "x": { "__id__": 24 }, - "y": { + "x": { "__id__": 25 }, - "z": { + "y": { "__id__": 26 + }, + "z": { + "__id__": 27 } }, { @@ -435,17 +485,17 @@ "__type__": "cc.VelocityOvertimeModule", "_enable": false, "x": { - "__id__": 28 - }, - "y": { "__id__": 29 }, - "z": { + "y": { "__id__": 30 }, - "speedModifier": { + "z": { "__id__": 31 }, + "speedModifier": { + "__id__": 32 + }, "space": 1 }, { @@ -476,14 +526,14 @@ "__type__": "cc.ForceOvertimeModule", "_enable": false, "x": { - "__id__": 33 - }, - "y": { "__id__": 34 }, - "z": { + "y": { "__id__": 35 }, + "z": { + "__id__": 36 + }, "space": 1 }, { @@ -508,17 +558,17 @@ "__type__": "cc.LimitVelocityOvertimeModule", "_enable": false, "limitX": { - "__id__": 37 - }, - "limitY": { "__id__": 38 }, - "limitZ": { + "limitY": { "__id__": 39 }, - "limit": { + "limitZ": { "__id__": 40 }, + "limit": { + "__id__": 41 + }, "dampen": 3, "separateAxes": false, "space": 1 @@ -552,13 +602,13 @@ "_enable": false, "_separateAxes": false, "x": { - "__id__": 42 - }, - "y": { "__id__": 43 }, - "z": { + "y": { "__id__": 44 + }, + "z": { + "__id__": 45 } }, { @@ -589,10 +639,10 @@ "_mode": 0, "animation": 0, "frameOverTime": { - "__id__": 46 + "__id__": 47 }, "startFrame": { - "__id__": 48 + "__id__": 49 }, "cycleCount": 0, "_flipU": 0, @@ -605,7 +655,7 @@ "__type__": "cc.CurveRange", "mode": 1, "spline": { - "__id__": 47 + "__id__": 48 }, "multiplier": 1 }, @@ -672,38 +722,38 @@ "_enable": true, "mode": 0, "lifeTime": { - "__id__": 51 + "__id__": 52 }, - "_minParticleDistance": 0.01, + "_minParticleDistance": 0.1, "existWithParticles": true, "textureMode": 0, "widthFromParticle": true, "widthRatio": { - "__id__": 52 + "__id__": 53 }, "colorFromParticle": false, "colorOverTrail": { - "__id__": 54 + "__id__": 55 }, "colorOvertime": { - "__id__": 58 + "__id__": 56 }, "_space": 0, "_particleSystem": { - "__id__": 3 + "__id__": 4 } }, { "__type__": "cc.CurveRange", "mode": 0, - "constant": 1, + "constant": 0.2, "multiplier": 1 }, { "__type__": "cc.CurveRange", "mode": 1, "spline": { - "__id__": 53 + "__id__": 54 }, "multiplier": 1 }, @@ -711,30 +761,30 @@ "__type__": "cc.RealCurve", "_times": [ 0, - 0.11 + 1 ], "_values": [ { "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, + "interpolationMode": 0, "tangentWeightMode": 0, "value": 1, - "rightTangent": -15.269841269841269, + "rightTangent": -1, "rightTangentWeight": 1, - "leftTangent": -15.269841269841269, + "leftTangent": -1, "leftTangentWeight": 1, "easingMethod": 0, "__editorExtras__": null }, { "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, + "interpolationMode": 0, "tangentWeightMode": 0, "value": 0, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, + "rightTangent": -1, + "rightTangentWeight": 1, + "leftTangent": -1, + "leftTangentWeight": 1, "easingMethod": 0, "__editorExtras__": null } @@ -742,36 +792,6 @@ "preExtrapolation": 1, "postExtrapolation": 1 }, - { - "__type__": "cc.GradientRange", - "_mode": 1, - "gradient": { - "__id__": 55 - } - }, - { - "__type__": "cc.Gradient", - "colorKeys": [], - "alphaKeys": [ - { - "__id__": 56 - }, - { - "__id__": 57 - } - ], - "mode": 0 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 255, - "time": 0 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 0, - "time": 0.1 - }, { "__type__": "cc.GradientRange", "_mode": 0, @@ -783,6 +803,36 @@ "a": 255 } }, + { + "__type__": "cc.GradientRange", + "_mode": 1, + "gradient": { + "__id__": 57 + } + }, + { + "__type__": "cc.Gradient", + "colorKeys": [], + "alphaKeys": [ + { + "__id__": 58 + }, + { + "__id__": 59 + } + ], + "mode": 0 + }, + { + "__type__": "cc.AlphaKey", + "alpha": 255, + "time": 0 + }, + { + "__type__": "cc.AlphaKey", + "alpha": 80, + "time": 1 + }, { "__type__": "cc.ParticleSystemRenderer", "_renderMode": 0, @@ -814,17 +864,65 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": null }, + { + "__type__": "cc.Node", + "_name": "Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 63 + }, + { + "__id__": 65 + } + ], + "_prefab": { + "__id__": 67 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 4.547473508864641e-13, + "y": 9.094947017729282e-13, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, { "__type__": "cc.UITransform", "_name": "", "_objFlags": 0, - "__editorExtras__": {}, "node": { - "__id__": 1 + "__id__": 62 }, "_enabled": true, "__prefab": { - "__id__": 62 + "__id__": 64 }, "_contentSize": { "__type__": "cc.Size", @@ -840,19 +938,18 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "beBPBHPMpEJraWP8VptTuG" + "fileId": "c6kr6bHvhF06OlISCzvjZo" }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, - "__editorExtras__": {}, "node": { - "__id__": 1 + "__id__": 62 }, "_enabled": true, "__prefab": { - "__id__": 64 + "__id__": 66 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -885,7 +982,88 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "bbNUf7fcREKbdMzeD2KyNQ" + "fileId": "d8qmZch/1I9IIpjojV8QG7" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "abz3Mf5VxMEaQoSXBedPx/", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": { + "__id__": 69 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 100 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "7efGvJuVhDObli6TK4s4vI" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "44+elJpolOhbUe690US9Nt", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 72 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 200, + "height": 200 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "beBPBHPMpEJraWP8VptTuG" }, { "__type__": "cc.CircleCollider2D", @@ -897,7 +1075,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 66 + "__id__": 74 }, "tag": 0, "_group": 4, @@ -927,7 +1105,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 68 + "__id__": 76 }, "enabledContactListener": true, "bullet": true, @@ -960,24 +1138,105 @@ }, "_enabled": true, "__prefab": { - "__id__": 70 + "__id__": 78 }, + "_impactPrefab": { + "__uuid__": "e4f226d3-8b68-42b8-8bf0-490b8d5765c4", + "__expectedType__": "cc.Prefab" + }, + "_maxSpeed": 100, "_rigidbody": { - "__id__": 67 + "__id__": 75 + }, + "_sprite": { + "__id__": 62 + }, + "_trail": { + "__id__": 4 }, "_collider": { - "__id__": 65 + "__id__": 73 }, "_hitSound": { "__uuid__": "6a432293-3852-4267-be19-c671f36fe9f0", "__expectedType__": "cc.AudioClip" }, + "_jumpCurve": { + "__id__": 79 + }, "_id": "" }, { "__type__": "cc.CompPrefabInfo", "fileId": "69msKyk8NLHqP+rm4QOaXF" }, + { + "__type__": "cc.AnimationCurve", + "_curve": { + "__id__": 80 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.2, + 0.4, + 1 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 0, + "rightTangent": 5.777777777777779, + "rightTangentWeight": 0, + "leftTangent": 5.777777777777779, + "leftTangentWeight": 0, + "easingMethod": 0, + "__editorExtras__": null + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0.37707337523039497, + "rightTangentWeight": 0, + "leftTangent": 0.37707337523039497, + "leftTangentWeight": 0, + "easingMethod": 0, + "__editorExtras__": null + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": -0.5622495861888999, + "rightTangentWeight": 0, + "leftTangent": -0.5622495861888999, + "leftTangentWeight": 0, + "easingMethod": 0, + "__editorExtras__": null + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 0, + "rightTangent": -1.877436291594456, + "rightTangentWeight": 1, + "leftTangent": -1.877436291594456, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": null + } + ], + "preExtrapolation": 2, + "postExtrapolation": 1 + }, { "__type__": "cc.PrefabInfo", "root": { diff --git a/assets/_Game/Prefabs/Impact Particle.prefab b/assets/_Game/Prefabs/Impact Particle.prefab new file mode 100644 index 0000000..7b8ccb0 --- /dev/null +++ b/assets/_Game/Prefabs/Impact Particle.prefab @@ -0,0 +1,772 @@ +[ + { + "__type__": "cc.Prefab", + "_name": "Impact Particle", + "_objFlags": 0, + "_native": "", + "data": { + "__id__": 1 + }, + "optimizationPolicy": 0, + "persistent": false + }, + { + "__type__": "cc.Node", + "_name": "Impact Particle", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": null, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 2 + } + ], + "_prefab": { + "__id__": 61 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 50, + "y": 50, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.ParticleSystem", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 3 + }, + "_materials": [ + { + "__uuid__": "9aa5d037-ec4c-4f5a-9513-4a423d576110", + "__expectedType__": "cc.Material" + } + ], + "_visFlags": 0, + "startColor": { + "__id__": 4 + }, + "scaleSpace": 1, + "startSize3D": false, + "startSizeX": { + "__id__": 5 + }, + "startSize": { + "__id__": 5 + }, + "startSizeY": { + "__id__": 6 + }, + "startSizeZ": { + "__id__": 7 + }, + "startSpeed": { + "__id__": 8 + }, + "startRotation3D": false, + "startRotationX": { + "__id__": 9 + }, + "startRotationY": { + "__id__": 10 + }, + "startRotationZ": { + "__id__": 11 + }, + "startRotation": { + "__id__": 11 + }, + "startDelay": { + "__id__": 12 + }, + "startLifetime": { + "__id__": 13 + }, + "duration": 1, + "loop": false, + "simulationSpeed": 1, + "playOnAwake": false, + "gravityModifier": { + "__id__": 14 + }, + "rateOverTime": { + "__id__": 15 + }, + "rateOverDistance": { + "__id__": 16 + }, + "bursts": [ + { + "__id__": 17 + } + ], + "_renderCulling": false, + "_cullingMode": 0, + "_aabbHalfX": 0, + "_aabbHalfY": 0, + "_aabbHalfZ": 0, + "_dataCulling": false, + "enableCulling": false, + "_colorOverLifetimeModule": { + "__id__": 19 + }, + "_shapeModule": { + "__id__": 24 + }, + "_sizeOvertimeModule": { + "__id__": 26 + }, + "_velocityOvertimeModule": { + "__id__": 32 + }, + "_forceOvertimeModule": { + "__id__": 37 + }, + "_limitVelocityOvertimeModule": { + "__id__": 41 + }, + "_rotationOvertimeModule": { + "__id__": 46 + }, + "_textureAnimationModule": { + "__id__": 50 + }, + "_noiseModule": { + "__id__": 54 + }, + "_trailModule": { + "__id__": 55 + }, + "renderer": { + "__id__": 60 + }, + "_prewarm": false, + "_capacity": 100, + "_simulationSpace": 1, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "e5RR/Euk5E1aiVQtB8bWtU" + }, + { + "__type__": "cc.GradientRange", + "_mode": 0, + "color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + } + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 1.5, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 5, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0.2, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.Burst", + "_time": 0, + "_repeatCount": 1, + "repeatInterval": 0.01, + "count": { + "__id__": 18 + } + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 1, + "multiplier": 1 + }, + { + "__type__": "cc.ColorOvertimeModule", + "_enable": false, + "color": { + "__id__": 20 + } + }, + { + "__type__": "cc.GradientRange", + "_mode": 1, + "gradient": { + "__id__": 21 + } + }, + { + "__type__": "cc.Gradient", + "colorKeys": [], + "alphaKeys": [ + { + "__id__": 22 + }, + { + "__id__": 23 + } + ], + "mode": 0 + }, + { + "__type__": "cc.AlphaKey", + "alpha": 255, + "time": 0 + }, + { + "__type__": "cc.AlphaKey", + "alpha": 100, + "time": 1 + }, + { + "__type__": "cc.ShapeModule", + "_enable": false, + "_shapeType": 2, + "shapeType": 2, + "emitFrom": 0, + "alignToDirection": false, + "randomDirectionAmount": 0, + "sphericalDirectionAmount": 0, + "randomPositionAmount": 0, + "radius": 1, + "radiusThickness": 1, + "arcMode": 0, + "arcSpread": 0, + "arcSpeed": { + "__id__": 25 + }, + "length": 5, + "boxThickness": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_position": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_rotation": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_scale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_arc": 6.283185307179586, + "_angle": 0.4363323129985824 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 1, + "multiplier": 1 + }, + { + "__type__": "cc.SizeOvertimeModule", + "_enable": true, + "separateAxes": false, + "size": { + "__id__": 27 + }, + "x": { + "__id__": 29 + }, + "y": { + "__id__": 30 + }, + "z": { + "__id__": 31 + } + }, + { + "__type__": "cc.CurveRange", + "mode": 1, + "spline": { + "__id__": 28 + }, + "multiplier": 1 + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 1 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 0, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": null + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": null + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.VelocityOvertimeModule", + "_enable": false, + "x": { + "__id__": 33 + }, + "y": { + "__id__": 34 + }, + "z": { + "__id__": 35 + }, + "speedModifier": { + "__id__": 36 + }, + "space": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 1, + "multiplier": 1 + }, + { + "__type__": "cc.ForceOvertimeModule", + "_enable": false, + "x": { + "__id__": 38 + }, + "y": { + "__id__": 39 + }, + "z": { + "__id__": 40 + }, + "space": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.LimitVelocityOvertimeModule", + "_enable": false, + "limitX": { + "__id__": 42 + }, + "limitY": { + "__id__": 43 + }, + "limitZ": { + "__id__": 44 + }, + "limit": { + "__id__": 45 + }, + "dampen": 3, + "separateAxes": false, + "space": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.RotationOvertimeModule", + "_enable": false, + "_separateAxes": false, + "x": { + "__id__": 47 + }, + "y": { + "__id__": 48 + }, + "z": { + "__id__": 49 + } + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.TextureAnimationModule", + "_enable": false, + "_numTilesX": 0, + "numTilesX": 0, + "_numTilesY": 0, + "numTilesY": 0, + "_mode": 0, + "animation": 0, + "frameOverTime": { + "__id__": 51 + }, + "startFrame": { + "__id__": 53 + }, + "cycleCount": 0, + "_flipU": 0, + "_flipV": 0, + "_uvChannelMask": -1, + "randomRow": false, + "rowIndex": 0 + }, + { + "__type__": "cc.CurveRange", + "mode": 1, + "spline": { + "__id__": 52 + }, + "multiplier": 1 + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 1 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 0, + "leftTangent": 0, + "leftTangentWeight": 0, + "easingMethod": 0, + "__editorExtras__": null + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 2, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 0, + "leftTangent": 0, + "leftTangentWeight": 0, + "easingMethod": 0, + "__editorExtras__": null + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.NoiseModule", + "_enable": false, + "_strengthX": 10, + "_strengthY": 10, + "_strengthZ": 10, + "_noiseSpeedX": 0, + "_noiseSpeedY": 0, + "_noiseSpeedZ": 0, + "_noiseFrequency": 1, + "_remapX": 0, + "_remapY": 0, + "_remapZ": 0, + "_octaves": 1, + "_octaveMultiplier": 0.5, + "_octaveScale": 2 + }, + { + "__type__": "cc.TrailModule", + "_enable": false, + "mode": 0, + "lifeTime": { + "__id__": 56 + }, + "_minParticleDistance": 0.1, + "existWithParticles": true, + "textureMode": 0, + "widthFromParticle": true, + "widthRatio": { + "__id__": 57 + }, + "colorFromParticle": false, + "colorOverTrail": { + "__id__": 58 + }, + "colorOvertime": { + "__id__": 59 + }, + "_space": 0, + "_particleSystem": { + "__id__": 2 + } + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 1, + "multiplier": 1 + }, + { + "__type__": "cc.CurveRange", + "mode": 0, + "constant": 0, + "multiplier": 1 + }, + { + "__type__": "cc.GradientRange", + "_mode": 0, + "color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + } + }, + { + "__type__": "cc.GradientRange", + "_mode": 0, + "color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + } + }, + { + "__type__": "cc.ParticleSystemRenderer", + "_renderMode": 0, + "_velocityScale": 1, + "_lengthScale": 1, + "_mesh": null, + "_cpuMaterial": { + "__uuid__": "9aa5d037-ec4c-4f5a-9513-4a423d576110", + "__expectedType__": "cc.Material" + }, + "_gpuMaterial": null, + "_mainTexture": { + "__uuid__": "55cef4ac-5e35-45d5-90f5-b50f6dcefca7@6c48a", + "__expectedType__": "cc.Texture2D" + }, + "_useGPU": false, + "_alignSpace": 2 + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "02Cq1VgJZE6L0Djr0XraDM", + "instance": null, + "targetOverrides": null + } +] \ No newline at end of file diff --git a/assets/_Game/Prefabs/Impact Particle.prefab.meta b/assets/_Game/Prefabs/Impact Particle.prefab.meta new file mode 100644 index 0000000..1ddfd6e --- /dev/null +++ b/assets/_Game/Prefabs/Impact Particle.prefab.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.43", + "importer": "prefab", + "imported": true, + "uuid": "e4f226d3-8b68-42b8-8bf0-490b8d5765c4", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "syncNodeName": "Impact Particle" + } +} diff --git a/assets/_Game/Prefabs/box.prefab b/assets/_Game/Prefabs/box.prefab new file mode 100644 index 0000000..2993f6a --- /dev/null +++ b/assets/_Game/Prefabs/box.prefab @@ -0,0 +1,243 @@ +[ + { + "__type__": "cc.Prefab", + "_name": "box", + "_objFlags": 0, + "_native": "", + "data": { + "__id__": 1 + }, + "optimizationPolicy": 0, + "persistent": false + }, + { + "__type__": "cc.Node", + "_name": "box", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": null, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 2 + }, + { + "__id__": 4 + }, + { + "__id__": 6 + }, + { + "__id__": 8 + }, + { + "__id__": 10 + } + ], + "_prefab": { + "__id__": 12 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": -521.891, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 3 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 20, + "height": 50 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "dd1k5yz/9Jw7Y3h/ln7e+D" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 5 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": { + "__uuid__": "7d8f9b89-4fd1-4c9f-a3ab-38ec7cded7ca@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "33Vv42hplKv6Fr1cHzlkpg" + }, + { + "__type__": "ab3adcigCNMO4YLHg1OcMdG", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 7 + }, + "_collider": { + "__id__": 8 + }, + "_sprite": { + "__id__": 4 + }, + "_score": 10, + "_flySpeed": 500, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "fc99DKgwZBHalLOt5fRIss" + }, + { + "__type__": "cc.BoxCollider2D", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 9 + }, + "tag": 0, + "_group": 16, + "_density": 1, + "_sensor": true, + "_friction": 0.2, + "_restitution": 0, + "_offset": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_size": { + "__type__": "cc.Size", + "width": 20, + "height": 50 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "e3xI5cN0VBUb2QzjmBNBDQ" + }, + { + "__type__": "cc.RigidBody2D", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 11 + }, + "enabledContactListener": true, + "bullet": false, + "awakeOnLoad": true, + "_group": 16, + "_type": 1, + "_allowSleep": true, + "_gravityScale": 1, + "_linearDamping": 0, + "_angularDamping": 0, + "_linearVelocity": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_angularVelocity": 0, + "_fixedRotation": false, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "bbOXJ9GJVHppWgt0OjwEBK" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "31K2tUn39G47RitJdKcKW+", + "targetOverrides": null + } +] \ No newline at end of file diff --git a/assets/_Game/Prefabs/box.prefab.meta b/assets/_Game/Prefabs/box.prefab.meta new file mode 100644 index 0000000..ad45bf6 --- /dev/null +++ b/assets/_Game/Prefabs/box.prefab.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.43", + "importer": "prefab", + "imported": true, + "uuid": "f5073081-8dd5-444f-b755-d18d38aa98fb", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "syncNodeName": "box" + } +} diff --git a/assets/_Game/Scenes/EndLessScene.scene b/assets/_Game/Scenes/EndLessScene.scene index f9110a4..410ef3c 100644 --- a/assets/_Game/Scenes/EndLessScene.scene +++ b/assets/_Game/Scenes/EndLessScene.scene @@ -22,7 +22,7 @@ "_active": true, "_components": [], "_prefab": { - "__id__": 202 + "__id__": 208 }, "_lpos": { "__type__": "cc.Vec3", @@ -53,7 +53,7 @@ }, "autoReleaseAssets": false, "_globals": { - "__id__": 206 + "__id__": 212 }, "_id": "82e6ef2e-3f9c-4d4e-ab02-dc963e925b88" }, @@ -73,19 +73,19 @@ "__id__": 5 }, { - "__id__": 138 + "__id__": 144 } ], "_active": true, "_components": [ { - "__id__": 199 + "__id__": 205 }, { - "__id__": 200 + "__id__": 206 }, { - "__id__": 201 + "__id__": 207 } ], "_prefab": null, @@ -226,34 +226,37 @@ "__id__": 90 }, { - "__id__": 96 + "__id__": 99 }, { - "__id__": 105 + "__id__": 108 }, { - "__id__": 114 + "__id__": 117 }, { - "__id__": 119 + "__id__": 122 }, { - "__id__": 124 + "__id__": 127 }, { - "__id__": 128 + "__id__": 131 }, { - "__id__": 132 + "__id__": 135 + }, + { + "__id__": 139 } ], "_active": true, "_components": [ { - "__id__": 136 + "__id__": 142 }, { - "__id__": 137 + "__id__": 143 } ], "_prefab": null, @@ -2162,7 +2165,7 @@ "_enabled": true, "__prefab": null, "tag": 0, - "_group": 1, + "_group": 16, "_density": 1, "_sensor": false, "_friction": 0.2, @@ -2191,7 +2194,7 @@ "enabledContactListener": false, "bullet": false, "awakeOnLoad": true, - "_group": 1, + "_group": 16, "_type": 0, "_allowSleep": true, "_gravityScale": 0, @@ -2328,7 +2331,7 @@ "_enabled": true, "__prefab": null, "tag": 0, - "_group": 1, + "_group": 16, "_density": 1, "_sensor": false, "_friction": 0.2, @@ -2357,7 +2360,7 @@ "enabledContactListener": false, "bullet": false, "awakeOnLoad": true, - "_group": 1, + "_group": 16, "_type": 0, "_allowSleep": true, "_gravityScale": 0, @@ -2494,7 +2497,7 @@ "_enabled": true, "__prefab": null, "tag": 0, - "_group": 1, + "_group": 16, "_density": 1, "_sensor": false, "_friction": 2, @@ -2523,7 +2526,7 @@ "enabledContactListener": false, "bullet": false, "awakeOnLoad": true, - "_group": 1, + "_group": 16, "_type": 0, "_allowSleep": true, "_gravityScale": 0, @@ -3685,14 +3688,13 @@ "_children": [ { "__id__": 91 - } - ], - "_active": true, - "_components": [ + }, { "__id__": 95 } ], + "_active": true, + "_components": [], "_prefab": null, "_lpos": { "__type__": "cc.Vec3", @@ -3725,7 +3727,7 @@ }, { "__type__": "cc.Node", - "_name": "goal", + "_name": "goal border", "_objFlags": 0, "_parent": { "__id__": 90 @@ -3922,26 +3924,117 @@ "_id": "a44nfXhQdF7IEfFZttDdpd" }, { - "__type__": "cc.Animation", + "__type__": "cc.Node", + "_name": "Goal trigger", + "_objFlags": 0, + "_parent": { + "__id__": 90 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 96 + }, + { + "__id__": 97 + }, + { + "__id__": 98 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": -11.826, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "24Z1PXGL9KH6Genuxsq/oy" + }, + { + "__type__": "cc.UITransform", "_name": "", "_objFlags": 0, "node": { - "__id__": 90 + "__id__": 95 }, "_enabled": true, "__prefab": null, - "playOnLoad": false, - "_clips": [ - { - "__uuid__": "e0cda13a-c026-4d67-82c4-54acfe00f72d", - "__expectedType__": "cc.AnimationClip" - } - ], - "_defaultClip": { - "__uuid__": "e0cda13a-c026-4d67-82c4-54acfe00f72d", - "__expectedType__": "cc.AnimationClip" + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 100 }, - "_id": "4dGhXzDiRH2p4n/RlFX0Xk" + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "55dW+Ej7FAFbcc4xp5K4HU" + }, + { + "__type__": "cc.BoxCollider2D", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 95 + }, + "_enabled": true, + "__prefab": null, + "tag": 0, + "_group": 2, + "_density": 1, + "_sensor": true, + "_friction": 0.2, + "_restitution": 0, + "_offset": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_size": { + "__type__": "cc.Size", + "width": 293.8, + "height": 147.2 + }, + "_id": "f3S7965b1DtLqzagz1Dfqz" + }, + { + "__type__": "4aff5YOJDpF3Znxw1w/OsmC", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 95 + }, + "_enabled": true, + "__prefab": null, + "_collider": { + "__id__": 97 + }, + "_score": 100, + "_id": "f4Z7+EX9BP57CMdD2vzO+A" }, { "__type__": "cc.Node", @@ -3953,16 +4046,16 @@ }, "_children": [ { - "__id__": 97 + "__id__": 100 } ], "_active": true, "_components": [ { - "__id__": 100 + "__id__": 103 }, { - "__id__": 104 + "__id__": 107 } ], "_prefab": null, @@ -4001,17 +4094,11 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 96 + "__id__": 99 }, "_children": [], "_active": true, "_components": [ - { - "__id__": 98 - }, - { - "__id__": 99 - }, { "__id__": 101 }, @@ -4019,7 +4106,13 @@ "__id__": 102 }, { - "__id__": 103 + "__id__": 104 + }, + { + "__id__": 105 + }, + { + "__id__": 106 } ], "_prefab": null, @@ -4058,7 +4151,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 97 + "__id__": 100 }, "_enabled": true, "__prefab": null, @@ -4086,7 +4179,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 97 + "__id__": 100 }, "_enabled": true, "__prefab": null, @@ -4102,7 +4195,7 @@ }, "collideConnected": false, "connectedBody": { - "__id__": 100 + "__id__": 103 }, "_enableLimit": true, "_lowerAngle": -25, @@ -4118,7 +4211,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 96 + "__id__": 99 }, "_enabled": true, "__prefab": null, @@ -4146,7 +4239,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 97 + "__id__": 100 }, "_enabled": true, "__prefab": null, @@ -4220,7 +4313,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 97 + "__id__": 100 }, "_enabled": true, "__prefab": null, @@ -4241,7 +4334,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 97 + "__id__": 100 }, "_enabled": true, "__prefab": null, @@ -4279,12 +4372,12 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 96 + "__id__": 99 }, "_enabled": true, "__prefab": null, "_hingeJoint": { - "__id__": 99 + "__id__": 102 }, "_motorSpeedActive": -10000, "_motorSpeedDeActive": 10000, @@ -4301,16 +4394,16 @@ }, "_children": [ { - "__id__": 106 + "__id__": 109 } ], "_active": true, "_components": [ { - "__id__": 109 + "__id__": 112 }, { - "__id__": 113 + "__id__": 116 } ], "_prefab": null, @@ -4349,17 +4442,11 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 105 + "__id__": 108 }, "_children": [], "_active": true, "_components": [ - { - "__id__": 107 - }, - { - "__id__": 108 - }, { "__id__": 110 }, @@ -4367,7 +4454,13 @@ "__id__": 111 }, { - "__id__": 112 + "__id__": 113 + }, + { + "__id__": 114 + }, + { + "__id__": 115 } ], "_prefab": null, @@ -4406,7 +4499,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 106 + "__id__": 109 }, "_enabled": true, "__prefab": null, @@ -4434,7 +4527,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 106 + "__id__": 109 }, "_enabled": true, "__prefab": null, @@ -4450,7 +4543,7 @@ }, "collideConnected": false, "connectedBody": { - "__id__": 109 + "__id__": 112 }, "_enableLimit": true, "_lowerAngle": -30, @@ -4466,7 +4559,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 105 + "__id__": 108 }, "_enabled": true, "__prefab": null, @@ -4494,7 +4587,7 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 106 + "__id__": 109 }, "_enabled": true, "__prefab": null, @@ -4568,7 +4661,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 106 + "__id__": 109 }, "_enabled": true, "__prefab": null, @@ -4589,7 +4682,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 106 + "__id__": 109 }, "_enabled": true, "__prefab": null, @@ -4627,12 +4720,12 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 105 + "__id__": 108 }, "_enabled": true, "__prefab": null, "_hingeJoint": { - "__id__": 108 + "__id__": 111 }, "_motorSpeedActive": 10000, "_motorSpeedDeActive": -10000, @@ -4649,17 +4742,17 @@ "_children": [], "_active": true, "_components": [ - { - "__id__": 115 - }, - { - "__id__": 116 - }, - { - "__id__": 117 - }, { "__id__": 118 + }, + { + "__id__": 119 + }, + { + "__id__": 120 + }, + { + "__id__": 121 } ], "_prefab": null, @@ -4697,7 +4790,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 114 + "__id__": 117 }, "_enabled": true, "__prefab": null, @@ -4718,7 +4811,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 114 + "__id__": 117 }, "_enabled": true, "__prefab": null, @@ -4756,7 +4849,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 114 + "__id__": 117 }, "_enabled": true, "__prefab": null, @@ -4830,7 +4923,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 114 + "__id__": 117 }, "_enabled": true, "__prefab": null, @@ -4862,17 +4955,17 @@ "_children": [], "_active": true, "_components": [ - { - "__id__": 120 - }, - { - "__id__": 121 - }, - { - "__id__": 122 - }, { "__id__": 123 + }, + { + "__id__": 124 + }, + { + "__id__": 125 + }, + { + "__id__": 126 } ], "_prefab": null, @@ -4910,7 +5003,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 119 + "__id__": 122 }, "_enabled": true, "__prefab": null, @@ -4931,7 +5024,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 119 + "__id__": 122 }, "_enabled": true, "__prefab": null, @@ -4969,7 +5062,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 119 + "__id__": 122 }, "_enabled": true, "__prefab": null, @@ -5043,7 +5136,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 119 + "__id__": 122 }, "_enabled": true, "__prefab": null, @@ -5076,13 +5169,13 @@ "_active": true, "_components": [ { - "__id__": 125 + "__id__": 128 }, { - "__id__": 126 + "__id__": 129 }, { - "__id__": 127 + "__id__": 130 } ], "_prefab": null, @@ -5120,7 +5213,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 127 }, "_enabled": true, "__prefab": null, @@ -5141,7 +5234,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 127 }, "_enabled": true, "__prefab": null, @@ -5179,7 +5272,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 127 }, "_enabled": true, "__prefab": null, @@ -5259,13 +5352,13 @@ "_active": true, "_components": [ { - "__id__": 129 + "__id__": 132 }, { - "__id__": 130 + "__id__": 133 }, { - "__id__": 131 + "__id__": 134 } ], "_prefab": null, @@ -5303,7 +5396,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 131 }, "_enabled": true, "__prefab": null, @@ -5324,7 +5417,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 131 }, "_enabled": true, "__prefab": null, @@ -5362,7 +5455,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 131 }, "_enabled": true, "__prefab": null, @@ -5442,20 +5535,20 @@ "_active": true, "_components": [ { - "__id__": 133 + "__id__": 136 }, { - "__id__": 134 + "__id__": 137 }, { - "__id__": 135 + "__id__": 138 } ], "_prefab": null, "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -1226.271, + "y": -1335.362, "z": 0 }, "_lrot": { @@ -5486,7 +5579,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 132 + "__id__": 135 }, "_enabled": true, "__prefab": null, @@ -5507,7 +5600,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 132 + "__id__": 135 }, "_enabled": true, "__prefab": null, @@ -5534,15 +5627,100 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 132 + "__id__": 135 }, "_enabled": true, "__prefab": null, "_collider": { - "__id__": 134 + "__id__": 137 }, "_id": "bbbZDnhUdOPK/ENRBm53G2" }, + { + "__type__": "cc.Node", + "_name": "SpawnManager", + "_objFlags": 0, + "_parent": { + "__id__": 5 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 140 + }, + { + "__id__": 141 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "f6dKzRg9FNMLz0KZ4X2TcX" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 139 + }, + "_enabled": true, + "__prefab": null, + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 100 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "6bnAna8+9A2ZKDQc0uewcu" + }, + { + "__type__": "402d0NRh/pCFotZG+o5aE8p", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 139 + }, + "_enabled": true, + "__prefab": null, + "_objects": [ + { + "__uuid__": "f5073081-8dd5-444f-b755-d18d38aa98fb", + "__expectedType__": "cc.Prefab" + } + ], + "_id": "c3k9rnGyxBF4r6tlo4EOFa" + }, { "__type__": "cc.UITransform", "_name": "", @@ -5581,13 +5759,10 @@ "_ballSpawnPosition": { "__type__": "cc.Vec3", "x": 0, - "y": -1130, + "y": -1200, "z": 0 }, - "audio": { - "__uuid__": "6a432293-3852-4267-be19-c671f36fe9f0", - "__expectedType__": "cc.AudioClip" - }, + "_balls": 3, "_id": "94qg9r7nVDkbO1S3Aid8/t" }, { @@ -5597,14 +5772,14 @@ "__id__": 2 }, "_prefab": { - "__id__": 139 + "__id__": 145 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 138 + "__id__": 144 }, "asset": { "__uuid__": "f54a7c19-37d5-4255-9336-f6df0e956be7", @@ -5612,7 +5787,7 @@ }, "fileId": "65yusfkDBDE68dh4sqPVS4", "instance": { - "__id__": 140 + "__id__": 146 }, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -5624,26 +5799,11 @@ "mountedChildren": [], "mountedComponents": [], "propertyOverrides": [ - { - "__id__": 141 - }, - { - "__id__": 143 - }, - { - "__id__": 144 - }, - { - "__id__": 145 - }, - { - "__id__": 146 - }, { "__id__": 147 }, { - "__id__": 148 + "__id__": 149 }, { "__id__": 150 @@ -5660,9 +5820,6 @@ { "__id__": 154 }, - { - "__id__": 155 - }, { "__id__": 156 }, @@ -5753,12 +5910,21 @@ { "__id__": 185 }, + { + "__id__": 186 + }, { "__id__": 187 }, + { + "__id__": 188 + }, { "__id__": 189 }, + { + "__id__": 190 + }, { "__id__": 191 }, @@ -5772,7 +5938,16 @@ "__id__": 197 }, { - "__id__": 198 + "__id__": 199 + }, + { + "__id__": 201 + }, + { + "__id__": 203 + }, + { + "__id__": 204 } ], "removedComponents": [] @@ -5780,7 +5955,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 142 + "__id__": 148 }, "propertyPath": [ "_name" @@ -5796,7 +5971,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 142 + "__id__": 148 }, "propertyPath": [ "_lpos" @@ -5811,7 +5986,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 142 + "__id__": 148 }, "propertyPath": [ "_lrot" @@ -5827,7 +6002,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 142 + "__id__": 148 }, "propertyPath": [ "_euler" @@ -5842,7 +6017,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 142 + "__id__": 148 }, "propertyPath": [ "_active" @@ -5852,7 +6027,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 142 + "__id__": 148 }, "propertyPath": [ "_lscale" @@ -5867,7 +6042,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startSizeX", @@ -5884,7 +6059,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startSizeX", @@ -5895,7 +6070,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startSizeY", @@ -5906,7 +6081,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startSizeY", @@ -5917,7 +6092,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_shapeModule", @@ -5928,7 +6103,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "duration" @@ -5938,7 +6113,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "bursts", @@ -5950,7 +6125,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "gravityModifier", @@ -5961,7 +6136,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_materials", @@ -5972,7 +6147,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_materials", @@ -5983,7 +6158,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "renderer", @@ -5994,7 +6169,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_materials", @@ -6008,7 +6183,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "renderer", @@ -6022,7 +6197,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "renderer", @@ -6033,7 +6208,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startRotationX", @@ -6044,7 +6219,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startRotationY", @@ -6055,7 +6230,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startRotationZ", @@ -6066,7 +6241,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_velocityOvertimeModule", @@ -6077,7 +6252,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_velocityOvertimeModule", @@ -6089,7 +6264,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_velocityOvertimeModule", @@ -6101,7 +6276,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_velocityOvertimeModule", @@ -6113,7 +6288,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_forceOvertimeModule", @@ -6124,7 +6299,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_forceOvertimeModule", @@ -6136,7 +6311,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_rotationOvertimeModule", @@ -6147,7 +6322,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_rotationOvertimeModule", @@ -6159,7 +6334,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_rotationOvertimeModule", @@ -6170,7 +6345,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_rotationOvertimeModule", @@ -6182,7 +6357,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "_rotationOvertimeModule", @@ -6194,7 +6369,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "loop" @@ -6204,7 +6379,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "playOnAwake" @@ -6214,7 +6389,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6225,7 +6400,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6238,7 +6413,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6258,7 +6433,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6272,7 +6447,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6292,7 +6467,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6306,7 +6481,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6315,7 +6490,7 @@ "3" ], "value": { - "__id__": 186 + "__id__": 192 } }, { @@ -6332,7 +6507,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6341,7 +6516,7 @@ "4" ], "value": { - "__id__": 188 + "__id__": 194 } }, { @@ -6358,7 +6533,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6367,7 +6542,7 @@ "5" ], "value": { - "__id__": 190 + "__id__": 196 } }, { @@ -6384,7 +6559,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6393,7 +6568,7 @@ "6" ], "value": { - "__id__": 192 + "__id__": 198 } }, { @@ -6410,7 +6585,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6419,7 +6594,7 @@ "7" ], "value": { - "__id__": 194 + "__id__": 200 } }, { @@ -6436,7 +6611,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6445,7 +6620,7 @@ "8" ], "value": { - "__id__": 196 + "__id__": 202 } }, { @@ -6462,7 +6637,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6482,7 +6657,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 149 + "__id__": 155 }, "propertyPath": [ "startColor", @@ -6569,32 +6744,32 @@ "instance": null, "targetOverrides": [ { - "__id__": 203 + "__id__": 209 } ], "nestedPrefabInstanceRoots": [ { - "__id__": 138 + "__id__": 144 } ] }, { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 138 + "__id__": 144 }, "sourceInfo": { - "__id__": 204 + "__id__": 210 }, "propertyPath": [ "_trailModule", "_particleSystem" ], "target": { - "__id__": 138 + "__id__": 144 }, "targetInfo": { - "__id__": 205 + "__id__": 211 } }, { @@ -6612,22 +6787,22 @@ { "__type__": "cc.SceneGlobals", "ambient": { - "__id__": 207 + "__id__": 213 }, "shadows": { - "__id__": 208 + "__id__": 214 }, "_skybox": { - "__id__": 209 + "__id__": 215 }, "fog": { - "__id__": 210 + "__id__": 216 }, "octree": { - "__id__": 211 + "__id__": 217 }, "lightProbeInfo": { - "__id__": 212 + "__id__": 218 }, "bakedWithStationaryMainLight": false, "bakedWithHighpLightmap": false diff --git a/assets/_Game/Scripts/Enum/GameEvent.ts b/assets/_Game/Scripts/Enum/GameEvent.ts deleted file mode 100644 index a54d062..0000000 --- a/assets/_Game/Scripts/Enum/GameEvent.ts +++ /dev/null @@ -1,6 +0,0 @@ -enum GameEvent { - GameStateChange, - BallHit, -} - -export default GameEvent; diff --git a/assets/_Game/Scripts/Enum/PhysicGroup.ts b/assets/_Game/Scripts/Enum/PhysicGroup.ts new file mode 100644 index 0000000..7260bc0 --- /dev/null +++ b/assets/_Game/Scripts/Enum/PhysicGroup.ts @@ -0,0 +1,10 @@ +import { Enum } from 'cc'; + +enum PhysicsGroup { + DEFAULT = 1 << 0, + TRIGGER = 1 << 1, + BALL = 1 << 2, + BALLTHROWING = 1 << 3, +} + +export default Enum(PhysicsGroup); diff --git a/assets/_Game/Scripts/Interface/GameEventMap.ts.meta b/assets/_Game/Scripts/Enum/PhysicGroup.ts.meta similarity index 70% rename from assets/_Game/Scripts/Interface/GameEventMap.ts.meta rename to assets/_Game/Scripts/Enum/PhysicGroup.ts.meta index 157a024..6bccbec 100644 --- a/assets/_Game/Scripts/Interface/GameEventMap.ts.meta +++ b/assets/_Game/Scripts/Enum/PhysicGroup.ts.meta @@ -2,7 +2,7 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "b1eecaf3-413b-4baa-b963-ac905620d203", + "uuid": "abe5050b-d03f-43e5-a763-814051bfe9e0", "files": [], "subMetas": {}, "userData": {} diff --git a/assets/_Game/Scripts/Enum/ScoreType.ts b/assets/_Game/Scripts/Enum/ScoreType.ts new file mode 100644 index 0000000..ed02273 --- /dev/null +++ b/assets/_Game/Scripts/Enum/ScoreType.ts @@ -0,0 +1,6 @@ +enum ScoreType { + Goal, + DestroyObject, +} + +export default ScoreType; diff --git a/assets/_Game/Scripts/Enum/ScoreType.ts.meta b/assets/_Game/Scripts/Enum/ScoreType.ts.meta new file mode 100644 index 0000000..915df13 --- /dev/null +++ b/assets/_Game/Scripts/Enum/ScoreType.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b5068470-ca45-4461-957c-63a3bd41944f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/_Game/Scripts/Interface.meta b/assets/_Game/Scripts/Environments.meta similarity index 77% rename from assets/_Game/Scripts/Interface.meta rename to assets/_Game/Scripts/Environments.meta index fe0d363..33238f5 100644 --- a/assets/_Game/Scripts/Interface.meta +++ b/assets/_Game/Scripts/Environments.meta @@ -2,7 +2,7 @@ "ver": "1.1.0", "importer": "directory", "imported": true, - "uuid": "29983e40-308b-4f9e-9e19-104e958a083b", + "uuid": "0d010146-70ff-4b4b-a3cc-143f843657b1", "files": [], "subMetas": {}, "userData": { diff --git a/assets/_Game/Scripts/Environments/DamageableObject.ts b/assets/_Game/Scripts/Environments/DamageableObject.ts new file mode 100644 index 0000000..ad73e93 --- /dev/null +++ b/assets/_Game/Scripts/Environments/DamageableObject.ts @@ -0,0 +1,57 @@ +import { _decorator, CCFloat, CCInteger, Collider2D, Color, Component, Contact2DType, Sprite, Vec3 } from 'cc'; +import { GameManager } from '../Manager/GameManager'; +const { ccclass, property, float } = _decorator; + +@ccclass('DamageableObject') +export class DamageableObject extends Component { + @property({ type: Collider2D, visible: true }) + private _collider: Collider2D; + @property({ type: Sprite, visible: true }) + private _sprite: Sprite; + @property({ type: CCInteger, visible: true }) + private _score: number; + @property({ type: CCFloat, visible: true }) + private _flySpeed: number; + + private _flyDirection: Vec3; + private _targetColor: Color; + private _hitted = false; + + protected onLoad(): void { + this._collider.on(Contact2DType.BEGIN_CONTACT, this.onContactBegin, this); + } + + protected update(dt: number): void { + if (this._hitted) { + const pos = new Vec3(); + Vec3.multiplyScalar(pos, this._flyDirection, this._flySpeed * dt); + this.node.worldPosition = this.node.getWorldPosition().add(pos); + + const scale = new Vec3(); + Vec3.multiplyScalar(scale, Vec3.ONE.clone(), 0.5 * dt); + this.node.scale = this.node.getScale().add(scale); + + this.node.angle += 800 * dt; + + this._sprite.color = this._sprite.color.clone().lerp(this._targetColor, 2 * dt); + if (this._sprite.color.a == 0) { + } + } + } + + private onContactBegin(selfCollider: Collider2D, otherCollider: Collider2D) { + if (this._hitted) return; + this._collider.enabled = false; + let center = this.node.getWorldPosition(); + let other = otherCollider.node.getWorldPosition(); + this._flyDirection = center.subtract(other); + this._flyDirection.normalize(); + this._hitted = true; + this._targetColor = this._sprite.color.clone(); + this._targetColor.a = 0; + this.node.setSiblingIndex(this.node.parent.children.length - 1); + if (this._score > 0) { + GameManager.instance.destroyEnviromentsObject(this._score); + } + } +} diff --git a/assets/_Game/Scripts/Environments/DamageableObject.ts.meta b/assets/_Game/Scripts/Environments/DamageableObject.ts.meta new file mode 100644 index 0000000..a298440 --- /dev/null +++ b/assets/_Game/Scripts/Environments/DamageableObject.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ab3ad722-8023-4c3b-860b-1e0d4e70c746", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/_Game/Scripts/Environments/Goal.ts b/assets/_Game/Scripts/Environments/Goal.ts new file mode 100644 index 0000000..41b091d --- /dev/null +++ b/assets/_Game/Scripts/Environments/Goal.ts @@ -0,0 +1,19 @@ +import { _decorator, CCInteger, Collider2D, Component, Contact2DType, Node } from 'cc'; +import { GameManager } from '../Manager/GameManager'; +const { ccclass, property, float } = _decorator; + +@ccclass('Goal') +export class Goal extends Component { + @property({ type: Collider2D, visible: true }) + private _collider: Collider2D; + @property({ type: CCInteger, visible: true }) + private _score: number; + + protected onLoad(): void { + this._collider.on(Contact2DType.BEGIN_CONTACT, this.onContactBegin, this); + } + + private onContactBegin(selfCollider: Collider2D, otherCollider: Collider2D) { + GameManager.instance.goal(this._score, otherCollider.node); + } +} diff --git a/assets/_Game/Scripts/Environments/Goal.ts.meta b/assets/_Game/Scripts/Environments/Goal.ts.meta new file mode 100644 index 0000000..9e89613 --- /dev/null +++ b/assets/_Game/Scripts/Environments/Goal.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "4aff560e-243a-45dd-99f1-c35c3f3ac982", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/_Game/Scripts/Events.meta b/assets/_Game/Scripts/Events.meta new file mode 100644 index 0000000..b7d51a8 --- /dev/null +++ b/assets/_Game/Scripts/Events.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "2337eea2-81d3-4031-842a-83912dd198d5", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/assets/_Game/Scripts/Events/GameEvent.ts b/assets/_Game/Scripts/Events/GameEvent.ts new file mode 100644 index 0000000..ebf9cca --- /dev/null +++ b/assets/_Game/Scripts/Events/GameEvent.ts @@ -0,0 +1,19 @@ +import GameState from '../Enum/GameState'; +import ScoreType from '../Enum/ScoreType'; + +enum GameEvent { + GameStateChange, + Score, +} + +export interface GameEventCallbackMap { + [GameEvent.GameStateChange]: (state: GameState) => void; + [GameEvent.Score]: (type: ScoreType, score: number) => void; +} + +export interface GameEventArgMap { + [GameEvent.GameStateChange]: GameState; + [GameEvent.Score]: [ScoreType, number]; +} + +export default GameEvent; diff --git a/assets/_Game/Scripts/Enum/GameEvent.ts.meta b/assets/_Game/Scripts/Events/GameEvent.ts.meta similarity index 70% rename from assets/_Game/Scripts/Enum/GameEvent.ts.meta rename to assets/_Game/Scripts/Events/GameEvent.ts.meta index a5075a4..3f4c5db 100644 --- a/assets/_Game/Scripts/Enum/GameEvent.ts.meta +++ b/assets/_Game/Scripts/Events/GameEvent.ts.meta @@ -2,7 +2,7 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "a28ecc68-efbe-427e-8f18-5712ec3b9c2e", + "uuid": "81dc3a0a-e13c-45ac-a582-34d2eb7e8c44", "files": [], "subMetas": {}, "userData": {} diff --git a/assets/_Game/Scripts/Gameplay/Ball.ts b/assets/_Game/Scripts/Gameplay/Ball.ts index 4aed3d0..7a153c7 100644 --- a/assets/_Game/Scripts/Gameplay/Ball.ts +++ b/assets/_Game/Scripts/Gameplay/Ball.ts @@ -11,23 +11,44 @@ import { IPhysics2DContact, RigidBody2D, Vec2, + geometry, + math, + Node, + Vec3, + ParticleSystem, + Prefab, + CircleCollider2D, } from 'cc'; import IPoolable from '../Pool/IPoolable'; import { SoundManager } from '../Manager/SoundManager'; +import PhysicsGroup from '../Enum/PhysicGroup'; +import ObjectPool from '../Pool/ObjectPool'; const { ccclass, property } = _decorator; @ccclass('Ball') export class Ball extends Component implements IPoolable { + @property({ type: Prefab, visible: true }) + private _impactPrefab: Prefab; @property({ type: CCFloat, visible: true }) private _maxSpeed: number; @property({ type: RigidBody2D, visible: true }) private _rigidbody: RigidBody2D; - @property({ type: Collider2D, visible: true }) - private _collider: Collider2D; + @property({ type: Node, visible: true }) + private _sprite: Node; + @property({ type: ParticleSystem, visible: true }) + private _trail: ParticleSystem; + @property({ type: CircleCollider2D, visible: true }) + private _collider: CircleCollider2D; @property({ type: AudioClip, visible: true }) private _hitSound: AudioClip; + @property({ type: geometry.AnimationCurve, visible: true }) + private _jumpCurve: geometry.AnimationCurve = new geometry.AnimationCurve(); + private _impactPool: ObjectPool; private _hitted = false; + private _isJumping = false; + private _jumpTime: number; + private _jumpDuration: number; public eventHitObstacle = new EventTarget(); public eventGoal = new EventTarget(); @@ -38,33 +59,79 @@ export class Ball extends Component implements IPoolable { this._collider.on(Contact2DType.END_CONTACT, this.onEndContact, this); } director.on(Director.EVENT_AFTER_PHYSICS, this.setMaxVelocity, this); + this._impactPool = new ObjectPool(this._impactPrefab, 5, false); + } + + protected update(dt: number): void { + if (this._isJumping) { + this._jumpTime += dt; + let jumpProcess = this._jumpTime / this._jumpDuration; + jumpProcess = math.clamp01(jumpProcess); + let scale = Vec3.ONE.clone(); + scale = scale.add(Vec3.ONE.clone().multiplyScalar(this._jumpCurve.evaluate(jumpProcess))); + + this._sprite.setScale(scale); + this._trail.trailModule.widthRatio.multiplier = scale.x; + + if (jumpProcess >= 1) { + this._sprite.setScale(Vec3.ONE); + this._trail.trailModule.widthRatio.multiplier = 1; + this._isJumping = false; + this._collider.group = PhysicsGroup.BALL; + this._rigidbody.group = PhysicsGroup.BALL; + } + } } private onBeginContact(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) { if (this._hitted) return; this._hitted = true; if (this._rigidbody.linearVelocity.length() >= 3) { + let hitPoint = contact.getWorldManifold().points[0]; + if (!hitPoint) { + const dir = otherCollider.node + .getWorldPosition() + .subtract(selfCollider.node.getWorldPosition()) + .normalize(); + dir.multiplyScalar(this._collider.radius / 2); + const point = selfCollider.node.getWorldPosition().add(dir); + hitPoint = new Vec2(point.x, point.y); + } + const hitfx = this._impactPool.get(this.node.parent, ParticleSystem); + hitfx.node.setWorldPosition(new Vec3(hitPoint.x, hitPoint.y, 10)); + hitfx.play(); SoundManager.instance.playSfx(this._hitSound); } } - private setMaxVelocity() { - if (this._rigidbody.linearVelocity.length() > this._maxSpeed) { - this._rigidbody.linearVelocity = this._rigidbody.linearVelocity.normalize().multiplyScalar(this._maxSpeed); - } - } - private onEndContact(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) { // console.log(otherCollider.tag, otherCollider.node.name); this._hitted = false; } - public addFocre(force: Vec2) { - const point = this.node.getWorldPosition(); - this._rigidbody.applyLinearImpulse(force, new Vec2(point.x, point.y), true); + private setMaxVelocity() { + if (this._rigidbody.linearVelocity.length() > this._maxSpeed) { + this._rigidbody.linearVelocity = this._rigidbody.linearVelocity.normalize().multiplyScalar(this._maxSpeed); + } } - reuse() {} + public addFocre(force: Vec2) { + this._rigidbody.applyLinearImpulseToCenter(force, true); + } + + public throwBall(force: Vec2) { + this._collider.group = PhysicsGroup.BALLTHROWING; + this._rigidbody.group = PhysicsGroup.BALLTHROWING; + this._rigidbody.applyLinearImpulseToCenter(force, true); + this._isJumping = true; + this._jumpTime = 0; + this._jumpDuration = this._rigidbody.linearVelocity.length() * 0.05; + } + + reuse() { + this._isJumping = false; + this._hitted = false; + } unuse() { this._rigidbody.linearVelocity = Vec2.ZERO.clone(); diff --git a/assets/_Game/Scripts/Interface/GameEventMap.ts b/assets/_Game/Scripts/Interface/GameEventMap.ts deleted file mode 100644 index f9d9f82..0000000 --- a/assets/_Game/Scripts/Interface/GameEventMap.ts +++ /dev/null @@ -1,12 +0,0 @@ -import GameEvent from '../Enum/GameEvent'; -import GameState from '../Enum/GameState'; - -export interface GameEventCallbackMap { - [GameEvent.GameStateChange]: (state: GameState) => void; - [GameEvent.BallHit]: () => void; -} - -export interface GameEventArgMap { - [GameEvent.GameStateChange]: GameState; - [GameEvent.BallHit]: null; -} diff --git a/assets/_Game/Scripts/Manager/EventManger.ts b/assets/_Game/Scripts/Manager/EventManger.ts index 714a13c..d2a6a8e 100644 --- a/assets/_Game/Scripts/Manager/EventManger.ts +++ b/assets/_Game/Scripts/Manager/EventManger.ts @@ -1,6 +1,5 @@ import { __private, _decorator, Component, EventTarget, Node } from 'cc'; -import GameEvent from '../Enum/GameEvent'; -import { GameEventArgMap, GameEventCallbackMap } from '../Interface/GameEventMap'; +import { GameEventArgMap, GameEventCallbackMap } from '../Events/GameEvent'; const { ccclass, property } = _decorator; @ccclass('EventManger') diff --git a/assets/_Game/Scripts/Manager/GameManager.ts b/assets/_Game/Scripts/Manager/GameManager.ts index 70d6d1d..c8f2e10 100644 --- a/assets/_Game/Scripts/Manager/GameManager.ts +++ b/assets/_Game/Scripts/Manager/GameManager.ts @@ -4,7 +4,8 @@ import { Ball } from '../Gameplay/Ball'; import Utilities from '../Utilities/Utilities'; import GameState from '../Enum/GameState'; import { EventManger } from './EventManger'; -import GameEvent from '../Enum/GameEvent'; +import GameEvent from '../Events/GameEvent'; +import ScoreType from '../Enum/ScoreType'; const { ccclass, property } = _decorator; @ccclass('GameManager') @@ -17,7 +18,8 @@ export class GameManager extends Component { @property({ type: Prefab, visible: true }) private _ballPrefab: Prefab; - @property({ type: Vec3, visible: true }) + + @property({ visible: true }) private _ballSpawnPosition: Vec3; @property({ type: CCInteger, visible: true }) private _balls = 3; @@ -26,16 +28,15 @@ export class GameManager extends Component { private _gameState = GameState.Init; public highestStreak: number; - public score = 0; + private _score = 0; protected onLoad(): void { GameManager._instance = this; - this._ballPool = new ObjectPool(this._ballPrefab, 10, false, Ball); + this._ballPool = new ObjectPool(this._ballPrefab, 10, true, Ball); } - protected async start() { - // this.spawnBall(); - const a = [1, 4, 4, 5]; + protected start() { + this.spawnBall(); } private changeGameState(state: GameState) { @@ -43,6 +44,12 @@ export class GameManager extends Component { EventManger.instance.emit(GameEvent.GameStateChange, this._gameState); } + private addScore(score: number, type: ScoreType) { + this._score += score; + console.log('score:' + this._score); + EventManger.instance.emit(GameEvent.Score, [type, this._score]); + } + public spawnBall(): Ball { const ball = this._ballPool.get(this.node, Ball); ball.node.setPosition(this._ballSpawnPosition); @@ -51,18 +58,29 @@ export class GameManager extends Component { dir = randomRangeInt(-1, 2); } const force = new Vec2(dir, 1); - ball.addFocre(force.multiply2f(1, 50)); + ball.throwBall(force.multiply2f(1, 40)); return ball; } public async ballOut(ball: Node) { this._balls--; + this._ballPool.release(ball); if (this._balls === 0) { return; } - this._ballPool.release(ball); await Utilities.delay(1000); - // this.spawnBall(); + this.spawnBall(); + } + + public async goal(bonusScore: number, ball: Node) { + this._ballPool.release(ball); + this.addScore(bonusScore, ScoreType.Goal); + await Utilities.delay(1000); + this.spawnBall(); + } + + public destroyEnviromentsObject(bonusScore: number) { + this.addScore(bonusScore, ScoreType.DestroyObject); } public onRevive() { diff --git a/assets/_Game/Scripts/Manager/SpawnObjectManager.ts b/assets/_Game/Scripts/Manager/SpawnObjectManager.ts new file mode 100644 index 0000000..b05cf1d --- /dev/null +++ b/assets/_Game/Scripts/Manager/SpawnObjectManager.ts @@ -0,0 +1,21 @@ +import { _decorator, Component, Node, Prefab } from 'cc'; +const { ccclass, property } = _decorator; + +@ccclass('SpawnObjectManager') +export class SpawnObjectManager extends Component { + //#region singleton + private static _instance: SpawnObjectManager = null; + public static get instance(): SpawnObjectManager { + return SpawnObjectManager._instance; + } + //#endregion + + @property({ type: [Prefab], visible: true }) + private _objects: Prefab[] = []; + @property({ type: [Node], visible: true }) + private _spawnPoints: Node[] = []; + + protected onLoad(): void { + SpawnObjectManager._instance = this; + } +} diff --git a/assets/_Game/Scripts/Manager/SpawnObjectManager.ts.meta b/assets/_Game/Scripts/Manager/SpawnObjectManager.ts.meta new file mode 100644 index 0000000..b28c304 --- /dev/null +++ b/assets/_Game/Scripts/Manager/SpawnObjectManager.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "402d0351-87fa-4216-8b59-1bea39684f29", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/_Game/Scripts/UI.meta b/assets/_Game/Scripts/UI.meta new file mode 100644 index 0000000..ba5276a --- /dev/null +++ b/assets/_Game/Scripts/UI.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "df03dc40-3e2b-4190-8ffb-253238758590", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/assets/_Game/Scripts/UI/UIController.ts b/assets/_Game/Scripts/UI/UIController.ts new file mode 100644 index 0000000..e8a88e6 --- /dev/null +++ b/assets/_Game/Scripts/UI/UIController.ts @@ -0,0 +1,14 @@ +import { _decorator, Component, Node } from 'cc'; +const { ccclass, property } = _decorator; + +@ccclass('UIController') +export class UIController extends Component { + start() { + + } + + update(deltaTime: number) { + + } +} + diff --git a/assets/_Game/Scripts/UI/UIController.ts.meta b/assets/_Game/Scripts/UI/UIController.ts.meta new file mode 100644 index 0000000..350451f --- /dev/null +++ b/assets/_Game/Scripts/UI/UIController.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ecf072da-d6b3-40f1-88d8-d21f7bc9f59f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/_Game/Sprites/ring.png b/assets/_Game/Sprites/ring.png new file mode 100644 index 0000000000000000000000000000000000000000..06f49140b870b93128ace6d5957150a0c3c20a74 GIT binary patch literal 9546 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