缩放和平移2D cocos2d iphone游戏的最佳方式

时间:2010-10-15 07:00:04

标签: iphone cocos2d-iphone zoom pan

使用Cocos2d for iPhone实现可扩展的可缩放游戏地图的最佳方式是什么?它会像Mobile Safari一样,但游戏地图不完全适合屏幕。或者喜欢用“愤怒的小鸟”,“剪绳”等完成它的方式。

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

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

由于

3 个答案:

答案 0 :(得分:6)

你绝对应该遵循Joao Caxaria的建议,他似乎已经不必要地重新实现了整个UIGestureRecognizer API!

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

cocos2d-iOS - Gesture recognisers

答案 1 :(得分:4)

如果你不打算在你的游戏中使用物理,那么你会发现很多关于缩放/平移的教程,只需在touchesMoved zoom / pan code中设置你的世界SCALE。

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

对于你所在世界的物理实体的缩放/平移,只要您的物理世界位于您想要扩展的LAYER中,它就会起作用。

但我建议覆盖你想要缩放的图层的VISIT功能,并通过glOrthof或glScalef来处理缩放

答案 2 :(得分: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

希望它有所帮助,