YuminekoGame
6/28/2019 - 8:37 AM

UI Effect 2D

using UnityEngine;
using UnityEngine.UI;
public class UIEffect : MonoBehaviour {
    [SerializeField] private RectTransform targetRect;
    [SerializeField] private ParticleSystem particle;
    private Canvas _canvas;
    public Canvas Canvas { get { return this._canvas ? this._canvas : this._canvas = targetRect.GetComponent<Graphic> ().canvas; } }

    // Start is called before the first frame update
    void Start () {
        //RectTransformをスクリーン座標に変換
        Vector2 screenPos = RectTransformUtility.WorldToScreenPoint (Canvas.worldCamera, targetRect.position);

        //ワールド座標
        Vector3 worldPos = Vector3.zero;

        //スクリーン座標→ワールド座標に変換
        RectTransformUtility.ScreenPointToWorldPointInRectangle (targetRect, screenPos, Canvas.worldCamera, out worldPos);
        worldPos.z = 0.0f;
        particle.transform.position = worldPos;
        particle.Emit (1);
    }
}