如何在Unity中验证用户绘制的形状

时间:2018-10-13 07:19:12

标签: unity3d character image-recognition

我正在Unity中创建一个应用程序,该应用程序中将向用户显示字母图像,并且用户将能够使用他的手指来跟踪图像中的字符。我知道如何在Unity中进行跟踪,但是我不知道如何验证用户绘制的字符是否正确。

例如向用户显示角色A的图像。现在,不是绘制用户,而是创建角色B。现在,如何验证用户绘制了错误的角色并要求他重试。

如何实现上述功能?我没有任何代码,因为不知道如何进行。

1 个答案:

答案 0 :(得分:0)

这里是您可以尝试的方法:

00。定义用户必须跟踪的路径,并将其存储

一种可行的方法是将gameObjects沿单词的路径放置,然后检查玩家是否按照您希望的顺序在其上追踪。 如果将其Vector3或Vector2位置存储在列表中,则可以轻松访问要播放的路径中的上一个/下一个点。

我会将它们存储为Vector2值的列表。

您的对象将是这样的:

- LETTER with script with Vector2 list + a collider (for Raycasting)
---- point1
---- point2
---- point3

1。获取手指位置

您可以使用Screenpoint来获取手指的位置:

Touch touch = Input.GetTouch(0);
Vector2 fingerPos = new Vector2(touch.position.x, touch.position.y);
ray = Camera.main.ScreenPointToRay(fingerPos);

2。获取手指在字母表面上的位置

然后,您可以检查此Raycast是否击中了放置在字母对象上的对撞机:

Vector3 hitpoint;

    if (Physics.Raycast(ray, out hit))
    {
       hitpoint = hit.point;
    }

然后可以使用此位置检查手指与要跟踪的下一个点之间的距离,或者如果手指在列表中的当前点上,则用户必须正确。

3。跟踪手指在字母上跟踪的路径

您可以使用列表检查播放器的追踪顺序。

当找到一个点时,将列表中的下一个点设置为下一个目标,并检查手指是否在该点上。

然后,您可以添加一种方法来跟踪被追踪的最后一个点与下一个点之间的延迟,因此您可以使用此值,例如,如果用户花费的时间太长,则重置被追踪的路径。