Tag: cocos2d iphone

cocos2d 2.0-rc2:结束导演并重启

我有一个使用UIKit菜单的cocos2d动力游戏,所以我只使用一个viewcontroller的框架,这是游戏本身。 而且,它只有一个场景。 由于cocos2d 2.0导演本身是一个UIViewController子类,所以当用户点击一个开始button时,我只是将它推入我的MenuViewController : -(void)startGameButtonPressed { CCDirectorIOS* director = (CCDirectorIOS *) [CCDirector sharedDirector]; // Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits self.glView = [CCGLView viewWithFrame:CGRectMake(0, 0, 480, 320) pixelFormat:kEAGLColorFormatRGB565 //kEAGLColorFormatRGBA8 depthFormat:0 //GL_DEPTH_COMPONENT24_OES preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; // attach the openglView to the director [director setView:glView]; [director runWithScene:[GameLayer […]

如何检测何时播放完音效?

我正在使用SimpleAudioEngine,并试图在继续之前检测音效是否完成播放。 我正在寻找任何方法,但我试图实施的方法不起作用! CDSoundEngine *engine = [CDAudioManager sharedManager].soundEngine; ALuint soundId = [[SimpleAudioEngine sharedEngine] playEffect:soundId]; float seconds = [engine bufferDurationInSeconds:soundId]; 每次我使用bufferDurationInSeconds时,它都会返回-1的浮点值给variables秒。 我检查了实现,并且当id无效时返回-1,但是我是100%ID是有效的! 任何人都可以帮助我解决这个问题,或build议我另一种方式来检测声音效果的结束?

OpenGL vs Cocos2d:select什么?

我明白,cocos2d是非常简单的API,我可以用它来做简单而巨大的2D,甚至有时候是3D游戏/应用程序。 我也明白,OpenGL更复杂,更低层次的API等。 题: 实施2D / 3D游戏有什么好处? 为什么我们需要学习OpenGL,如果我们有简单的框架,如cocos2d? 你可以用OpenGL做什么,你不能用cocos2d做什么? 提前致谢!

如何让对象对Cocos2D中的触摸做出反应?

好吧,所以我开始了解更多关于Coco2D的知识,但是我有些受伤了。 我发现的很多教程都是针对过时的代码版本的,所以当我仔细查看它们是如何做某些事情的时候,我不能将它翻译成我自己的程序,因为很多已经改变了。 据说,我正在使用最新版本的Coco2d 0.99版本。 我想要做的是在屏幕上创build一个精灵(完成),然后当我触摸精灵,我可以有“事情”发生。 现在,让我们只是警惕起飞。 现在,我得到了这个代码在朋友的帮助下工作。 这是头文件: // When you import this file, you import all the cocos2d classes #import "cocos2d.h" // HelloWorld Layer @interface HelloWorld : CCLayer { CGRect spRect; } // returns a Scene that contains the HelloWorld as the only child +(id) scene; @end 这里是实现文件: // // cocos2d Hello World example […]

移动一个精灵时,所有精灵都不可见

我在我的场景中有7个精灵。所有的精灵都添加到mutablearray。 当我触摸一个精灵来移动,其他精灵在我的触摸移动方法后不可见 这是我的代码 if( (self=[super init])) { sprites=[[NSMutableArray alloc]init]; CCLayer *base=[CCSprite spriteWithFile:@"Base.png"]; base.position=ccp(512,384); [self addChild:base]; x=0; for(int i=1;i<=7;i++) { CCSprite *hole=[CCSprite spriteWithFile:@"ball.png"]; hole.position=ccp(140+x,318); hole.tag=i; [self addChild:hole]; hole.visible=YES; [sprites addObject:hole]; x=x+75; } self.isTouchEnabled=YES; } return self; } My touchesmove method: -(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"count:%i",[sprites count]); UITouch *touch=[touches anyObject]; CGPoint location=[touch locationInView:[touch view]]; location=[[CCDirector sharedDirector]convertToGL:location]; […]

CCLOG不显示

