adding realistic water
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user