Unity 래스터에서 스크롤

Unity에서 래스터 스크롤을 구현했습니다!
이런 걸 찾을 수 없어서 스스로 이런 기사를 만들어 봤어요.
만약 어디에 이미 출전했다면, 떳떳하지 못했을 것이다

래스터 스크롤


래스터 스크롤: Wiki
나는'마지막 스크롤 바'를 검색해서 애니메이션을 보는 것이 가장 이해하기 쉽다고 생각한다.

이것 괜찮아요?

이런 느낌이 흔들리고 있다.

설치 방법


PostEffect(ImageEffect)를 사용합니다.
일단 스크립트부터.
PostEffect.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class PostEffect : MonoBehaviour
{
    public Material mat;

    public void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        Graphics.Blit(source, destination, mat);
    }
}
On RenderImage를 사용하여 그릴 이미지(텍스쳐)에 소재를 적용합니다.
이번 경우 이 소재는 거리측정기에서 설정한 것이다.
색인에 소재를 설정하려면 래스터 스크롤 텍스쳐에 사용할 재료를 설정합니다.유닛에서 소재를 제작하여 아래의 차폐물을 적용합니다.
RasterScroll.shader
Shader "Custom/RasterScroll"{
    Properties{
        _MainTex("MainTex", 2D) = "white" {}
        _Level("Level", Range(0, 1)) = 0.2
        _Speed("Speed", Range(0, 3)) = 0.5
        _RoundTrip("RoundTrip", Range(1, 5)) = 1
    }
    SubShader{
        Pass{
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct appdata_t
            {
                float4 vertex:POSITION;
                float3 normal:NORMAL;
                float4 texcoord:TEXCOORD0;
            };

            struct v2f
            {
                float4 pos:POSITION;
                float2 uv:TEXCOORD0;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _Level;
            float _Speed;
            float _RoundTrip;

            v2f vert(appdata_t v)
            {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
                return o;
            }

            float4 frag(v2f i) :COLOR{
                //1秒で _Speed ずつ加算されるタイムの作成
                float time = _Time.y * _Speed;
                //y座標(0 ~ 1)における波形のスタート位置のズレ
                float dy = time - floor(time);
                //x座標(0 ~ 1)のズレ
                float dx = sin(radians((i.uv.y - dy) * 360 * floor(_RoundTrip))) * _Level;
                //ピクセルの位置を計算
                float2 uv = float2(i.uv.x + dx, i.uv.y);
                //x座標が範囲外になってるものは黒で塗りつぶす
                if (uv.x < 0 || 1 < uv.x)
                    return float4(0, 0, 0, 0);
                return tex2D(_MainTex, uv);
            }
            ENDCG
        }
    }
}
이 재료의
  • Level: 흔들림
  • Speed: 속도
  • RoundTrip: 주파수
  • 래스터 스크롤 애니메이션을 수정합니다.

    좋은 웹페이지 즐겨찾기