From d3d400d75b728622a8eca58f12dc24a0acf16a7e Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Thu, 8 May 2025 12:23:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E7=A8=8B=E5=AD=98=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/HuoShanEmoSceneTest.unity | 242 ++++++++-------- .../MiniGame/HuoShan/Emo/EmoMazeDrawer.cs | 262 ++++++++++++++++++ .../HuoShan/Emo/EmoMazeDrawer.cs.meta | 11 + .../MiniGame/HuoShan/Emo/LakeLineDrawer.cs | 45 +-- 4 files changed, 407 insertions(+), 153 deletions(-) create mode 100644 Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs create mode 100644 Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs.meta diff --git a/Assets/Scenes/HuoShanEmoSceneTest.unity b/Assets/Scenes/HuoShanEmoSceneTest.unity index 83f6abacd..132a61b9a 100644 --- a/Assets/Scenes/HuoShanEmoSceneTest.unity +++ b/Assets/Scenes/HuoShanEmoSceneTest.unity @@ -132,16 +132,116 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 472731664} - - component: {fileID: 472731663} - - component: {fileID: 472731662} + - component: {fileID: 472731665} + - component: {fileID: 472731666} + - component: {fileID: 472731667} + - component: {fileID: 472731668} m_Layer: 0 - m_Name: GameObject + m_Name: LakeLineDrawer m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &472731662 +--- !u!4 &472731664 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472731661} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.01, y: 0.52, z: -0.05} + 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!65 &472731665 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472731661} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 7.82, y: 1, z: 7.13} + m_Center: {x: 0, y: 0, z: 0} +--- !u!64 &472731666 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472731661} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} +--- !u!114 &472731667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472731661} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4f1d20068959374280197d2f664e3b9, type: 3} + m_Name: + m_EditorClassIdentifier: + useCullingMasks: 0 + fieldSize: 6.75 + pointCount: 30 + pointSize: 0.05 + lineWidth: 0.01 + noiseScale: 0.3 + waveHeight: 1 + waveSpeed: 0.2 + timeScale: 1 + rippleStrength: 2 + rippleDuration: 1.5 + rippleSpreadSpeed: 6 + rippleSharpness: 2 + rippleDelay: 0 + playerPos: {x: 10, y: 7} + moveCooldown: 0.5 + playerBounceHeight: 1.5 + obstacles: + - {x: 17, y: 18} + - {x: 7, y: 13} + - {x: 16, y: 12} + - {x: 18, y: 12} + - {x: 20, y: 12} + - {x: 12, y: 4} + - {x: 23, y: 4} + - {x: 18, y: 4} + - {x: 25, y: 21} + - {x: 7, y: 21} +--- !u!114 &472731668 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -154,54 +254,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: useCullingMasks: 0 - fieldSize: 6.47 - pointCount: 25 + fieldSize: 6.75 + pointCount: 30 pointSize: 0.05 lineWidth: 0.01 - noiseScale: 0.52 - waveHeight: 0.71 + noiseScale: 0.3 + waveHeight: 1 waveSpeed: 0.2 timeScale: 1 - radialFrequency: 0.5 - radialStrength: 1 ---- !u!114 &472731663 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 472731661} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: efc77758b3964bb47b33d516c7e80f62, type: 3} - m_Name: - m_EditorClassIdentifier: - useCullingMasks: 0 - lineThickness: 0.0066 - lineColor: {r: 0, g: 1, b: 0.24640584, a: 1} - seed: 0 - lineCount: 100 - branchesMin: 1 - branchesMax: 5 - branchLengthMin: 0.25 - branchLengthMax: 1 - maxAngDeviation: 1.0471976 - use3D: 0 ---- !u!4 &472731664 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 472731661} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.0485426, y: 3.0641944, z: -2.6293025} - 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} + rippleStrength: 2 + rippleDuration: 1.5 + rippleSpreadSpeed: 6 + rippleSharpness: 2 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -214,6 +278,7 @@ GameObject: - component: {fileID: 519420031} - component: {fileID: 519420029} - component: {fileID: 519420030} + - component: {fileID: 519420033} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -339,92 +404,25 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &619394800 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 619394802} - - component: {fileID: 619394801} - m_Layer: 0 - m_Name: Global Light 2D - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &619394801 +--- !u!114 &519420033 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 619394800} + m_GameObject: {fileID: 519420028} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Script: {fileID: 11500000, guid: c49b4cc203aa6414fae5c798d1d0e7d6, type: 3} m_Name: m_EditorClassIdentifier: - m_ComponentVersion: 1 - m_LightType: 4 - m_BlendStyleIndex: 0 - m_FalloffIntensity: 0.5 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 1 - m_LightVolumeIntensity: 1 - m_LightVolumeIntensityEnabled: 0 - m_ApplyToSortingLayers: 00000000 - m_LightCookieSprite: {fileID: 0} - m_DeprecatedPointLightCookieSprite: {fileID: 0} - m_LightOrder: 0 - m_AlphaBlendOnOverlap: 0 - m_OverlapOperation: 0 - m_NormalMapDistance: 3 - m_NormalMapQuality: 2 - m_UseNormalMap: 0 - m_ShadowIntensityEnabled: 0 - m_ShadowIntensity: 0.75 - m_ShadowVolumeIntensityEnabled: 0 - m_ShadowVolumeIntensity: 0.75 - m_LocalBounds: - m_Center: {x: 0, y: -0.00000011920929, z: 0} - m_Extent: {x: 0.9985302, y: 0.99853027, z: 0} - m_PointLightInnerAngle: 360 - m_PointLightOuterAngle: 360 - m_PointLightInnerRadius: 0 - m_PointLightOuterRadius: 1 - m_ShapeLightParametricSides: 5 - m_ShapeLightParametricAngleOffset: 0 - m_ShapeLightParametricRadius: 1 - m_ShapeLightFalloffSize: 0.5 - m_ShapeLightFalloffOffset: {x: 0, y: 0} - m_ShapePath: - - {x: -0.5, y: -0.5, z: 0} - - {x: 0.5, y: -0.5, z: 0} - - {x: 0.5, y: 0.5, z: 0} - - {x: -0.5, y: 0.5, z: 0} ---- !u!4 &619394802 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 619394800} - 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: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_EventMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_MaxRayIntersections: 0 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 519420032} - - {fileID: 619394802} - {fileID: 472731664} diff --git a/Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs b/Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs new file mode 100644 index 000000000..2ccbe5f1e --- /dev/null +++ b/Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs @@ -0,0 +1,262 @@ +using UnityEngine; +using Shapes; +using System.Collections.Generic; + +[ExecuteAlways] +public class EmoMazeDrawer : ImmediateModeShapeDrawer +{ + [Header("场设置")] + public float fieldSize = 20f; + public int pointCount = 30; + public float pointSize = 0.15f; + public float lineWidth = 0.03f; + + [Header("波动参数")] + public float noiseScale = 0.3f; + public float waveHeight = 1.5f; + public float waveSpeed = 1f; + public float timeScale = 1f; + + [Header("涟漪参数")] + public float rippleStrength = 2f; + public float rippleDuration = 1.5f; + public float rippleSpreadSpeed = 6f; + public float rippleSharpness = 2f; + public float rippleDelay = 0.25f; + + [Header("迷宫设置")] + public Vector2Int playerPos = new Vector2Int(1, 1); + public float moveCooldown = 0.2f; + public float playerBounceHeight = 1.5f; + public List obstacles = new List(); + + private float lastMoveTime = -999f; + private Vector3[] points; + private float time; + + // 涟漪记录结构体 + private struct Ripple + { + public Vector2 position; + public float startTime; + public float delay; + } + + private struct RippleResult + { + public float heightOffset; + public float brightnessBoost; + } + + private List ripples = new List(); + + private void Update() + { + // 时间更新(Play模式下使用 Time.time) + time = Application.isPlaying ? Time.time * timeScale : Time.realtimeSinceStartup * timeScale; + + if (Application.isPlaying) + { + HandleInput(); + ripples.RemoveAll(r => Time.time - r.startTime > rippleDuration + rippleDelay); + } + } + + private void HandleInput() + { + if (Time.time - lastMoveTime < moveCooldown) return; + + Vector2Int dir = Vector2Int.zero; + if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) dir = Vector2Int.up; + if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) dir = Vector2Int.down; + if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) dir = Vector2Int.left; + if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) dir = Vector2Int.right; + + if (dir != Vector2Int.zero) + { + Vector2Int newPos = playerPos + dir; + if (IsInBounds(newPos) && !IsBlocked(newPos)) + { + playerPos = newPos; + lastMoveTime = Time.time; + } + else + { + Vector3 world = GridToWorld(newPos); + AddRipple(world.x, world.z); // 产生“碰撞弹开”的涟漪 + } + } + } + + private bool IsInBounds(Vector2Int pos) => + pos.x >= 0 && pos.y >= 0 && pos.x < pointCount && pos.y < pointCount; + + private bool IsBlocked(Vector2Int pos) + { + foreach (var obs in obstacles) + { + if (Vector2Int.Distance(obs, pos) <= 1f) return true; + } + return false; + } + + private void AddRipple(float x, float z) + { + ripples.Add(new Ripple + { + position = new Vector2(x, z), + startTime = Time.time, + delay = rippleDelay + }); + } + + private RippleResult GetRippleEffect(float x, float z, float currentTime) + { + float rippleOffset = 0f; + float brightness = 0f; + + foreach (var ripple in ripples) + { + float elapsed = currentTime - ripple.startTime; + + if (elapsed < ripple.delay) + { + float dist = Vector2.Distance(new Vector2(x, z), ripple.position); + float spike = Mathf.Exp(-dist * rippleSharpness); + float ease = Mathf.Sin((elapsed / ripple.delay) * Mathf.PI * 0.5f); + rippleOffset += spike * rippleStrength * ease; + continue; + } + + float spreadElapsed = elapsed - ripple.delay; + float spread = spreadElapsed * rippleSpreadSpeed; + float dist2 = Vector2.Distance(new Vector2(x, z), ripple.position); + float t = Mathf.Clamp01(spreadElapsed / rippleDuration); + float ease2 = Mathf.Sin(t * Mathf.PI); + + float spike2 = Mathf.Exp(-Mathf.Pow(dist2 - spread, 2f) * rippleSharpness); + rippleOffset += spike2 * rippleStrength * ease2; + + float bright = Mathf.Exp(-Mathf.Pow((dist2 - spread) * 0.5f, 2f)); + brightness += bright * ease2; + } + + return new RippleResult + { + heightOffset = rippleOffset, + brightnessBoost = brightness + }; + } + + private float GetHeight(float x, float z, float currentTime) + { + float noise = 0; + float amp = 1f; + float freq = 1f; + + for (int i = 0; i < 3; i++) + { + float nx = x * freq * noiseScale; + float nz = z * freq * noiseScale; + float nt = currentTime * waveSpeed * freq; + noise += Mathf.PerlinNoise(nx + nt, nz + nt) * amp; + amp *= 0.5f; + freq *= 2f; + } + + return noise * waveHeight; + } + + private Vector3 GridToWorld(Vector2Int pos) + { + float step = fieldSize / (pointCount - 1); + float half = fieldSize * 0.5f; + float x = -half + pos.x * step; + float z = -half + pos.y * step; + return new Vector3(x, 0, z); + } + + public override void DrawShapes(Camera cam) + { + using (Draw.Command(cam)) + { + Draw.ResetAllDrawStates(); + Draw.LineGeometry = LineGeometry.Volumetric3D; + Draw.Thickness = lineWidth; + + float step = fieldSize / (pointCount - 1); + float halfSize = fieldSize * 0.5f; + + if (points == null || points.Length != pointCount * pointCount) + points = new Vector3[pointCount * pointCount]; + + for (int i = 0; i < pointCount; i++) + { + for (int j = 0; j < pointCount; j++) + { + float x = -halfSize + j * step; + float z = -halfSize + i * step; + + float baseHeight = GetHeight(x, z, time); + + if (IsNearObstacle(new Vector2Int(j, i))) + baseHeight += playerBounceHeight; + + RippleResult ripple = GetRippleEffect(x, z, Time.time); + float finalY = baseHeight + ripple.heightOffset; + + Vector3 pos = new Vector3(x, finalY, z); + points[i * pointCount + j] = pos; + + float depth = (finalY + waveHeight) / (waveHeight * 2f); + float brightness = Mathf.Clamp01(1f + ripple.brightnessBoost); + float pointScale = pointSize * (1f - depth * 0.5f); + + Color baseColor = Color.Lerp(new Color(0.5f, 1f, 1f), new Color(0f, 0.5f, 1f), depth); + baseColor *= brightness; + + Draw.Sphere(pos, pointScale, baseColor); + } + } + + // 绘制线连接点 + for (int i = 0; i < pointCount; i++) + { + for (int j = 0; j < pointCount; j++) + { + int index = i * pointCount + j; + Vector3 current = points[index]; + + if (j < pointCount - 1) + DrawLine(current, points[index + 1]); + + if (i < pointCount - 1) + DrawLine(current, points[index + pointCount]); + } + } + + // 玩家显示 + Vector3 playerWorld = GridToWorld(playerPos); + playerWorld.y = points[playerPos.y * pointCount + playerPos.x].y + 0.3f; + Draw.Sphere(playerWorld, pointSize * 1.5f, Color.yellow); + } + } + + private void DrawLine(Vector3 a, Vector3 b) + { + float avgY = (a.y + b.y) * 0.5f; + float lineDepth = (avgY + waveHeight) / (waveHeight * 2f); + Color lineColor = Color.Lerp(Color.cyan, new Color(0, 0.5f, 1f, 0.3f), lineDepth); + Draw.Line(a, b, lineWidth * (1f - lineDepth * 0.5f), lineColor); + } + + private bool IsNearObstacle(Vector2Int pos) + { + foreach (var o in obstacles) + { + if (Vector2Int.Distance(o, pos) <= 1f) + return true; + } + return false; + } +} diff --git a/Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs.meta b/Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs.meta new file mode 100644 index 000000000..6674f225e --- /dev/null +++ b/Assets/Scripts/MiniGame/HuoShan/Emo/EmoMazeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4f1d20068959374280197d2f664e3b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/MiniGame/HuoShan/Emo/LakeLineDrawer.cs b/Assets/Scripts/MiniGame/HuoShan/Emo/LakeLineDrawer.cs index bc39da3b8..4a48151fa 100644 --- a/Assets/Scripts/MiniGame/HuoShan/Emo/LakeLineDrawer.cs +++ b/Assets/Scripts/MiniGame/HuoShan/Emo/LakeLineDrawer.cs @@ -18,11 +18,10 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer public float timeScale = 1f; [Header("涟漪参数")] - public float rippleStrength = 2f; - public float rippleDuration = 1.5f; - public float rippleSpreadSpeed = 6f; - public float rippleSharpness = 2f; - public float rippleDelay = 0.25f; // ⏱️ 新增:扩散延迟(秒) + public float rippleStrength = 2f; // 尖刺强度 + public float rippleDuration = 1.5f; // 持续时间 + public float rippleSpreadSpeed = 6f; // 扩散速度 + public float rippleSharpness = 2f; // 尖刺锐度 private Vector3[] points; private float time; @@ -31,7 +30,6 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer { public Vector2 position; public float startTime; - public float delay; } private struct RippleResult @@ -55,13 +53,12 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer ripples.Add(new Ripple { position = new Vector2(hitPos.x, hitPos.z), - startTime = Time.time, - delay = rippleDelay + startTime = Time.time }); } } - ripples.RemoveAll(r => Time.time - r.startTime > rippleDuration + rippleDelay); + ripples.RemoveAll(r => Time.time - r.startTime > rippleDuration); } private RippleResult GetRippleEffect(float x, float z, float currentTime) @@ -72,30 +69,17 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer foreach (var ripple in ripples) { float elapsed = currentTime - ripple.startTime; + float spread = elapsed * rippleSpreadSpeed; + float dist = Vector2.Distance(new Vector2(x, z), ripple.position); - if (elapsed < ripple.delay) - { - // 尖刺阶段,不扩散,只在中心显示尖刺 - float dist = Vector2.Distance(new Vector2(x, z), ripple.position); - float spike = Mathf.Exp(-dist * rippleSharpness); // 尖锐程度 - float ease = Mathf.Sin((elapsed / ripple.delay) * Mathf.PI * 0.5f); // easeIn + float t = Mathf.Clamp01(elapsed / rippleDuration); + float ease = Mathf.Sin(t * Mathf.PI); - rippleOffset += spike * rippleStrength * ease; - continue; - } + float spike = Mathf.Exp(-Mathf.Pow(dist - spread, 2f) * rippleSharpness); + rippleOffset += spike * rippleStrength * ease; - // 扩散阶段 - float spreadElapsed = elapsed - ripple.delay; - float spread = spreadElapsed * rippleSpreadSpeed; - float dist2 = Vector2.Distance(new Vector2(x, z), ripple.position); - float t = Mathf.Clamp01(spreadElapsed / rippleDuration); - float ease2 = Mathf.Sin(t * Mathf.PI); - - float spike2 = Mathf.Exp(-Mathf.Pow(dist2 - spread, 2f) * rippleSharpness); - rippleOffset += spike2 * rippleStrength * ease2; - - float bright = Mathf.Exp(-Mathf.Pow((dist2 - spread) * 0.5f, 2f)); - brightness += bright * ease2; + float bright = Mathf.Exp(-Mathf.Pow((dist - spread) * 0.5f, 2f)); + brightness += bright * ease; } return new RippleResult @@ -149,7 +133,6 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer RippleResult ripple = GetRippleEffect(x, z, Time.time); float finalY = baseHeight + ripple.heightOffset; - // float shake = ripple.brightnessBoost > 0.01f ? Mathf.Sin(Time.time * 30f + x + z) * 0.02f : 0f; Vector3 pos = new Vector3(x, finalY, z); points[i * pointCount + j] = pos;