无论虚幻中的手指位置如何,同时调用捏合和旋转事件?
Pinch and Rotate Events are called at the same time no matter finger position in Unreal?
基本上,我是在 Unreal 中创建一个移动应用程序。我发现Unreal内置了手机的Rotate和Pinch手势。然而,在我发现它们的大约五秒后,我又一次坠入了绝望的深渊。
在为这两个事件附加一个简单的打印字符串后,我发现无论我如何将手指放在屏幕上,这两个事件基本上都会同时被调用。为每个事件设置简单的布尔值我发现捏事件在这场输入战中基本上赢了 9/10 次。
考虑到它是一个内置事件,我觉得就编程而言我没有做错任何事。这是某种错误还是已损坏?为了调用一个事件或另一个事件,我的手指是否有某种特定的移动方式?我觉得我做了很标准的手机捏合和旋转手势...
经过更多研究后,我发现在为两个手势事件设置轴值后,它们都给出了非常不同的值。捏合手势给出的值始终介于 0 和 14ish 之间。另一方面rotate gesture axis returns旋转了一个度数。
我通过缓存当前旋转轴值并在两者之间的差异大于 10(绝对值)时将其与下一个值进行检查来解决它们同时执行的问题,然后我执行了rotate,我也把这个值除以 5 以获得更平滑的旋转,每次调用 2 度。
就捏合轴而言,我觉得没有必要在它上面放一个限制器,因为我的缩放速度相对较慢,而且在大多数情况下,执行旋转时该值变化不大. 但是,如果有人计划使用捏合手势,我强烈建议将 -1 和 1 之间的范围归一化。我认为 Unreal 没有这样做只是执行不力盒子外面。关于如何执行此操作的一个小建议是,您必须检查该值是否大于 1(放大)或不大于(缩小)。因此,如果有意义的话,您必须将 0-1 到 -1 到 0 的值以及 1-14 到 0 到 1 的值归一化。考虑到两个手指在屏幕上的每个滴答声都会调用按下事件,因此对值进行标准化才有意义。当然,如果您只是用轴值替换刻度,那么它可以开箱即用,但是,大多数人不会按比例放大对象,他们只是将 camera/boom 向前移动或更小。
我希望这可以帮助其他人尝试使用这些记录不完整的手势事件。
基本上,我是在 Unreal 中创建一个移动应用程序。我发现Unreal内置了手机的Rotate和Pinch手势。然而,在我发现它们的大约五秒后,我又一次坠入了绝望的深渊。
在为这两个事件附加一个简单的打印字符串后,我发现无论我如何将手指放在屏幕上,这两个事件基本上都会同时被调用。为每个事件设置简单的布尔值我发现捏事件在这场输入战中基本上赢了 9/10 次。
考虑到它是一个内置事件,我觉得就编程而言我没有做错任何事。这是某种错误还是已损坏?为了调用一个事件或另一个事件,我的手指是否有某种特定的移动方式?我觉得我做了很标准的手机捏合和旋转手势...
经过更多研究后,我发现在为两个手势事件设置轴值后,它们都给出了非常不同的值。捏合手势给出的值始终介于 0 和 14ish 之间。另一方面rotate gesture axis returns旋转了一个度数。
我通过缓存当前旋转轴值并在两者之间的差异大于 10(绝对值)时将其与下一个值进行检查来解决它们同时执行的问题,然后我执行了rotate,我也把这个值除以 5 以获得更平滑的旋转,每次调用 2 度。
就捏合轴而言,我觉得没有必要在它上面放一个限制器,因为我的缩放速度相对较慢,而且在大多数情况下,执行旋转时该值变化不大. 但是,如果有人计划使用捏合手势,我强烈建议将 -1 和 1 之间的范围归一化。我认为 Unreal 没有这样做只是执行不力盒子外面。关于如何执行此操作的一个小建议是,您必须检查该值是否大于 1(放大)或不大于(缩小)。因此,如果有意义的话,您必须将 0-1 到 -1 到 0 的值以及 1-14 到 0 到 1 的值归一化。考虑到两个手指在屏幕上的每个滴答声都会调用按下事件,因此对值进行标准化才有意义。当然,如果您只是用轴值替换刻度,那么它可以开箱即用,但是,大多数人不会按比例放大对象,他们只是将 camera/boom 向前移动或更小。
我希望这可以帮助其他人尝试使用这些记录不完整的手势事件。