我已经写了一个代码来显示使用CCLog时精灵的精确位置,当一个鼠标联合移动它被释放。 下面是Sprite.mm类和ccTouchesEnded方法(它在HelloWorldLayer.mm类中)。 CCLog不显示消息。 Sprite.mm: -(id)addSprite:(CCLayer *)parentLayer inWorld:(b2World *)world { PhysicsSprite *aSprite = [PhysicsSprite spriteWithFile:@"spriteIm.png"]; aSprite.tag = 1; [parentLayer addChild:aSprite]; b2BodyDef spriteBodyDef; spriteBodyDef.userData = aSprite; spriteBodyDef.type = b2_dynamicBody; CGSize s = [CCDirector sharedDirector].winSize; spriteBodyDef.position = [Convert toMeters:ccp(s.width * 0.25,s.height-400)]; b2FixtureDef fixtureDef; fixtureDef.density = 0.01; b2CircleShape circleShape; circleShape.m_radius = aSprite.contentSize.width/2 / PTM_RATIO; fixtureDef.shape = &circleShape; spriteBody = […]

在App使用过程中,cocos2d v3重新定位屏幕

所以在cocos2d(我相信我是在V2.1)我做了这个locking和设置方向: AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; const UIInterfaceOrientation ORIENTATION = delegate.navController.interfaceOrientation; delegate.navController. delegate.navController.screenOrientation = ORIENTATION == UIInterfaceOrientationMaskPortrait; UIViewController *mVC = [[UIViewController alloc] init]; [delegate.navController presentModalViewController:mVC animated:NO]; [delegate.navController dismissModalViewControllerAnimated:NO]; 随着一些function添加到AppDelegate。 我似乎无法在iOS7和cocos2d v3中获得相同的结果。 我已经挖了一下,适当的function似乎已经到位,但似乎无法设置一个全局variables来设置方向,并在特定时间只返回一个我想要的。 有人能指出我的正确道路吗? 我想我错过了一些非常小的东西,因为正确的代码似乎已经在那里了。 这是我的AppDelegate的代码 @implementation AppDelegate -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self setupCocos2dWithOptions:@{ CCSetupShowDebugStats: @(NO), }]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; return YES; } […]

通过Game Center发送NSString

我想通过Gamecenter发送另一个到另一个iPhone / iPad的NSString,但它与EXC_BAD_ACCESS 在.h文件中 typedef enum { kMessageTypeRandomNumber = 0, kMessageTypeGameBegin, kMessageTypeSubmit, kMessageTypeExchange, kMessageTypePickup, kMessageTypePass, kMessageTypeGameOver } MessageType; typedef struct { MessageType messageType; } Message; typedef struct { Message message; NSString *submitTile; } MessageSubmit; 在这里.m文件 – (void)sendData:(NSData *)data { NSError *error; BOOL success = [[GCHelper sharedInstance].match sendDataToAllPlayers:data withDataMode:GKMatchSendDataReliable error:&error]; if (!success) { CCLOG(@"Error sending init […]

评分系统在Cocos2D

我的游戏有一个碰撞检测,当我的导弹击中敌人敌人消失。 每当我的导弹击中敌人时,我想增加一个得分系统。 我将在下面发布我的游戏代码(我使用了HelloWorldLayer.m)** 这里是代码: 链接 – http://pastebin.com/iGP83SCv 在碰撞部分,我只是希望它在每次弹丸击中敌人的“萌芽”并在标签上显示得分时增加1点。 例如:分数:0000 PS,请尽可能简单的解释一下。

Gamecenter身份validation仅适用于iOS 6的CCLayer的Cocos2d

我有似乎是一个相当普遍的问题,但我的search和解决scheme的实施还没有解决。 我已经构build了一个Cocos2d游戏,只是为了风景,但需要访问Gamecenter。 Gamecenter正在工作,纵向模式启用,但它也允许游戏翻转到肖像模式。 我已经尝试了以下修复: 游戏中心loginlocking景观只在OS 6 只有横向应用程序中的GameCenter身份validation会引发UIApplicationInvalidInterfaceOrientation 将GameCenter添加到横向专用的cocos2d应用程序后,iOS 6中出现错误 科科斯2d 2.0 shouldAutorotate不工作? 我相信问题在于我使用CCLayers而不是UIViewControllers来构build游戏 例如:MenuLayer.h @interface MenuLayer : CCLayer <GKAchievementViewControllerDelegate, GKLeaderboardViewControllerDelegate, UINavigationControllerDelegate>{ ..my header info.. } MenuLayer.m … -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } -(BOOL)shouldAutorotate { return [[UIDevice currentDevice] orientation] != UIInterfaceOrientationPortrait; } -(void)authenticateLocalPlayer { GKLocalPlayer * localPlayer= [GKLocalPlayer localPlayer]; if(localPlayer.authenticated == NO) { NSString *reqSysVer = […]