我试图使颜色游戏中有三个对象的边界,三维立方体,和指针(管),在这里我画了一个三维立方体的指针通过改变其纹理,并把一个精灵的立方体,所以我想检测的条件,而我几乎完成了精灵边界内的着色我怎么能做到这一点在统一?就像这张照片
我想知道如何检测边界精灵中几乎完全的着色。
ar5n3qh51#
要检测子画面边界内的着色是否基本完成,您可以结合使用Unity内置的碰撞检测和图像处理技术。
当玩家正在绘制立方体时,循环重复步骤2-4,以不断检查着色是否完成。着色完成后,您可以触发事件或在游戏中执行一些其他动作。
using UnityEngine; public class ColorDetection : MonoBehaviour { public SpriteRenderer spriteRenderer; public Texture2D maskTexture; public Color thresholdColor; private void Update() { Color averageColor = GetAverageColor(); if (IsColorSimilar(averageColor, thresholdColor)) { Debug.Log("Coloring is complete"); } } private Color GetAverageColor() { Texture2D texture = spriteRenderer.sprite.texture; Rect spriteRect = spriteRenderer.sprite.rect; Color[] maskPixels = maskTexture.GetPixels(); Color[] spritePixels = texture.GetPixels((int)spriteRect.x, (int)spriteRect.y, (int)spriteRect.width, (int)spriteRect.height); int count = 0; Color sum = Color.clear; for (int i = 0; i < maskPixels.Length; i++) { if (maskPixels[i].a > 0) { count++; sum += spritePixels[i]; } } return sum / count; } private bool IsColorSimilar(Color a, Color b) { float delta = 0.05f; return Mathf.Abs(a.r - b.r) < delta && Mathf.Abs(a.g - b.g) < delta && Mathf.Abs(a.b - b.b) < delta; } }
1条答案
按热度按时间ar5n3qh51#
要检测子画面边界内的着色是否基本完成,您可以结合使用Unity内置的碰撞检测和图像处理技术。
当玩家正在绘制立方体时,循环重复步骤2-4,以不断检查着色是否完成。
着色完成后,您可以触发事件或在游戏中执行一些其他动作。