[英]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.