From f79f61b93d8061d89dde18063526e417ffc409d2 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Tue, 27 Oct 2020 13:54:15 +0800 Subject: [PATCH] 简单修改新手引导 --- Assets/Scripts/Guide/Mask/RectGuidance.cs | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/Guide/Mask/RectGuidance.cs b/Assets/Scripts/Guide/Mask/RectGuidance.cs index a202905..ad2b8d5 100644 --- a/Assets/Scripts/Guide/Mask/RectGuidance.cs +++ b/Assets/Scripts/Guide/Mask/RectGuidance.cs @@ -54,18 +54,25 @@ { instance = this; canvas = GameObject.Find("MainUI").GetComponent<Canvas>(); + eventPenetrate = GetComponent<GuidanceEventPenetrate>(); + material = GetComponent<Image>().material; } public void Init(Image target) { this.target = target; - eventPenetrate = GetComponent<GuidanceEventPenetrate>(); if (eventPenetrate != null) { eventPenetrate.SetTargetImage(target); } //获取高亮区域的四个顶点的世界坐标 target.rectTransform.GetWorldCorners(corners); + + for (int i = 0; i < corners.Length; i++) + { + Debug.Log("corners i:" + i + " vec3:" + corners[i]); + } + //计算高亮显示区域在画布中的范围 targetOffsetX = Vector2.Distance(WorldToCanvasPos(canvas, corners[0]), WorldToCanvasPos(canvas, corners[3])) / 2f; targetOffsetY = Vector2.Distance(WorldToCanvasPos(canvas, corners[0]), WorldToCanvasPos(canvas, corners[1])) / 2f; @@ -101,6 +108,24 @@ material.SetFloat("_SliderX", currentOffsetX); material.SetFloat("_SliderY", currentOffsetY); } + + + public void InitForCamera(Image target, float x, float y) + { + this.target = target; + if (eventPenetrate != null) + { + eventPenetrate.SetTargetImage(target); + } + + Vector2 center = target.GetComponent<RectTransform>().anchoredPosition; + + material.SetVector("_Center", center); + material.SetFloat("_SliderX", x); + material.SetFloat("_SliderY", y); + + } + /// <summary> /// 收缩速度 /// </summary> @@ -126,17 +151,19 @@ //立刻显示阴影区域 public void ShowImmediately() { + return; + float valueX = Mathf.SmoothDamp(currentOffsetX, targetOffsetX, ref shrinkVelocityX, 0); float valueY = Mathf.SmoothDamp(currentOffsetY, targetOffsetY, ref shrinkVelocityY, 0); if (!Mathf.Approximately(valueX, currentOffsetX)) { currentOffsetX = valueX; - material.SetFloat("_SliderX", currentOffsetX); + material.SetFloat("_SliderX", targetOffsetX); } if (!Mathf.Approximately(valueY, currentOffsetY)) { currentOffsetY = valueY; - material.SetFloat("_SliderY", currentOffsetY); + material.SetFloat("_SliderY", targetOffsetY); } } @@ -149,7 +176,9 @@ private Vector2 WorldToCanvasPos(Canvas canvas, Vector3 world) { Vector2 position; + RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, world, canvas.GetComponent<Camera>(), out position); + return position; } } -- Gitblit v1.9.1