i-school - スクラッチのエフェクトを作成する
・マスク用イメージを利用して、スクラッチしているエフェクトを再現する

・オブジェクト作成

・Unmaskをインポート
https://github.com/mob-sakai/UnmaskForUGUI

参考サイト
https://kan-kikuchi.hatenablog.com/entry/UnmaskFor...

・コード
まずは分岐なしで試す => ずっとマスクが動く
分岐を作って、タップ時のみに制御を変える

using UnityEngine;

public class ScratchEffect : MonoBehaviour {

    [Header("スクラッチ用のMaskPrefab")]
    public GameObject maskPrefab;

    [Header("生成されたMaskPrefabの配置位置")]
    public Transform maskPlace;

    private float scaleX = 0.01f;     // マスクのXの大きさ
    private float scaleY = 0.005f;    // マスクのYの大きさ
    private bool isPressed = false;   // タップ判定の検出用

    void Update() {
        var mousePos = Input.mousePosition;
        mousePos.z = 10;
        mousePos = Camera.main.ScreenToWorldPoint(mousePos);

        // マウスのポジションをViewPointに変換(-1 ~ 1の間)
        Vector3 pos = Camera.main.WorldToViewportPoint(mousePos);

        //if (isPressed == true) {
            GameObject maskImage = Instantiate(maskPrefab, mousePos, Quaternion.identity);
            maskImage.transform.parent = maskPlace;
            maskImage.transform.localScale = new Vector3(scaleX, scaleY, 1);
        //}

        //if (Input.GetMouseButtonDown(0)) {
        //    isPressed = true;

        //} else if (Input.GetMouseButtonUp(0)) {
        //    isPressed = false;
        //}
    }
}



・ヒエラルキーの整理












・プレファブ化





・タップに合わせてエフェクトを生成する
 空のゲームオブジェクトを1つ作成し、名前を「ScratchEffectGenerator」に変更します。
同名のスクリプトをアタッチし、インスペクターを確認します。アサイン情報が抜けているので、こちらを修正します。

 MaskPrefabはスクラッチしたエフェクト用のゲームオブジェクトです。すでにプレファブ化してあるMaskPrefabをアサインします。
もしもスクラッチしたを一定時間後に破棄し、再度スクラッチが行えるようにするには
MaskPrefabに以下のスクリプトをアタッチし、時間で破壊されるようにします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DestroyMaskObject : MonoBehaviour
{
    public float destroyTime;

    void Start()
    {
        Destroy(this.gameObject, destroyTime);
    }
}


 MaskPlaceは、上記のMaskPrefabが生成される位置です。ヒエラルキー上に複数並ぶことになりますので、この位置に生成し、フォルダ代わりに使います。
ここにはヒエラルキーにある、同名のゲームオブジェクトをアサインします。



・ヒエラルキーの構成



・実行時のサンプル動画
https://gyazo.com/cbb6cce2ed98aa6fb654edd8924b1b0e