繁体   English   中英

使用OpenGL ES进行缩放和滑动

[英]Zooming and swiping with OpenGL ES

我正在为iOS制作2D拼图,目前我正在尝试使用UIPinchGestureRecognizer实现缩放和滚动。

缩放是这样完成的:我有一个目标2D矢量,它是一个“缩放点”。 代码是:

glTranslatef(target.x, target.y, 0);
glScalef(scale, scale, 0);
glTranslatef(-target.x, -target.y, 0);

正在使用手势识别器以这种方式选择目标:

-(void)handlePinchGesture:(UIPinchGestureRecognizer*)recognizer
{
    if (UIGestureRecognizerStateBegan == [recognizer state])
    {
        view->setTarget([recognizer locationInView:self]);
    }
    // Rest of the code omitted
}

一切正常。

最初这款游戏是专为iPAD设计的,但我希望它能够在iPhone和iPOD上运行。 但iPhone和iPOD具有不同的宽高比。 为了保持初始图像比例,我决定使初始Y比例更大一些。 此外,这还可以使用初始缩放系数来上下滑动游戏区域。 代码是:

glTranslatef(target.x, target.y, 0);
glScalef(scale, scale * aspectRatio, 0);
glTranslatef(-target.x, -target.y, 0);

如果游戏区域在屏幕上“居中”(例如,在机器人滑动方向上有相同的空间(向上和向下)),这可以正常工作。 但是如果我们向上或向下滑动场并开始捏合手势,游戏区域会再次跳到中心。

我知道我需要通过一些偏移来转换手势位置,但我无法确定3天内的确切方式。

保存您在滑动时执行的翻译量,然后在每次调用handlePinchGesture ,应用您在滑动时保存的翻译。

我希望它有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM