我所说的“切割”效果可以在著名的iPhone游戏《水果忍者》和《割绳子》中看到,即当你在屏幕上移动手指时,会有一条轨迹跟随你的手指模拟刀切割效果。
我想知道这种效果的名称是什么以及它是如何实现的。谁能给我一个提示?
这取决于到目前为止您是如何实现游戏的,即使用 Cocoa 中的 2D 图形或使用 OpenGL。例如,水果忍者使用后者,因为它的水果是 3D 模型。在这种情况下,您的 Render() 链通常会绘制所有 3D 对象,然后将投影更改为正交以在所有内容之上渲染诸如精灵字体或未转换的 2D 精灵(如 HUD)之类的东西。这些“精灵”中的每一个都是一个四边形(2 个三角形形成一个矩形),纹理图像映射到它。一旦纹理加载到图形内存中,GPU 可以非常快速地反复绘制它,并且无需额外成本即可拉伸或旋转它!
所以这就是我要做的方式:一个具有透明纹理的四边形,看起来像你想要的“条纹”。然后观察触摸点并跟踪前一个(或多个前一个)触摸坐标。计算两点之间的距离(谷歌“距离公式”)和它的角度向量(只要你有距离,就对 deltaX,deltaY 进行两次除法运算)。将这些应用到将用于变换四边形的 4x4 矩阵,以便拉伸它(按距离缩放 X),根据矢量旋转它,并将其转换为最近接触点的 X、Y。当触摸被解除时,您可以轻松地缩小/淡化条纹。
您可以使用另一种方法来处理弯曲的滑动。这更困难,但看起来会更好。使用 TRIANGLE STRIP 并沿其长度在顶点上应用“条纹”图像(纹理坐标 0.0 到 1.0)。然后根据所有这些先前的接触点,自己设置所有顶点坐标,计算点之间的线并垂直偏移顶点。说得通?但愿如此!我保证,这种方法很有趣,而且不像听起来那么痛苦!
开始使用 CoreAnimation 的一个好地方是WWDC 2010 视频。
要访问它,您将被要求使用您的开发帐户登录。
GLPaint示例可能会给您一些提示。