From 15e822e693432680c34173e083b58a43e21bbe80 Mon Sep 17 00:00:00 2001 From: Miguel Astor Date: Tue, 4 Aug 2026 00:44:32 -0400 Subject: [PATCH] TO SQUASH: Started nuke ball. --- Assets/Animations/BallExplosion.controller | 73 +++ .../Animations/BallExplosion.controller.meta | 8 + Assets/Animations/BallExplosionDecal.anim | 99 ++++ .../Animations/BallExplosionDecal.anim.meta | 8 + Assets/Animations/NuclearBall.controller | 154 +++++++ Assets/Animations/NuclearBall.controller.meta | 8 + Assets/Animations/NuclearBallBounce.anim | 102 +++++ Assets/Animations/NuclearBallBounce.anim.meta | 8 + Assets/Animations/NuclearBallExplode.anim | 53 +++ .../Animations/NuclearBallExplode.anim.meta | 8 + Assets/Animations/NuclearBallSpawn.anim | 87 ++++ Assets/Animations/NuclearBallSpawn.anim.meta | 8 + Assets/Prefabs/Ball Explosion.prefab | 116 +++++ Assets/Prefabs/Ball Explosion.prefab.meta | 7 + Assets/Prefabs/Nuclear Ball.prefab | 307 +++++++++++++ Assets/Prefabs/Nuclear Ball.prefab.meta | 7 + Assets/Scenes/Game.unity | 2 +- Assets/Scenes/SplashScreen.unity | 6 +- Assets/Scripts/Game/BallSpawner.cs | 1 + Assets/Scripts/Game/Balls/FruitBall.cs | 8 +- Assets/Scripts/Game/Balls/NukeBall.cs | 180 ++++++++ Assets/Scripts/Game/Balls/NukeBall.cs.meta | 2 + Assets/Scripts/Game/Balls/OozeBall.cs | 4 +- Assets/Scripts/Intro/Intro.cs | 5 +- Assets/Sprites/700.png | Bin 0 -> 5224 bytes Assets/Sprites/700.png.meta | 429 ++++++++++++++++++ Assets/Sprites/701.png | Bin 0 -> 1616 bytes Assets/Sprites/701.png.meta | 307 +++++++++++++ Assets/Sprites/870.png | Bin 0 -> 5286 bytes Assets/Sprites/870.png.meta | 420 +++++++++++++++++ ProjectSettings/TagManager.asset | 1 + 31 files changed, 2406 insertions(+), 12 deletions(-) create mode 100644 Assets/Animations/BallExplosion.controller create mode 100644 Assets/Animations/BallExplosion.controller.meta create mode 100644 Assets/Animations/BallExplosionDecal.anim create mode 100644 Assets/Animations/BallExplosionDecal.anim.meta create mode 100644 Assets/Animations/NuclearBall.controller create mode 100644 Assets/Animations/NuclearBall.controller.meta create mode 100644 Assets/Animations/NuclearBallBounce.anim create mode 100644 Assets/Animations/NuclearBallBounce.anim.meta create mode 100644 Assets/Animations/NuclearBallExplode.anim create mode 100644 Assets/Animations/NuclearBallExplode.anim.meta create mode 100644 Assets/Animations/NuclearBallSpawn.anim create mode 100644 Assets/Animations/NuclearBallSpawn.anim.meta create mode 100644 Assets/Prefabs/Ball Explosion.prefab create mode 100644 Assets/Prefabs/Ball Explosion.prefab.meta create mode 100644 Assets/Prefabs/Nuclear Ball.prefab create mode 100644 Assets/Prefabs/Nuclear Ball.prefab.meta create mode 100644 Assets/Scripts/Game/Balls/NukeBall.cs create mode 100644 Assets/Scripts/Game/Balls/NukeBall.cs.meta create mode 100644 Assets/Sprites/700.png create mode 100644 Assets/Sprites/700.png.meta create mode 100644 Assets/Sprites/701.png create mode 100644 Assets/Sprites/701.png.meta create mode 100644 Assets/Sprites/870.png create mode 100644 Assets/Sprites/870.png.meta diff --git a/Assets/Animations/BallExplosion.controller b/Assets/Animations/BallExplosion.controller new file mode 100644 index 0000000..b66d443 --- /dev/null +++ b/Assets/Animations/BallExplosion.controller @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BallExplosion + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 3431565367527328971} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 1 +--- !u!1102 &2271483223869746817 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BallExplosionDecal + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: b7141af9a7e7445ff8018ccd5103b589, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &3431565367527328971 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 2271483223869746817} + m_Position: {x: 420, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 2271483223869746817} diff --git a/Assets/Animations/BallExplosion.controller.meta b/Assets/Animations/BallExplosion.controller.meta new file mode 100644 index 0000000..9537a87 --- /dev/null +++ b/Assets/Animations/BallExplosion.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5bb39063bb2efeafa845263a9e3c4798 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/BallExplosionDecal.anim b/Assets/Animations/BallExplosionDecal.anim new file mode 100644 index 0000000..618c530 --- /dev/null +++ b/Assets/Animations/BallExplosionDecal.anim @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BallExplosionDecal + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: 7210558746331385846, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.1 + value: {fileID: -5432075094247615553, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.21666667 + value: {fileID: -6233756757657699445, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.31666666 + value: {fileID: -9134259580595608040, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.43333334 + value: {fileID: -6261058792273593043, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.56666666 + value: {fileID: 7983266495651452045, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.68333334 + value: {fileID: 7271509617224618838, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.78333336 + value: {fileID: -9122391734515957254, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 0.9 + value: {fileID: -6539983120607256907, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - time: 1 + value: {fileID: 1192567241846995084, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 7210558746331385846, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: -5432075094247615553, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: -6233756757657699445, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: -9134259580595608040, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: -6261058792273593043, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: 7983266495651452045, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: 7271509617224618838, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: -9122391734515957254, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: -6539983120607256907, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + - {fileID: 1192567241846995084, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1.0166667 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animations/BallExplosionDecal.anim.meta b/Assets/Animations/BallExplosionDecal.anim.meta new file mode 100644 index 0000000..f31d37e --- /dev/null +++ b/Assets/Animations/BallExplosionDecal.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7141af9a7e7445ff8018ccd5103b589 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/NuclearBall.controller b/Assets/Animations/NuclearBall.controller new file mode 100644 index 0000000..c95922c --- /dev/null +++ b/Assets/Animations/NuclearBall.controller @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-8866037852887971400 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBallBounce 0 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 5d5f64fb6a50b6a58bc426531ac62ec9, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-7413468643251240543 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBallBounce + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 5d5f64fb6a50b6a58bc426531ac62ec9, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-6166363127919858109 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBallSpawn + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 8246985773789267849} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 4095b66ef6772566aa43e59582c11010, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBall + serializedVersion: 6 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 8410962424240963213} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 1 +--- !u!1101 &8246985773789267849 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -7413468643251240543} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1107 &8410962424240963213 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -6166363127919858109} + m_Position: {x: 280, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: -7413468643251240543} + m_Position: {x: 580, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: -8866037852887971400} + m_Position: {x: -8497.861, y: -5177.2417, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -6166363127919858109} diff --git a/Assets/Animations/NuclearBall.controller.meta b/Assets/Animations/NuclearBall.controller.meta new file mode 100644 index 0000000..45c1119 --- /dev/null +++ b/Assets/Animations/NuclearBall.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63c8db8cd2d6d67e5a32570d2ab95593 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/NuclearBallBounce.anim b/Assets/Animations/NuclearBallBounce.anim new file mode 100644 index 0000000..73e1035 --- /dev/null +++ b/Assets/Animations/NuclearBallBounce.anim @@ -0,0 +1,102 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBallBounce + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: 4743041161850474212, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.06666667 + value: {fileID: -7039298178861624713, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.13333334 + value: {fileID: 8636365752506130594, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.2 + value: {fileID: 2926528974138543835, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.26666668 + value: {fileID: 8312519695533666021, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.33333334 + value: {fileID: 7038383076582032106, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.4 + value: {fileID: 8096370073807340432, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.46666667 + value: {fileID: -3695315387145622601, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.53333336 + value: {fileID: 6247683229187867866, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.6 + value: {fileID: 5859558751096391768, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - time: 0.6666667 + value: {fileID: 3387975412891806658, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 4743041161850474212, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: -7039298178861624713, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 8636365752506130594, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 2926528974138543835, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 8312519695533666021, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 7038383076582032106, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 8096370073807340432, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: -3695315387145622601, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 6247683229187867866, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 5859558751096391768, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + - {fileID: 3387975412891806658, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.68333334 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animations/NuclearBallBounce.anim.meta b/Assets/Animations/NuclearBallBounce.anim.meta new file mode 100644 index 0000000..978f5ac --- /dev/null +++ b/Assets/Animations/NuclearBallBounce.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d5f64fb6a50b6a58bc426531ac62ec9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/NuclearBallExplode.anim b/Assets/Animations/NuclearBallExplode.anim new file mode 100644 index 0000000..f6c1125 --- /dev/null +++ b/Assets/Animations/NuclearBallExplode.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBallExplode + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animations/NuclearBallExplode.anim.meta b/Assets/Animations/NuclearBallExplode.anim.meta new file mode 100644 index 0000000..f18f48c --- /dev/null +++ b/Assets/Animations/NuclearBallExplode.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b36d8d4671f523a40975eca2dedc5528 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/NuclearBallSpawn.anim b/Assets/Animations/NuclearBallSpawn.anim new file mode 100644 index 0000000..aee6015 --- /dev/null +++ b/Assets/Animations/NuclearBallSpawn.anim @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NuclearBallSpawn + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: -5729938489366587548, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - time: 0.13333334 + value: {fileID: 3827718931152471872, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - time: 0.26666668 + value: {fileID: 4796273017410401994, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - time: 0.4 + value: {fileID: 2277026222858539210, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - time: 0.53333336 + value: {fileID: 6604842128173147212, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - time: 0.6666667 + value: {fileID: -2423459313595029027, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: -5729938489366587548, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - {fileID: 3827718931152471872, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - {fileID: 4796273017410401994, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - {fileID: 2277026222858539210, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - {fileID: 6604842128173147212, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + - {fileID: -2423459313595029027, guid: d407ad460ae8a4e48b87caf28df65d83, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.68333334 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animations/NuclearBallSpawn.anim.meta b/Assets/Animations/NuclearBallSpawn.anim.meta new file mode 100644 index 0000000..530d55f --- /dev/null +++ b/Assets/Animations/NuclearBallSpawn.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4095b66ef6772566aa43e59582c11010 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Ball Explosion.prefab b/Assets/Prefabs/Ball Explosion.prefab new file mode 100644 index 0000000..4d51e2b --- /dev/null +++ b/Assets/Prefabs/Ball Explosion.prefab @@ -0,0 +1,116 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6718664185715355894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1846621201000746085} + - component: {fileID: 7402419950365427160} + - component: {fileID: 4492134503030492876} + m_Layer: 0 + m_Name: Ball Explosion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1846621201000746085 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6718664185715355894} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.69, y: -6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7402419950365427160 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6718664185715355894} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: 7210558746331385846, guid: 7982a3f8e588f159dbb4a39dda4520a4, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.39, y: 0.39} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!95 &4492134503030492876 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6718664185715355894} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 5bb39063bb2efeafa845263a9e3c4798, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 diff --git a/Assets/Prefabs/Ball Explosion.prefab.meta b/Assets/Prefabs/Ball Explosion.prefab.meta new file mode 100644 index 0000000..e498660 --- /dev/null +++ b/Assets/Prefabs/Ball Explosion.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0fa4013691ac1bf6eae3a2ac6c7c35ff +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Nuclear Ball.prefab b/Assets/Prefabs/Nuclear Ball.prefab new file mode 100644 index 0000000..5c20fd7 --- /dev/null +++ b/Assets/Prefabs/Nuclear Ball.prefab @@ -0,0 +1,307 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8278701988301055462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7223531878415744156} + - component: {fileID: 6412297431913082470} + - component: {fileID: 4821638412415428746} + - component: {fileID: 4026147366490243121} + - component: {fileID: 4924152759474718944} + - component: {fileID: 4226640848622850841} + - component: {fileID: 3685705851669141629} + m_Layer: 0 + m_Name: Nuclear Ball + m_TagString: NuclearBall + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7223531878415744156 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.28, y: 0.73, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6412297431913082470 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: 4743041161850474212, guid: b1eb9d7fe38bb77f9a0320079e439ce5, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.28, y: 0.28} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!95 &4821638412415428746 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 63c8db8cd2d6d67e5a32570d2ab95593, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!82 &4026147366490243121 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_Resource: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!61 &4924152759474718944 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.28, y: 0.28} + newSize: {x: 0.28, y: 0.28} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 0.28, y: 0.28} + m_EdgeRadius: 0 +--- !u!50 &4226640848622850841 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!114 &3685705851669141629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8278701988301055462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94b425bc5ee3b5fe5b375cb72355531c, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::NukeBall + spawnSound: {fileID: 8300000, guid: 39ac5ebaed90d56bc94a1513178225e2, type: 3} + bounceSound: {fileID: 8300000, guid: feb1b2bb15ded1b37a84335da8b6c825, type: 3} + hitSound: {fileID: 8300000, guid: a36177a84709d5c51ae647a599008d1d, type: 3} + criticalSound: {fileID: 8300000, guid: 756fb91b052f83560a8f10a21d610eb1, type: 3} + explosionSound: {fileID: 8300000, guid: 4b277a57224afa7df868a42f9005709e, type: 3} diff --git a/Assets/Prefabs/Nuclear Ball.prefab.meta b/Assets/Prefabs/Nuclear Ball.prefab.meta new file mode 100644 index 0000000..7d29c09 --- /dev/null +++ b/Assets/Prefabs/Nuclear Ball.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 365b1b399a34e29bdbde4d0297ee7d12 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 3a88e47..3b08893 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -559,7 +559,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Assembly-CSharp::BallSpawner basicBallPrefab: {fileID: 5170544452824093409, guid: 4b9ec3a3bc88610fa80938a4d6850568, type: 3} - nuclearBallPrefab: {fileID: 0} + nuclearBallPrefab: {fileID: 8278701988301055462, guid: 365b1b399a34e29bdbde4d0297ee7d12, type: 3} glassBallPrefab: {fileID: 0} eyeBallPrefab: {fileID: 0} oozeBallPrefab: {fileID: 2828226485849316135, guid: ff4467517111a6d0ab4e5608c8adeee0, type: 3} diff --git a/Assets/Scenes/SplashScreen.unity b/Assets/Scenes/SplashScreen.unity index 04d3865..b0aae9f 100644 --- a/Assets/Scenes/SplashScreen.unity +++ b/Assets/Scenes/SplashScreen.unity @@ -127,6 +127,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 2455465290438712436, guid: 37cccc8c2583c8987851bdc00b56a09e, type: 3} + propertyPath: orthographic + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2455465290438712436, guid: 37cccc8c2583c8987851bdc00b56a09e, type: 3} propertyPath: m_BackGroundColor.b value: 0 @@ -311,7 +315,7 @@ Transform: m_GameObject: {fileID: 334522676} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.07896, y: -0.0717, z: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Scripts/Game/BallSpawner.cs b/Assets/Scripts/Game/BallSpawner.cs index 3b4bccc..62edcc6 100644 --- a/Assets/Scripts/Game/BallSpawner.cs +++ b/Assets/Scripts/Game/BallSpawner.cs @@ -35,6 +35,7 @@ public class BallSpawner : MonoBehaviour ballQueue.Enqueue(() => SpawnBall(fruitBallPrefab)); ballQueue.Enqueue(() => SpawnBall(fruitBallPrefab)); ballQueue.Enqueue(() => SpawnBall(oozeBallPrefab)); + ballQueue.Enqueue(() => SpawnBall(nuclearBallPrefab)); StartCoroutine(SpawnBalls()); } diff --git a/Assets/Scripts/Game/Balls/FruitBall.cs b/Assets/Scripts/Game/Balls/FruitBall.cs index 34fe0bb..739dea2 100644 --- a/Assets/Scripts/Game/Balls/FruitBall.cs +++ b/Assets/Scripts/Game/Balls/FruitBall.cs @@ -23,14 +23,14 @@ public class FruitBall : MonoBehaviour { audioSource = GetComponent(); animator = GetComponent(); - speed = new Vector2(Mathf.Sign(Random.Range(-1f, 1f)) * 0.0001f, - Mathf.Sign(Random.Range(-1f, 1f)) * 0.0001f); + speed = new Vector2(Mathf.Sign(Random.Range(-1f, 1f)) * 0.005f, + Mathf.Sign(Random.Range(-1f, 1f)) * 0.005f); audioSource.PlayOneShot(spawnSound); } // Update is called once per frame - void Update() + void FixedUpdate() { AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); @@ -61,7 +61,7 @@ public class FruitBall : MonoBehaviour collision.gameObject.CompareTag("FruitBall")) { speedIncreaseTimer = 2.0f; // Reset the timer to 2 seconds - speedMultiplier = 50.0f; // Set the speed multiplier to 7x + speedMultiplier = 20.0f; // Set the speed multiplier to 7x } } } diff --git a/Assets/Scripts/Game/Balls/NukeBall.cs b/Assets/Scripts/Game/Balls/NukeBall.cs new file mode 100644 index 0000000..acc3008 --- /dev/null +++ b/Assets/Scripts/Game/Balls/NukeBall.cs @@ -0,0 +1,180 @@ +using UnityEngine; + +public class NukeBall : MonoBehaviour +{ +private Animator animator; + + private static float gravity = 0.5f; + + public AudioClip spawnSound; + + public AudioClip bounceSound; + + public AudioClip hitSound; + + public AudioClip criticalSound; + + public AudioClip explosionSound; + + private AudioSource audioSource; + + private Vector2 speed; + + private int criticalState = 0; + + private float criticalTime = 1.0f; + + private float criticalTimer = 0.0f; + + private float height; + + private float verticalVelocity = 0.0f; + + private Collider2D selfCollider; + + private bool isBouncingToHeight = false; + + private float bounceStartY = 0.0f; + + private float fallTargetY = 0.0f; + + private float bounceTimer = 0.0f; + + private float bounceDuration = 1.00f; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + void Start() + { + audioSource = GetComponent(); + animator = GetComponent(); + selfCollider = GetComponent(); + speed = new Vector2(Random.Range(-0.09f, 0.09f), 0.0f); + height = GetComponent().position.y; + fallTargetY = height; + + UpdateFallTargetFromCurrentPosition(); + + audioSource.PlayOneShot(spawnSound); + } + + // Update is called once per frame + void FixedUpdate() + { + AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); + + if (stateInfo.IsName("NuclearBallBounce")) { + transform.Translate(speed); + + Vector3 currentPosition = transform.position; + + if (isBouncingToHeight) + { + bounceTimer += Time.fixedDeltaTime; + + float t = Mathf.Clamp01(bounceTimer / bounceDuration); + float easedT = 1.0f - Mathf.Pow(1.0f - t, 2.0f); + + currentPosition.y = Mathf.Lerp(bounceStartY, height, easedT); + + if (t >= 1.0f) + { + isBouncingToHeight = false; + bounceTimer = 0.0f; + verticalVelocity = 0.0f; + currentPosition.y = height; + UpdateFallTargetFromCurrentPosition(); + } + } + else + { + bounceTimer += Time.fixedDeltaTime; + + float t = Mathf.Clamp01(bounceTimer / bounceDuration); + float easedT = t * t; + + currentPosition.y = Mathf.Lerp(height, fallTargetY, easedT); + } + + transform.position = currentPosition; + } + + // When in critical state 2, play the critical sound every half a second. + if (criticalState == 2) + { + criticalTimer = 0.5f; + } + + // If in a critical state, increment the critical timer and play the + // critical sound if the timer exceeds the critical time. + if (criticalState >= 1) + { + criticalTimer += Time.deltaTime; + + if (criticalTimer >= criticalTime) + { + audioSource.PlayOneShot(criticalSound); + } + + criticalTimer = 0.0f; + } + } + + void OnCollisionEnter2D(Collision2D collision) + { + // NukeBall should bounce off walls only. It cannot collide with other balls, not even other NukeBalls. + if (collision.gameObject.CompareTag("Wall")) + { + ContactPoint2D contact = collision.GetContact(0); + speed = Vector2.Reflect(speed, contact.normal); + speed.y = 0.0f; + + audioSource.PlayOneShot(bounceSound); + + // A floor hit (normal pointing upward) starts an ease-out bounce back to initial height. + if (contact.normal.y > 0.5f) + { + isBouncingToHeight = true; + bounceTimer = 0.0f; + bounceStartY = contact.point.y; + fallTargetY = bounceStartY; + verticalVelocity = 0.0f; + + Vector3 currentPosition = transform.position; + currentPosition.y = bounceStartY; + transform.position = currentPosition; + } + } + } + + private void UpdateFallTargetFromCurrentPosition() + { + fallTargetY = transform.position.y; + + RaycastHit2D[] hits = Physics2D.RaycastAll(transform.position, Vector2.down, 100.0f); + float closestDistance = float.MaxValue; + + foreach (RaycastHit2D hit in hits) + { + if (hit.collider == null || hit.collider == selfCollider) + { + continue; + } + + if (!hit.collider.CompareTag("Wall")) + { + continue; + } + + if (hit.normal.y <= 0.5f) + { + continue; + } + + if (hit.distance < closestDistance) + { + closestDistance = hit.distance; + fallTargetY = hit.point.y; + } + } + } +} diff --git a/Assets/Scripts/Game/Balls/NukeBall.cs.meta b/Assets/Scripts/Game/Balls/NukeBall.cs.meta new file mode 100644 index 0000000..3f626f7 --- /dev/null +++ b/Assets/Scripts/Game/Balls/NukeBall.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 94b425bc5ee3b5fe5b375cb72355531c \ No newline at end of file diff --git a/Assets/Scripts/Game/Balls/OozeBall.cs b/Assets/Scripts/Game/Balls/OozeBall.cs index 9eeb89d..9c93ca5 100644 --- a/Assets/Scripts/Game/Balls/OozeBall.cs +++ b/Assets/Scripts/Game/Balls/OozeBall.cs @@ -35,13 +35,13 @@ public class OozeBall : MonoBehaviour audioSource = GetComponent(); animator = GetComponent(); spriteRenderer = GetComponent(); - speed = new Vector2(Random.Range(-0.002f, 0.002f), Random.Range(-0.002f, 0.002f)); + speed = new Vector2(Random.Range(-0.05f, 0.05f), Random.Range(-0.05f, 0.05f)); audioSource.PlayOneShot(spawnSound); } // Update is called once per frame - void Update() + void FixedUpdate() { AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); diff --git a/Assets/Scripts/Intro/Intro.cs b/Assets/Scripts/Intro/Intro.cs index 0579f06..7c3e783 100644 --- a/Assets/Scripts/Intro/Intro.cs +++ b/Assets/Scripts/Intro/Intro.cs @@ -10,10 +10,7 @@ public class Intro : FadeCallback private IEnumerator playAudioCoroutine; // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() - { - - } + void Start() { } // Update is called once per frame void Update() { } diff --git a/Assets/Sprites/700.png b/Assets/Sprites/700.png new file mode 100644 index 0000000000000000000000000000000000000000..bd14b4a99bb83dd7f04ef7b14606783a0ef887c4 GIT binary patch literal 5224 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