我已经使用 Cocoa Touch 有一段时间了,非常喜欢它。对于我的下一个游戏,我希望用户能够用手指追踪路线并让图像跟随该路径。它还将涉及碰撞检测,例如这里有一堵墙。我已经在 Core Animation 中看到过碰撞检测,并且我知道 CGPath() 和类似的函数可能会帮助我跟踪图像要遵循的路径。所以我的问题是,当整个框架中有超过一半的代码与 Cocoa Touch 重复时,为什么还有这么多人使用 Cocos2d。我在这里缺少性能问题吗?我不能制作一个像飞行控制这样的手指追踪游戏,它只使用 Cocoa Touch 来检测墙壁的碰撞。我真的很想在 Interface Builder 中布置关卡。我需要的最低构建要求是游戏能够在 iPhone3g 及更高版本上运行,这意味着我也可以使用 Storyboards。有没有人看到我通过试图躲避 Cocos2d 进入一个痛苦的世界。我应该分解并将该框架用于此类项目吗?
2 回答
您的问题非常“哲学”,我认为许多开发人员在某些时候为自己思考过同样的疑问。
对我来说,我在几个应用程序中使用了 cocos2d,因为它对游戏典型概念的“开箱即用”支持(最终它是一个游戏引擎):精灵和精灵表;iPhone 图形芯片的原生格式(PVRTC 纹理);物理引擎和碰撞检测。我也喜欢认为 cocos2d 在处理复杂的 Open GL 方面做得很好,为我节省了大量时间(换句话说,我只会在不使用 Open GL 的情况下使用 Core Automation 编写游戏)。
另一方面,在我看来,核心自动化是一种更广泛的技术,包括对 Quartz 和 Open GL 的支持,但不知何故处于底层图形系统(无论是 Open GL 还是 Quartz)和你的游戏。通过使用 Core Animation,您将不得不(重新)编写许多您已经在 coco2d 中免费找到的代码(就像我上面强调的三点)。还请查看有关该主题的这篇文章。
两条路都可以,在一种情况下你必须掌握一个新的自定义框架(cocos2d);另一方面,您将需要编写一些“通用”代码来处理基本内容(即,在 Core Automation 之上构建您自己的迷你游戏引擎)。
就屏幕内容而言,Cocos2D 只是 OpenGL 的一个包装器,您想要在 OpenGL 中完成的许多任务已经为您解决了。OpenGL 比 UIKit 更快,并且可以产生更多您可能希望在游戏中使用的图形效果(例如粒子效果,尽管您现在可以在 iOS5 中的 UIKit 中实现这些效果)。
虽然有一些简单的游戏是用 UIKit 制作的,如果你只是用手指拖动图像,UIKit 应该足够快。