【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器
生活随笔
收集整理的這篇文章主要介紹了
【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(轉載請注明出處:http://blog.csdn.net/buptgshengod)
1.介紹
? ? cocos2d為我們提供了好用的搖桿控制器,主要是對ZJoystick.h和ZJoystick.m的添加,實現了如下圖的功能。通過搖桿可以控制圖中精靈的移動。(但是還有一個技術性問題亟待解決,就是精靈移動后會有一個重影留在初始位置)2.搖桿的實現
? ?1)?將資源中的ZJoystick文件夾加到工程中(頁面下方提供下載地址),?精靈的添加以及移動前面已經講了,不知道的同學可以看教程四。工程名字為ControlWalking。
? ? 2)修改HelloWorldLayer.h文件。加入一些需要的節點參數。 #import <GameKit/GameKit.h>// When you import this file, you import all the cocos2d classes #import "cocos2d.h" #import "ZJoystick.h" // HelloWorldLayer @interface HelloWorldLayer : CCLayer<ZJoystickDelegate> {CCTexture2D *spriteTexture_; // weak ref//b2World* world; // strong ref//GLESDebugDraw *m_debugDraw; // strong ref//CCTMXTiledMap *_gameMap;CCSprite *_player;//是精靈,圖中的熊貓 }// returns a CCScene that contains the HelloWorldLayer as the only child +(CCScene *) scene;@end
? ? 3) ?修改HelloWorldLayer.m文件。
? 首先,在HelloWorld接口中定義搖桿函數 @interface HelloWorldLayer() //-(void) initPhysics; -(void) initJoystick; @end?接著,添加initJoystick函數,方便在init中調用。 -(void) initJoystick{ZJoystick *_joystick2 = [ZJoystick joystickNormalSpriteFile:@"JoystickContainer_norm.png"selectedSpriteFile:@"JoystickContainer_trans.png"controllerSpriteFile:@"Joystick_norm.png"];_joystick2.position = ccp(_joystick2.contentSize.width/2 + 10,_joystick2.contentSize.height/2 + 10);_joystick2.delegate = self; //Joystick Delegate_joystick2.controlledObject = _player;_joystick2.speedRatio = 2.0f;_joystick2.joystickRadius = 50.0f; //added in v1.2_joystick2.joystickTag = 999;[self addChild:_joystick2];}
下一步,添加Joystick的一些屬性,也直接寫在HelloWorldLayer.m文件里。 #pragma mark - zJoystick delegate methods -(void)joystickControlBegan {// CCLOG(@"Joystick Began Controlling");}-(void)joystickControlMoved {// CCLOG(@"Joystick Move Controlling");}-(void)joystickControlEnded {// CCLOG(@"Joystick End Controlling");}-(void)joystickControlDidUpdate:(id)joystick toXSpeedRatio:(CGFloat)xSpeedRatio toYSpeedRatio:(CGFloat)ySpeedRatio{ZJoystick *zJoystick = (ZJoystick *)joystick;if (zJoystick.joystickTag == 999) {CGFloat xPos = _player.position.x;CGFloat yPos = _player.position.y;_player.position = ccp(xPos + xSpeedRatio, yPos + ySpeedRatio);//定義精靈的移動方式} } @end 最后一步就是要修改,init函數。前提是我們已經添加完成精靈(也就是圖中的熊貓,前面第四章講了)。 其實只要將精靈對象付給頭文件中定義的_player,再調用一下前面定義的initJoystick就可以了。 _player=panda;//panda為自己定義的精靈對象 [self initJoystick];//調用initJoystick函數 (程序源代碼資源下載地址)
? ? ? ??
總結
以上是生活随笔為你收集整理的【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#多线程实现函数同步运行
- 下一篇: 【Cocosd2d实例教程六】Cocos