【问题标题】:How would a cutting effect be implemented on iPhone?如何在 iPhone 上实现切割效果?
【发布时间】:2010-11-03 09:19:09
【问题描述】:

我所说的“切割”效果可以在著名的iPhone游戏《水果忍者》和《割绳子》中看到,即当你在屏幕上移动手指时,会有一条轨迹跟随你的手指模拟刀切割效果。

我想知道这种效果的名称是什么以及它是如何实现的。 谁能给我一个提示?

【问题讨论】:

    标签: iphone graphics effects cut


    【解决方案1】:

    这取决于您迄今为止是如何实现游戏的,即使用 Cocoa 中的 2D 图形或使用 OpenGL。例如,水果忍者使用后者,因为它的水果是 3D 模型。在这种情况下,您的 Render() 链通常会绘制所有 3D 对象,然后将投影更改为正交以在所有内容之上渲染诸如精灵字体或未转换的 2D 精灵(如 HUD)之类的东西。这些“精灵”中的每一个都是一个四边形(2 个三角形形成一个矩形),纹理图像映射到它。一旦纹理加载到图形内存中,GPU 可以非常快速地反复绘制它,并且无需额外成本即可拉伸或旋转它!

    这就是我要做的方式:一个具有透明纹理的四边形,看起来像你想要的“条纹”。然后观察触摸点并跟踪前一个(或多个前一个)触摸坐标。计算两点之间的距离(谷歌“距离公式”)及其角度向量(只要你有距离,就对 deltaX,deltaY 进行两次除法运算)。将这些应用到 4x4 矩阵,您将用于转换四边形,以便拉伸它(按距离缩放 X),根据矢量旋转它,并将其转换为最近接触点的 X、Y。当触摸解除时,您可以轻松缩小/淡化条纹。

    您可以使用另一种方法来处理弯曲滑动。这更困难,但看起来会更好。使用 TRIANGLE STRIP 并沿其长度在顶点上应用“条纹”图像(纹理坐标 0.0 到 1.0)。然后根据所有这些先前的接触点,自己设置所有顶点坐标,计算点之间的线并垂直偏移顶点。有道理?但愿如此!我保证,这种方法很有趣,而且没有听起来那么痛苦!

    【讨论】:

    • 这真是一个很好的答案,谢谢。我打算使用2D图形(cocos2d lib)来实现效果。我尝试使用以下方法来做到这一点: 1)创建一个代表轨迹的图像,例如 16x16 白色块; 2)在手指位置的每一帧上绘制图像; 3) 对绘制的图像应用 alpha 渐变效果。但是轨迹图像是分散的,而不是连续的。根据您的回答,似乎每一帧我都应该计算两点的距离并对我的轨迹图像应用变换。稍后我会尝试,再次感谢您的回答。
    【解决方案2】:

    GLPaint 示例可能会给您一些提示。

    【讨论】:

      【解决方案3】:

      从 CoreAnimation 开始的好地方是the WWDC 2010 Videos

      • 第 424 课 - 核心动画实践,第 1 部分
      • 第 425 课 - 核心动画实践,第 2 部分

      要访问它,您将被要求使用您的开发帐户登录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多