diff --git a/Assets/Models/PlayZoneBoundary.gltf b/Assets/Models/PlayZoneBoundary.gltf deleted file mode 100644 index 5958853..0000000 --- a/Assets/Models/PlayZoneBoundary.gltf +++ /dev/null @@ -1 +0,0 @@ -{"asset":{"generator":"3D Builder","version":"2.0"},"scene":0,"scenes":[{"nodes":[0]}],"nodes":[{"children":[1,2]},{"mesh":0,"matrix":[1,0,0,0,0,-1.1920928955078125E-7,-0.99999988079071045,0,0,0.99999988079071045,-1.1920928955078125E-7,0,0,0,0,1]},{"mesh":1,"matrix":[37.501873016357422,0,0,0,0,-2.9802320611338473E-8,-0.24999995529651642,0,0,2.5001249313354492,-2.9803814527440409E-7,0,-0.75,-0.050000172108411789,-1.4842503070831299,1]}],"meshes":[{"primitives":[{"attributes":{"POSITION":0,"COLOR_0":1},"mode":4,"indices":2}]},{"primitives":[{"attributes":{"POSITION":3,"COLOR_0":4},"mode":4,"indices":5}]}],"accessors":[{"bufferView":0,"byteOffset":0,"count":60,"componentType":5126,"type":"VEC3","min":[-0.75,-0.0050000823102891445,-0.050000004470348358],"max":[0.74999988079071045,1.4950000047683716,0.050000008195638657]},{"bufferView":1,"byteOffset":0,"count":60,"componentType":5121,"type":"VEC4","normalized":true},{"bufferView":2,"byteOffset":0,"count":396,"componentType":5125,"type":"SCALAR"},{"bufferView":3,"byteOffset":0,"count":8,"componentType":5126,"type":"VEC3","min":[0,0.042998004704713821,0],"max":[0.039998002350330353,0.082998007535934448,0.039998002350330353]},{"bufferView":4,"byteOffset":0,"count":8,"componentType":5121,"type":"VEC4","normalized":true},{"bufferView":5,"byteOffset":0,"count":36,"componentType":5125,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":720,"byteStride":12,"target":34962},{"buffer":0,"byteOffset":720,"byteLength":240,"byteStride":4,"target":34962},{"buffer":0,"byteOffset":960,"byteLength":1584,"target":34963},{"buffer":0,"byteOffset":2544,"byteLength":96,"byteStride":12,"target":34962},{"buffer":0,"byteOffset":2640,"byteLength":32,"byteStride":4,"target":34962},{"buffer":0,"byteOffset":2672,"byteLength":144,"target":34963}],"buffers":[{"byteLength":2816,"uri":"PlayZoneBoundary.bin"}]} \ No newline at end of file diff --git a/Assets/Models/PlayZoneBoundary.gltf.meta b/Assets/Models/PlayZoneBoundary.gltf.meta deleted file mode 100644 index 317550e..0000000 --- a/Assets/Models/PlayZoneBoundary.gltf.meta +++ /dev/null @@ -1,30 +0,0 @@ -fileFormatVersion: 2 -guid: 303177f7648454b4fb8179c1378dd1ec -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 715df9372183c47e389bb6e19fbc3b52, type: 3} - editorImportSettings: - generateSecondaryUVSet: 0 - importSettings: - nodeNameMethod: 1 - animationMethod: 2 - generateMipMaps: 1 - defaultMinFilterMode: 9729 - defaultMagFilterMode: 9729 - anisotropicFilterLevel: 1 - instantiationSettings: - mask: -1 - layer: 0 - skinUpdateWhenOffscreen: 1 - lightIntensityFactor: 1 - sceneObjectCreation: 2 - assetDependencies: - - type: 0 - originalUri: Assets\Models\PlayZoneBoundary.bin - assetPath: Assets\Models\PlayZoneBoundary.bin - reportItems: [] diff --git a/Assets/Prefabs/Gravity Changer.prefab b/Assets/Prefabs/Gravity Changer.prefab index b330d59..0a27745 100644 --- a/Assets/Prefabs/Gravity Changer.prefab +++ b/Assets/Prefabs/Gravity Changer.prefab @@ -29,7 +29,7 @@ Transform: serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 3, y: 3, z: 3} + m_LocalScale: {x: 5, y: 5, z: 5} m_ConstrainProportionsScale: 1 m_Children: - {fileID: 4274613733215928132} @@ -77,7 +77,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 42bb47879381c4f498a115b2b84b191a, type: 3} m_Name: m_EditorClassIdentifier: - ForcesManager: {fileID: 0} RenderedZoneObject: {fileID: 3847966118592310179} GravityEffect: {fileID: 2798249376021352391} GravityColors: @@ -91,86 +90,122 @@ MonoBehaviour: color: {r: 0.25471687, g: 0.77203095, b: 1, a: 0.3529412} - gravity: 4 color: {r: 1, g: 0.4656382, b: 0.2471698, a: 0.3529412} - _gravity: 0 ---- !u!1001 &4147390443820438502 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 5300185106086715317} - m_Modifications: - - target: {fileID: 930210402018179143, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_Name - value: Nimble Zone Sphere - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalScale.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalScale.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalScale.z - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalPosition.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} ---- !u!4 &3847966118591952769 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 930210402018337895, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - m_PrefabInstance: {fileID: 4147390443820438502} - m_PrefabAsset: {fileID: 0} ---- !u!1 &3847966118592310179 stripped + _gravity: 4 +--- !u!1 &3847966118592310177 GameObject: - m_CorrespondingSourceObject: {fileID: 930210402018179141, guid: 42641a1e05f4e084bae7d69b644dfd81, type: 3} - m_PrefabInstance: {fileID: 4147390443820438502} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3847966118591952769} + m_Layer: 0 + m_Name: Nimble Zone Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3847966118591952769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3847966118592310177} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 3847966118591952771} + m_Father: {fileID: 5300185106086715317} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3847966118592310179 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3847966118591952771} + - component: {fileID: 3847966118591149987} + - component: {fileID: 3847966118590051683} + m_Layer: 0 + m_Name: HighPolySphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3847966118591952771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3847966118592310179} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3847966118591952769} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3847966118591149987 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3847966118592310179} + m_Mesh: {fileID: 4300000, guid: fc5f274d483f9d24b95d2f4a7eb88be9, type: 3} +--- !u!23 &3847966118590051683 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3847966118592310179} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5cddff495cc77524d991f9778fba844a, type: 2} + 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1001 &7276724944824422886 PrefabInstance: m_ObjectHideFlags: 0 @@ -221,11 +256,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: ShapeModule.radius.value - value: 1.5 + value: 3 objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: ShapeModule.radiusThickness - value: 0.1 + value: 0.2 objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: VelocityModule.inWorldSpace @@ -239,17 +274,21 @@ PrefabInstance: propertyPath: InitialModule.maxNumParticles value: 80 objectReference: {fileID: 0} + - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} + propertyPath: InitialModule.startSize.scalar + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: VelocityModule.orbitalX.scalar - value: 0.1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: VelocityModule.orbitalY.scalar - value: 0.1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: VelocityModule.orbitalZ.scalar - value: 0.1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: InitialModule.startSpeed.scalar @@ -261,7 +300,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: InitialModule.startLifetime.scalar - value: 1 + value: 1.5 objectReference: {fileID: 0} - target: {fileID: 4767480441459301921, guid: 9615c7fd8e252c145b562238bcfc1b23, type: 3} propertyPath: VelocityModule.speedModifier.scalar diff --git a/Assets/Prefabs/Nimble Zone.prefab b/Assets/Prefabs/Nimble Zone.prefab index dd2f56c..7e80ffd 100644 --- a/Assets/Prefabs/Nimble Zone.prefab +++ b/Assets/Prefabs/Nimble Zone.prefab @@ -92,12 +92,12 @@ MonoBehaviour: zone: 0 rippleFrequency: 12 rippleDensity: 14 - rippleAmplitude: 0.1 + rippleAmplitude: 0.05 rippleRadius: 1.62 - rippleDuration: 1.2 + rippleDuration: 2 impactVelocityModifier: 1 - minImpact: 0.5 - maxVelocity: 70 + minImpact: 0.4 + maxVelocity: 100 --- !u!1001 &4415206198913254025 PrefabInstance: m_ObjectHideFlags: 0 @@ -165,7 +165,7 @@ PrefabInstance: - target: {fileID: -7635826562936255635, guid: 24300c11f962a8e4f9f8125bd2843705, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 78cb0d90576fe15439f3fd294d5eaaba, type: 2} + objectReference: {fileID: 2100000, guid: 1338539d65504394f8f2dd0a628dc423, type: 2} - target: {fileID: 919132149155446097, guid: 24300c11f962a8e4f9f8125bd2843705, type: 3} propertyPath: m_Name value: Hex Sphere diff --git a/Assets/Prefabs/UI/Offscreen Indicator Arrow.prefab b/Assets/Prefabs/UI/Offscreen Indicator Arrow.prefab new file mode 100644 index 0000000..cf14930 --- /dev/null +++ b/Assets/Prefabs/UI/Offscreen Indicator Arrow.prefab @@ -0,0 +1,130 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5312737329671837370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3436878586287575061} + m_Layer: 0 + m_Name: Offscreen Indicator Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3436878586287575061 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5312737329671837370} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 2, z: 3} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6331211089644692183} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8144415942864253312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6331211089644692183} + - component: {fileID: 4035525861259110635} + - component: {fileID: 7074929712647586998} + - component: {fileID: 8551325256346997925} + m_Layer: 0 + m_Name: Indicator3D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6331211089644692183 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8144415942864253312} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3436878586287575061} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4035525861259110635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8144415942864253312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ed8517591bfdc6b4398d396bc386d5a2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!33 &7074929712647586998 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8144415942864253312} + m_Mesh: {fileID: 3613567641014311022, guid: d912959aabd6a3e439552066ae82eb71, type: 3} +--- !u!23 &8551325256346997925 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8144415942864253312} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: ede4fd81521fbf14290f76017e016f6d, type: 2} + 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Prefabs/UI/Offscreen Indicator Arrow.prefab.meta b/Assets/Prefabs/UI/Offscreen Indicator Arrow.prefab.meta new file mode 100644 index 0000000..6bcbaa9 --- /dev/null +++ b/Assets/Prefabs/UI/Offscreen Indicator Arrow.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fac9d84719a43574f9cfbc19b53aee98 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GravityChanger.cs b/Assets/Scripts/GravityChanger.cs index 908d816..4403de0 100644 --- a/Assets/Scripts/GravityChanger.cs +++ b/Assets/Scripts/GravityChanger.cs @@ -6,7 +6,6 @@ using static GravityFunctionality.GravityHelpers; namespace GravityFunctionality { - [ExecuteInEditMode] public class GravityChanger : MonoBehaviour { private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/Assets/Scripts/Indicator3D.cs b/Assets/Scripts/Indicator3D.cs new file mode 100644 index 0000000..6318676 --- /dev/null +++ b/Assets/Scripts/Indicator3D.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using PrimeTween; +using UnityEngine; + +[ExecuteInEditMode] +public class Indicator3D : MonoBehaviour +{ + + void OnEnable() + { + WaitTillSpawnThenAnimate(); + } + private async void WaitTillSpawnThenAnimate() + { + await Tween.Delay(0.1f); + Sequence.Create(cycles: -1, CycleMode.Rewind, Ease.Default) + + .Group(Tween.LocalPosition(gameObject.transform, + gameObject.transform.localPosition - Vector3.forward * 0.001f, 4)) + + .Group(Tween.LocalRotation(gameObject.transform, + gameObject.transform.localRotation * Quaternion.AngleAxis(180, Vector3.forward), 4)); + } +} diff --git a/Assets/Scripts/Indicator3D.cs.meta b/Assets/Scripts/Indicator3D.cs.meta new file mode 100644 index 0000000..5a22d9d --- /dev/null +++ b/Assets/Scripts/Indicator3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed8517591bfdc6b4398d396bc386d5a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/OffScreenIndicatorManager.cs b/Assets/Scripts/UI/OffScreenIndicatorManager.cs new file mode 100644 index 0000000..1c82c45 --- /dev/null +++ b/Assets/Scripts/UI/OffScreenIndicatorManager.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Managers; +using UnityEngine; + +public class OffScreenIndicatorManager : MonoBehaviour +{ + public GameObject[] Targets; + public GameObject IndicatorPrefab; + public Color DefaultColor = Color.yellow; + + private MeshRenderer _meshRenderer; + + private Camera _camera; + private Dictionary _targetIndicators = new(); + + // Start is called before the first frame update + void Start() + { + _camera = Camera.main; + + foreach (var target in Targets) + AddTarget(target); + } + + // Update is called once per frame + void Update() + { + if (_camera == null) + { + if (Camera.main != null) + _camera = Camera.main; + return; + } + bool targetRemoved = false; + foreach (KeyValuePair entry in _targetIndicators) + { + var target = entry.Key; + var indicator = entry.Value; + + if (target != null) + { + UpdateTarget(target, indicator); + } + else + { + targetRemoved = true; + } + } + + if (!targetRemoved) + return; + + GameObject[] targets = _targetIndicators.Keys.ToArray(); + for (int i = 0; i < targets.Count(); ++i) + { + if (targets[i] == null) + { + Destroy(_targetIndicators[targets[i]]); + _targetIndicators.Remove(targets[i]); + } + } + } + + public void AddTarget(GameObject target) + { + AddTarget(target, DefaultColor); + } + + public void AddTarget(GameObject target, Color color) + { + var indicator = Instantiate(IndicatorPrefab); + _meshRenderer = indicator.GetComponentInChildren(); + indicator.SetActive(false); + indicator.transform.SetParent(_camera.transform); + _targetIndicators.Add(target, indicator); + + MaterialPropertyBlock materialPropertyBlock = new(); + materialPropertyBlock.SetColor("_BaseColor", color); + _meshRenderer.SetPropertyBlock(materialPropertyBlock); + } + + private void UpdateTarget(GameObject target, GameObject indicator) + { + if (MatchManager.G.matchState != MatchState.Match || target == null + || !target.activeInHierarchy) + { + indicator.SetActive(false); + return; + } + var screenPos = _camera.WorldToViewportPoint(target.transform.position); + bool isOffScreen = screenPos.x <= 0 || screenPos.x >= 1 || + screenPos.y <= 0 || screenPos.y >= 1; + if (!isOffScreen) + { + indicator.SetActive(false); + return; + } + indicator.SetActive(true); + + float margin_x = 0.05f; + float margin_y = 0.05f; + + screenPos.x = Mathf.Clamp(screenPos.x, margin_x, 1 - margin_x); + screenPos.y = Mathf.Clamp(screenPos.y, margin_y, 1 - margin_y); + screenPos.z = Mathf.Clamp(screenPos.z, 0, 1); + + var worldPosition = _camera.ViewportToWorldPoint(screenPos); + + var cameraDirection = _camera.transform.position - worldPosition; + + indicator.transform.position = worldPosition; + + var virtualIndicatorPosition = worldPosition + _camera.transform.localPosition.z * cameraDirection; + + Vector3 direction = target.transform.position - virtualIndicatorPosition; + indicator.transform.rotation = Quaternion.FromToRotation(new Vector3(0, 0, 1), direction); + } +} diff --git a/Assets/Scripts/UI/OffScreenIndicatorManager.cs.meta b/Assets/Scripts/UI/OffScreenIndicatorManager.cs.meta new file mode 100644 index 0000000..6b29563 --- /dev/null +++ b/Assets/Scripts/UI/OffScreenIndicatorManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a453b9260772e8488c230aa7eeca5ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UI/Health&Boost Concept.aseprite b/Assets/UI/Health&Boost Concept.aseprite new file mode 100644 index 0000000..ca797c2 Binary files /dev/null and b/Assets/UI/Health&Boost Concept.aseprite differ diff --git a/Assets/UI/Health&Boost Concept.aseprite.meta b/Assets/UI/Health&Boost Concept.aseprite.meta new file mode 100644 index 0000000..1789696 --- /dev/null +++ b/Assets/UI/Health&Boost Concept.aseprite.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cba0c70a2ad5c8e4c99a3097986dddd3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: