5

使用 Cocos2d for iPhone 实现可平移缩放游戏地图的最佳方式是什么?它将类似于 Mobile Safari,但游戏地图不完全适合屏幕。或者像愤怒的小鸟、割绳子等一样。

这不会是一个横向滚动游戏,只是一个可以放大/缩小的固定游戏区域。

我是新手,所以如果有这方面的教程会很棒。

谢谢

4

3 回答 3

7

您绝对不应该听从Joao Caxaria 的建议,他似乎自己不必要地重新实现了整个 UIGestureRecognizer API!

您可以简单地使用 UIKit 的可用手势识别器并将它们附加到 sharedDirector 的 openGLView,如下面链接中选择的答案中所指定。这些允许平移、捏合、敲击等检测。您甚至可以使用 UILongPressGestureRecognizer 来检测拖动。

cocos2d-iOS - 手势识别器

于 2011-04-23T21:50:30.123 回答
4

如果您不打算在游戏中使用物理,那么它非常简单,您会发现很多关于缩放/平移的教程,只需在 touchesMoved 缩放/平移代码中设置您的世界 SCALE。

但是如果你想要像愤怒的小鸟一样的东西,那么你可以使用 Box2d/Chipmunk 物理引擎(带有 cocos2d),但是要像愤怒的小鸟一样构建物理世界,你要么必须编写自己的关卡编辑器,要么可以使用LevelSVG(由 Cocos2d 人)是一种在 SVG 编辑器中直观地制作世界并将其解析为 BOX2d 的东西。

至于在您的世界中使用物理实体的缩放/平移,只要您的物理世界在您尝试缩放的层中,它就会起作用。

但我会建议覆盖要缩放的图层的 VISIT 函数,并通过 glOrthof 或 glScalef 处理缩放

于 2010-10-19T22:42:56.583 回答
1

但我会建议覆盖要缩放的图层的 VISIT 函数,并通过 glOrthof 或 glScalef 处理缩放

我不会覆盖访问功能......只需将您的图层添加到触摸调度程序:

[[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0];

并实现委托功能:

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

如果您注意到用户正在平移/缩放,则在此函数中,只需更新场景位置/比例属性。

要查看用户是否在平移或缩放,请在此处检查此 InputController 帮助器类:https ://github.com/caxaria/LoopingMenu

希望能帮助到你,

于 2010-11-19T16:26:17.033 回答