mobile - 无论手指在虚幻中的位置如何,同时调用捏和旋转事件?
问题描述
基本上,我在虚幻中创建一个移动应用程序。我发现虚幻已经为手机内置了旋转和捏合手势。然而,在我发现它们大约五秒钟后,我再次坠入了绝望的深渊。
在将一个简单的打印字符串附加到两个事件之后,我发现无论我如何将手指放在屏幕上,这两个事件基本上都是同时调用的。为每个事件设置简单的布尔值我发现在这个输入战中,捏事件基本上赢了 9/10 次。
考虑到它是一个内置事件,我觉得就编程而言我没有做错任何事情。这是某种错误还是坏了?为了调用一个事件或另一个事件,我的手指是否有某种特定的移动方式?我觉得我为手机做了非常标准的捏合和旋转手势......
解决方案
在做了更多研究之后,我发现在为两个手势事件设置轴值之后,它们都给出了非常不同的值。捏合手势给出的值始终在 0 到 14ish 之间。另一方面,旋转手势轴返回旋转度数。
我通过缓存当前旋转轴值并检查下一个值来解决它们同时执行的问题,如果两者之间的差异大于 10(绝对值)然后我执行了旋转,我也采取了该值除以 5 以获得更平滑的旋转,每次调用 2 度。
就捏合轴而言,我觉得没有必要在其上设置限制器,因为我的缩放速度相对较慢,并且在大多数情况下,在执行旋转时该值变化不大。但是,如果有人计划使用捏合手势,我强烈建议将 -1 和 1 之间的范围标准化。我认为虚幻的部分执行很差,它没有开箱即用。关于如何做到这一点的一点建议是,您必须检查该值是否大于 1(放大)或不(缩小)。因此,如果有意义的话,您必须将值从 0-1 标准化到 -1 到 0,并将值 1-14 标准化到 0 到 1。考虑到每两个手指在屏幕上的滴答声都会调用按下事件,因此标准化值是有意义的。当然,如果您只是用轴值替换比例,那么它开箱即用,但是,大多数人不会放大对象,他们只是将相机/吊杆向前或更小。
我希望这可以帮助其他人尝试使用这些记录不充分的手势事件。
推荐阅读
- django - 从父类到子类函数的文档字符串
- c# - 如何在 Visual Studio 2019 的 Blazor 中向组件添加部分类?
- java - JAXB Marshal 在发生错误之前创建文件的一部分
- r - 如何从我创建的包中获得通常的输出?
- inno-setup - 为什么 ShouldSkipPage 过程适用于 WelcomePage?
- python - 什么正则表达式可以匹配这种模式?
- sql - SQL oracle中NVL和OR的区别
- javascript - 我该如何摆脱这个错误?TypeError:无法将属性“onfocus”设置为 null
- python - 将数组从 python 传递到 C 的最佳方法是什么?
- api - 如何通过代理 API 访问 KeyCloak 端点