using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.U2D; public class WaterSpring : MonoBehaviour { public float Velocity { get; set; } = 0f; private float _force = 0f; public float Height { get; set; } = 0f; private float _targetHeight = 0f; private int _waveIndex; private SpriteShapeController _spriteShapeController; public void Init(SpriteShapeController spriteShapeController) { _spriteShapeController = spriteShapeController; var index=transform.GetSiblingIndex(); _waveIndex = index + 1; Velocity = 0; Height = transform.localPosition.y; Height = transform.localPosition.y; } public void WavePointUpdate() { if (_spriteShapeController != null) { Spline waterSpline = _spriteShapeController.spline; Vector3 wavePosition = waterSpline.GetPosition(_waveIndex); waterSpline.SetPosition(_waveIndex, new Vector3(wavePosition.x, transform.localPosition.y, wavePosition.z)); } } public void WaveSpringUpdate(float springStiffness, float dampening) { Height = transform.localPosition.y; var maximumExtension = Height - _targetHeight; var loss = -dampening * Velocity; _force = -springStiffness * maximumExtension+loss; Velocity +=_force; var y=transform.localPosition.y; transform.localPosition = new Vector3(transform.position.x, y+Velocity, transform.position.z); } }