Adding _Speed parameter to shader to replace script based motion and simplify the asset.
_Speed("Speed", Range(-2,2)) = 1.0
...
float _Speed;
...
half4 frag (vertexOutput i) : SV_Target
{
fixed timescroll = _Speed * _Time;
half4 bump = tex2D(_MainTex, i.uvmain + fixed2(timescroll,0));
...
public class Water2DScript : MonoBehaviour
{
...
void LateUpdate()
{
Vector2 scroll = Time.deltaTime * speed;
mat.mainTextureOffset += scroll;
}
Original readme:
A 2D water surface that will deform what is "underwater".
More details in my blog post.
Made with Unity 5.4.3f1 but should work on all Unity 5 versions.
Not enough tested on mobile and not tested at all on consoles
-
Clone this repository or download the latest release package available.
-
Add the "Water2D Surface" prefab in your scene. This is now your water.
-
Tweak the sprite order/layer of the surface
-
Add a
WaterReflectableScript
to any object you want to be reflected in the water
Enjoy! You can also simply place sprites under water using sprite layers/order.
Demo assets made by the Superpower team.