2010-10-15 56 views
5

使用Cocos2d for iPhone實現可拖動的可縮放遊戲地圖的最佳方式是什麼?除非遊戲地圖完全適合屏幕,否則就像Mobile Safari一樣。或者喜歡它如何做與憤怒的小鳥,割繩子等。放大和平移2D的最佳方式cocos2d iPhone遊戲

這不會是一個側面滾動遊戲,只是一個固定的遊戲區域,你可以放大/縮小。

我是新來的,所以如果有教程,這將是偉大的。

感謝

回答

1

,但我會建議改寫你想擴展您層的訪問功能,並通過兩種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

希望它能幫助,

4

,如果你不打算在你的遊戲中使用物理,那麼它很簡單,你會發現有很多的縮放/平移教程,只需設置你的世界規模的touchesMoved縮放/平移代碼。你可以使用Box2d/Chipmunk物理引擎(自帶cocos2d),但是對於像憤怒的小鳥一樣構建物理世界,你將不得不編寫自己的關卡編輯器或者你也可以使用LevelSVG(通過Cocos2d人員)來在SVG編輯器中直觀地製作世界並將其解析爲BOX2d。

至於你的世界中的物理體的縮放/平移,只要你的物理世界位於你正在嘗試縮放的LAYER中,它就會工作。

,但我會建議改寫你想擴展您層的訪問功能,以及通過任何glOrthof或glScalef

處理縮放
6

你絕對應該被若奧Caxaria照做,似乎誰已經不必要地重新實現了整個UIGestureRecognizer API!

您可以簡單地使用UIKit的可用手勢識別器,並將它們附加到sharedDirector的openGLView中,如下面鏈接中所選答案中指定的那樣。這些允許平底鍋,捏,輕拍等檢測。您甚至可以使用UILongPressGestureRecognizer來檢測拖動。

cocos2d-iOS - Gesture recognisers