【问题标题】:Create a level terrain similar to Tiny Wings using SpriteKit使用 SpriteKit 创建类似于 Tiny Wings 的关卡地形
【发布时间】:2014-07-24 02:14:58
【问题描述】:

我想在 SpriteKit 中创建一个类似于 Tiny Wings 游戏中的纹理地形。使用 cocos2d,我能够按照 Ray W 的教程获得我想要的外观......

http://www.raywenderlich.com/32954/how-to-create-a-game-like-tiny-wings-with-cocos2d-2-x-part-1

是否可以使用 SpriteKit 绘制点以使三角形填充重复纹理(或类似的东西)?

提前致谢。

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    是的,你可以用 sprite kit 创建一个像小翅膀这样的游戏

    1. 步骤使用http://dazchong.com/spritekit/ 工具创建 serval CGMutablePath,它是一个在线 SKPhysicsBody 路径生成器,并将它们保存在 NSMutableArray 数组中假设您的游戏中只有一个级别用于多级别创建多个 NSMutableArray 数组,其中包含多个随机保存的 CGMutablePath 项

    2. 确保所有 CGMutablePath 都有静态物理体,现在不要让它动态

      在您的 init 函数中,按照第一条路径结束第二条路径开始的顺序逐个添加所有路径,依此类推,您可以制作一个巨大的相互连接的薮路径循环。

      不要创建更多路径,因为过多的物理实体会使您的游戏变慢

    3. 现在在更新函数中,确保从右到左移动数组的所有项目 当您到达 NSMutableArray 数组的最后一项时,在循环算法的请求处再次添加它。

      -(void)update:(CFTimeInterval)currentTime {
      
      }
      
    4. 制作一只小鸟并赋予它动态的物理体

      设置小鸟的碰撞和接触类别以及您的循环路径

    5. 现在在 didBeginContact 函数中,您可以在您的小鸟和路径之间获得联系。现在您可以应用一点 Impulse 或者您可以在您的小鸟和路径之间获得 contact.collisionImpulse 应用将该值应用于您的游戏中的小鸟

      -(void)didBeginContact:(SKPhysicsContact *)contact
      {
         //contact
         CGPoint contactPoint=CGPointMake(0, 0);
      }
      

    【讨论】:

    • 感谢dragoneye 提供的重要物理信息,我相信它会派上用场的。但是,我要询问的部分是地形/山丘的实际纹理。基本上,一旦我有了地形的点,我怎样才能用纹理填充这些三角形?
    • 在 Photoshop 任何其他图像编辑工具中创建这些三角形,然后将它们添加到纹理图集中,逐个获取它们并使用 dazchong.com/spritekit 在这些纹理上添加物理体
    【解决方案2】:

    看来我需要使用(或者至少我想到的)是顶点着色器,但 Spritekit 目前不支持这些着色器。目前,我只能找到片段着色器。

    不过,我确实看到您可以创建一个 SKShapeNode 并设置它的纹理属性。唯一的问题是没有选项可以在整个 SKShapeNode 中“平铺”该图像。

    我确实发现这个似乎可以解决这个问题(虽然我还没有尝试过)。 https://gist.github.com/man1/413642637ebd0b00fe2b

    看起来很不错!

    最后,我决定在这个项目中使用 Cocos2d,因为它同时支持顶点和片段着色器。经过一些反复试验,我得到了它的出色工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多