adding realistic water

This commit is contained in:
2023-06-22 18:48:08 +03:00
parent b2cf8fde92
commit e1b4e4062f
5 changed files with 201 additions and 2 deletions
+49
View File
@@ -0,0 +1,49 @@
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(int level)
{
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);
}
}