iphone 游戏编程入门1

id moveAction = [CCMoveTo actionWithDuration:0.9 position:ccp(200,200)];  id fadeOutAction = [CCFadeOut actionWithDuration:0.9];  id callback = [CCCallFunc actionWithTarget:self selector:@selector(finishedAnimation)];   [smiley runAction:[CCSequence actions:moveAction,fadeOutAction,callback,nil]];   -(void) finishedAnimation  {  NSLog(@”animation has been finished!”);  } 

       添加下面的代码到你的HelloWorldScene.m文件的头部:

Cocos2d使用动作为CCNode对象中的界面或其他对象添加效果。Cocos2d框架有许多内置动作,这些动作包括CCFadeTo、CCMoveTo和CCScaleBy等。以下代码使用CCMoveTo动作将笑脸移动到屏幕上的特定位置:

初次翻译文章,望各位关照,想说的话在作者的文章里边也有表述,就直接开始吧

在上述代码中,我们已将CCParticleExplosion效果初始化,这是Cocos2d框架中许多可用的CCParticles效果之一。粒子效果间隔时间设定为2秒,粒子对象设定为自动移除。

 

添加CCParticles

     当你得到这些图片后,把它们直接拖到XCode里边的resources文件夹里边去,一定要选中"Copy items into destination group’s folder (if needed)”。 

图片 1
 
图4:The default Cocos2d project template output

     请注意,该算法并不理想。我们正在迫使子弹继续前进直到在X方向上离开屏幕-即使首先在Y方向上已经离开了屏幕!有不同的方法来解决这个,包括检查离开屏 幕的最小长度,让游戏的逻辑回调核查离开屏幕的子弹和消除回调,而不是使用回调方法,等等。但这个初级教程,我们将保持原样。

if(distance <= 50)  {  CCParticleExplosion *explosion = [[CCParticleExplosion alloc] init];  explosion.texture = [[CCTextureCache sharedTextureCache] addImage:@”smiley.png”];  [explosion setDuration:2];  [explosion setAutoRemoveOnFinish:YES];  explosion.position = self.smiley.position;  [self addChild:explosion];   [self removeChild:self.smiley cleanup:YES];  self.smiley = nil;  } 

Cpp代码  图片 2

-(void) finishedAnimation  {  int x = arc4random() % 320;  int y = arc4random() % 480;   id moveAction = [CCMoveTo actionWithDuration:0.9 position:ccp(x,y)];  id callback = [CCCallFunc actionWithTarget:self selector:@selector(finishedAnimation)];   [smiley runAction:[CCSequence actions:moveAction,callback,nil]];  } 

     下面我们需要在场景中添加一些目标让忍者去打击。为了让事情变的更有趣一些,我们要让这些目标移动起来-要不然没什么挑战性。我们在稍稍偏屏幕右边的地方创建一些目标,并为它们建立动作来让它们向左移动。

// on “init” you need to initialize your instance  -(id) init  {  // always call “super” init  // Apple recommends to re-assign “self” with the “super” return value  if( (self=[super init] )) {   CGSize windowSize = [[CCDirector sharedDirector] winSize];   // adding the sprite  CCSprite *smiley = [CCSprite spriteWithFile:@"smiley.png"];  smiley.position = ccp(windowSize.width/2,windowSize.height/2);  [self addChild:smiley];   // actions   [smiley runAction:[CCMoveTo actionWithDuration:0.9 position:ccp(300,300)]];   }   return self;  } 

Cpp代码  图片 3

这个代码使用CCCallFunc类别创建出回收功能。一旦CCMoveTo和CCFadeOut两个动作均完成之后,回收功能就会被触发。以排除漏洞模式运行应用,你会发现在动画完成后,显示完成的日志信息动画会显示在屏幕上。

  • 我们知道我们需要一个离开屏幕的结束点。
     
    好了,上代码。首先,我们必须使我们的层可以支持触摸。添加下面一行到您的init方法:

图片 4
 
图1:Cocos2d template for Xcode

 

界面。界面指得是那些赋予游戏灵魂的事物。比如,如果你制作太空游戏,你的飞船和敌人就是界面。用于深化用户游戏体验的每个角色都可以当成是界面。

  1. [[SimpleAudioEngine sharedEngine] playEffect:@"pew-pew-lei.caf"];   

Cocos2d框架

  1. target.tag = 1;   
  2. [ _targets addObject:target];   

了解框架的基础

       拖动一些背景音乐和一个射击声音效果到你的resources文件夹中。随意使用
cool background music I made 图片 5 background-music-aac.caf.zip (252 K) 下载次数:52
或是 awesome pew-pew sound effect 图片 6 pew-pew-lei.caf.zip (40 K) 下载次数:42 ,或者制作你自己的。

我已经在本文中为你简要介绍了Cocos2d框架的使用方法,帮助你入门开发iPhone游戏。如果你想要探索苹果iOS开发环境,使用Cocos2d构建一款简单的游戏可以使你积累一定的开发经验。

     接下来我们加载子弹精灵并像往常一样设置初始坐标。然后,我们确定我们希望子弹移动的位置,按照前面描述的算法,使用玩家和触摸点之间的联系来作为指导载体。

在你需要界面执行诸多动作的同时,便产生了情节。对于这些情节,你可以使用CCSpawn类型,确保这些动作同时为界面所执行。以下代码便是CCSpawn在动作中的应用:

Java代码  图片 7

当使用CCActions时,找到动画的完结点很有用。在这段情节中,我们可以使用CCSequence类别。CCSequence让开发者可以陆续进行不同动作,然后最终会有回收功能显示动画已完成。以下代码便是CCSequence:

  1. #import "SimpleAudioEngine.h"   

制作首个Cocos2d项目

     在场景里边,你要有许多的图层(就像Photoshop里边的一样),图层可能包含多个(nodes)结点,比如sprites(精灵),labels(标签),menus(菜单)及其它。当然结点也包含其它的结点(比如,一个精灵可以有一个子精灵)。

在这个代码中,你可以创建两个独立的动作,CCMoveTo和CCFadeOut。这两个动作都会以参数的形式递交给CCSpawn方法,使得笑脸CCSprite能够同时移动和淡出屏幕。

因此,大家可以看到,我们利用起点到触摸点的X和Y方向的偏移创造了个小三角形。我们只需要以同样的比例大三角形

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  {   UITouch *touch = [touches anyObject];  CGPoint location = [touch locationInView:[touch view]];  location = [[CCDirector sharedDirector] convertToGL:location];   float distance = pow(smiley.position.x – location.x, 2)   pow(smiley.position.y – location.y, 2);  distance = sqrt(distance);   if(distance <= 50)  {  [smiley runAction:[CCScaleBy actionWithDuration:0.9 scale:2.0]];   [self performSelector:@selector(removeSmileyFromLayer) withObject:nil afterDelay:1.2];   }  } 

      •CCMoveTo:我们使用CCMoveTo动作来指导物体屏幕左边。请注意,我们可以指定运动应采取的持续时间,在这里,我们采用2-4秒的随机速度。

Cocos2d是用于构建iPhone游戏的开源框架,是基于iPhone核心SDK之上架构而成,提供可加速iPhone游戏开发的易用API。

  1. - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {   
  2.   
  3. // Choose one of the touches to work with   
  4. UITouch *touch = [touches anyObject];   
  5. CGPoint location = [touch locationInView:[touch view]];   
  6. location = [[CCDirector sharedDirector] convertToGL:location];   
  7.   
  8. // Set up initial location of projectile   
  9. CGSize winSize = [[CCDirector sharedDirector] winSize];   
  10. CCSprite *projectile = [CCSprite spriteWithFile:@"Projectile.png" rect:CGRectMake(0, 0, 20, 20)];   
  11. projectile.position = ccp(20, winSize.height/2);   
  12.   
  13. // Determine offset of location to projectile   
  14. int offX = location.x - projectile.position.x;   
  15. int offY = location.y - projectile.position.y;   
  16.   
  17. // Bail out if we are shooting down or backwards   
  18. if (offX <= 0) return;   
  19.   
  20. // Ok to add now - we've double checked position   
  21. [self addChild:projectile];   
  22.   
  23. // Determine where we wish to shoot the projectile to   
  24. int realX = winSize.width   (projectile.contentSize.width/2);   
  25. float ratio = (float) offY / (float) offX;   
  26. int realY = (realX * ratio)   projectile.position.y;   
  27. CGPoint realDest = ccp(realX, realY);   
  28.   
  29. // Determine the length of how far we're shooting   
  30. int offRealX = realX - projectile.position.x;   
  31. int offRealY = realY - projectile.position.y;   
  32. float length = sqrtf((offRealX*offRealX) (offRealY*offRealY));   
  33. float velocity = 480/1; // 480pixels/1sec   
  34. float realMoveDuration = length/velocity;   
  35.   
  36. // Move projectile to actual endpoint   
  37. [projectile runAction:[CCSequence actions:   
  38. [CCMoveTo actionWithDuration:realMoveDuration position:realDest],   
  39. [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)], nil]];   
  40.   
  41. }   
-(void) finishedAnimation  {  int x = arc4random() % 320;  int y = arc4random() % 480;   id moveAction = [CCMoveTo actionWithDuration:0.9 position:ccp(x,y)];  id callback = [CCCallFunc actionWithTarget:self selector:@selector(finishedAnimation)];   [smiley runAction:[CCSequence actions:moveAction,callback,nil]];  } 

Cpp代码  图片 8

注意:上述代码可轻易独立成某个类别的方法,这会减少出现复制粘贴之类的错误。但为了让此文更为简洁,我已经复制了代码。

     让我们试一下吧!打开Classes文件夹选中HelloWorldScene.m,用下面的代码来代替init方法:

添加界面

    下面,添加前面我们已经在CCCallFuncN动作中已经提过的回调函数。你可以在addTarget函数前面添加:

在上述代码中,我们使用CCDirector来恢复winSize实例。winSize是指当前运行的iOS设备的尺寸。这确保应用正确地在设备上运行。

 

在上述代码中,我们可以设置笑脸和触点间的最短距离。如果距离小于50像素,程序确实笑脸已被用户触及。随后我们运行CCScaleBy动作,为笑脸增大,随后使用传统removeSmileyFromLayer方法将其从层中移除。

 

添加背景只是应用设计的开始,我们需要为游戏添加可操作的界面。我们将使用一张笑脸图片作为我们的活动界面。使用下列代码可为应用添加界面:

  

要使用Cocos2d框架的强大功能,第一步是下载和安装与框架相关的框架和模板。游戏邦注:原文提供了框架和模板的下载地址。)

图片 9

打开Xcode,创建新项目。如图1所示,从项目模板菜单中选择Cocos2d项目。

Cpp代码  图片 10

在开始制作首个iPhone游戏前,建议先熟悉下Cocos2d框架的基础,包括以下四项内容:

在你的ccTouchesEnded方法中播放下面的声音效果:

图8:CCParticleExplosion effect in action

 

图7显示调整后的结果。

      让我们开始来用刚刚安装的Cocos2D工程模板来建立并运行一个简单的Hello World 工程。启动XCode ,选中 cocos2d-0.99.0 Applications模板创建一个新的Cocos2D工程,给工程命名为“Cocos2DSimpleGame

图片 11

Cpp代码  图片 12

http://www.bkjia.com/IOSjc/608349.htmlwww.bkjia.comtruehttp://www.bkjia.com/IOSjc/608349.htmlTechArticleiPhone游戏 开发 使用 Cocos2d框架 开发教程是本文要介绍的内容,移动设备正改变我们工作和与他人互动的关系。新一轮革命正在我们身上发...

Cpp代码  图片 13

图片 14

      我们非常接近拥有一个可行的(但非常简单)的游戏了。我们只需要添加一些声音效果和音乐(因为什么类型的游戏没有音乐的!)和一些简单的游戏逻辑。

图7:Smiley face sprite added to the game scene

第一步:

使用最初的方法,我们创建CCSprite实例呈现笑脸角色。首先将笑脸放置在适当位置100,100),随后添加到层中。如果你运行应用,你会发现笑脸看不见。原因在于笑脸位于背景层之后。为看到笑脸,我们将背景界面的Z轴值调为-1,将背景界面放置在笑脸界面之后,代码如下:[layer addChild:background z:-1];

 

图片 15
 
图2:Cocos2d project template base SDK missing

      在这时,忍者希望有一些动作-让们添加射击吧!我们有很多的方法来实现射击,但在这个游戏中我们要在用户点击屏幕时来进行射击,从玩家射出的子弹将按照点击的方向前进。

图片 16

Cpp代码  图片 17

图片 18

Cpp代码  图片 19

正如你从以上截屏中看到的那样,iOS SDK 4.0丢失,但我们可以选择iOS SDK 4.1。选择正确的SDK后,使用“指令B”构建整个项目。项目中不能有错误。实现上述目标后,你可以用“指令R”来运行应用。图4显示应用正在运行中iPhone模拟器的样式。

Cpp代码  图片 20

如果你在iPad上运行应用,你会发现背景和界面的位置都有错误。为了让应用在iPhone和iPad设备上的显示效果相同,我们必须使用CGSize类别来深化当前设备的宽度值和高度值。以下代码显示如何使用CGSize:

    你可以从 the Cocos2D Google Code page下载Cocos2D,现在的最新版本是0.99.0-final(这也是这篇教程使用的)。 

你所要做的是告诉Cocos2d框架我们正在使用的是更新版本的SDK。要达成此目标,点击“项目”标签下的“编辑项目设置”,然后如图3所示指定SDK版本。

  1. _targets = [[NSMutableArray alloc] init];   
  2. _projectiles = [[NSMutableArray alloc] init];   

在上述例子中,我们将笑脸放置在屏幕上时使用的是硬代码值。以下使用硬代码值在屏幕上放置元素是因为应用将以iPhone协调系统为基础。

 

iphone游戏

 
让它编译并运行,现在当你的子弹和目标碰撞时它们就会消失!

CCSprite类型包含spriteWithFile方法,输入文件名作为参数。使用addChild方式将背景界面加入到层次中,得到图5中显示的效果。

 

arc4random功能可用于随机生成从0到n-1的数字。我们根据iPhone屏幕尺寸游戏邦注:即320 x 480像素)来限定这个随机数字。获得的坐标随后将传输至CCMoveTo功能的位置参数。finishedAnimation也可以用作回收方法,使得动画在结束后不断重复。运行应用,你会发现笑脸不断从某个随机位置移动到另一个随机位置。

Java代码  图片 21

 
图6:Background sprite positioned correctly

 英文原文链接:http://www.raywenderlich.com/352/how-to-make-a-simple-iphone-game-with-cocos2d-tutorial

// on “init” you need to initialize your instance  -(id) init  {  // always call “super” init  // Apple recommends to re-assign “self” with the “super” return value  if( (self=[super init] )) {   // adding the sprite  CCSprite *smiley = [CCSprite spriteWithFile:@"smiley.png"];  smiley.position = ccp(100,100);  [self addChild:smiley];   }  return self;  } 

Cpp代码  图片 22

我们的笑脸在屏幕上自由移动,目前没有方法让它停下来。在本节中,我们将让用户可以通过接触事件来控制笑脸。处理接触事件的方法很多,为使设计简单我们使用CCTouchesBegin事件,这个事件在用户接触屏幕时触发。在使用CCTouchesBegin事件之前,使用原始方法确保isTouchEnabled特性设定为“是”:

 

默认Cocos2d模板设定为横向模式显示,MyFirstCocos2dProjectAppDelegate.m文件中使用以下代码就可以轻易做出改变:

     在这个例子工程中,你可以看到有一个场景-HelloWorldScene,我们也将在它里边开始实现我们的游戏。继续打开源文件,你会看到在init这 个方法中,它加入了一个label来在场景中显示”Hello World”。我们将要放入一个精灵来代替它。
 
添加一个精灵

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  {   UITouch *touch = [touches anyObject];  CGPoint location = [touch locationInView:[touch view]];  location = [[CCDirector sharedDirector] convertToGL:location];  } 

 
      最后,让我们添加一些非常基本的游戏逻辑。首先,让我们跟踪玩家破坏的目标。添加一个成员变量到您的HelloWorldScene.h中 HelloWorld类如下:

背景图片适合尺寸为320 x 480的屏幕。如果你计划让设备的转动发挥作用,那么你需要有张适合480 x 320横向模式的背景图片。在下一节中,我们将为应用添加界面。

     Cocos2D被组织到”scenes”(场景)的概念中,有点类似于游戏中的”levels”(等级)或是”screens”(屏幕).比如你需要有一个场景来为游戏初始化菜单,一个场景为游戏的主要动作,一个场景为游戏结束。 

效果显示在图8中。

 
      继续编译并运行工程,你会看到你的玩家精灵在白色的背景上。噢,我们的忍者已经准备表演了。    
图片 23

Cocos2d模板有基础执行程序,使得屏幕上显示出“Hello World”的语句。每秒帧数(FPS)测量值显示在屏幕左下方游戏邦注:图4中是60.0)。默认模板是为了验证开发者已正确安装框架以及与框架相关的所有组件。下个部分我们将继续深入挖掘Cocos2d框架。

     还要修改你的ccTouchesEnded方法,把新子弹添加到子弹数组中给它设置一个标记以便在以后使用:

图3:Selecting the installed SDK for iOS device

 

图片 24

射击子弹

图5:Background sprite not positioned correctly

”. 
 
图片 25
继续编译并运行该工程。如果一切正常,你将看到下图:

iPhone游戏开发 使用Cocos2d框架开发教程是本文要介绍的内容,移动设备正改变我们工作和与他人互动的关系。新一轮革命正在我们身上发生,人们开始通过移动设备消费更多的数据内容。iPhone应用商店成为手机应用成功和流行的缩影,其中游戏是最热门的类别。在本篇文章中,我将展示如何用Cocos2d框架来制作iPhone游戏

     还需要注意的是在默认状态下当我们为一个物体设置position属性时,position属性是和我们添加的精灵的中心点关联起来的。因此如果我们想把玩家精灵放置在屏幕水平方向的左边,垂直方向的中间:
position的X坐标,要设置成[player sprite's width]/2.
Position的Y坐标,要设置成[window height]/2
下面这张图可以帮助我们更好的理解

场景。场景这个节点很特殊,它是所有节点的基础。场景的目的在于呈现出游戏的可操作部分和展现游戏场景游戏邦注:如游戏结束、主页面和高分排行榜等)。

 
再用下面的代码来代替GameOverScene.m中的内容

现在,我们的笑脸还没有任何移动。在下节中,我们将介绍让笑脸在屏幕中移动的方法。

      在你准备要运行前你只需要做一件事-通过添加下面的代码到init方法中去安排上面的方法尽可能多的运行

小结:iPhone游戏开发 使用Cocos2d框架开发教程的内容介绍完了,希望本文对你有所帮助!

  1. - (void)update:(ccTime)dt {   
  2.       NSMutableArray *projectilesToDelete = [[NSMutableArray alloc] init];   
  3.   
  4. for (CCSprite *projectile in _projectiles) {   
  5.   
  6.        CGRect projectileRect = CGRectMake( projectile.position.x -(projectile.contentSize.width/2), projectile.position.y - (projectile.contentSize.height/2), projectile.contentSize.width, projectile.contentSize.height);   
  7.   
  8. NSMutableArray *targetsToDelete = [[NSMutableArray alloc] init];   
  9.   
  10. for (CCSprite *target in _targets) {   
  11.   
  12.     CGRect targetRect = CGRectMake( target.position.x -(target.contentSize.width/2), target.position.y - (target.contentSize.height/2), target.contentSize.width, target.contentSize.height);   
  13.   
  14. if (CGRectIntersectsRect(projectileRect, targetRect)) {   
  15.   
  16.         [targetsToDelete addObject:target];   
  17.   
  18. }  
  19.    
  20. }   
  21.   
  22. for (CCSprite *target in targetsToDelete) {   
  23.         [_targets removeObject:target];   
  24.         [self removeChild:target cleanup:YES];   
  25. }   
  26.   
  27. if (targetsToDelete.count > 0) {   
  28.        [projectilesToDelete addObject:projectile];  
  29. }   
  30.   
  31. [targetsToDelete release];   
  32.   
  33. }   
  34.   
  35.   
  36. for (CCSprite *projectile in projectilesToDelete) {   
  37.           [_projectiles removeObject:projectile];   
  38.           [self removeChild:projectile cleanup:YES];  
  39. }   
  40.   
  41. [projectilesToDelete release];   
  42.   
  43. }   

层次。层次呈现出的是玩游戏的具体区域。Cocos2d中的层次与Photoshop的层次作用类似。这意味着某个场景可以由多个层次构成。一个层次承载背景画面,另一个层次便是游戏动作发生之初。

 

下载和安装Cocos2d框架和模板

 
在init方法中初始化这两个数组:

现在,当用户触及笑脸时,它会增大随后消失。我们可以使用Cocos2d的Particles框架使之表现得更为出色。Particles框架让你可以通过数百个CCNode对象动画做出令人瞩目的效果。所有对象协调配合,创造出特殊的效果。

现在像下面这样简单的实现这个回调函数:

以上使用的ccTouchesBegan方法可获得用户接触屏幕的坐标。在ccTouchesBegan事件中,我们需要得知用户是否接触笑脸。我们通过使用好用的老式毕达哥拉斯原理来实现这个目标。以下代码显示我们如何察觉笑脸是否已被接触:

    在你下载完代码后,你应该安装有用的工程模板。打开Terminal window(终端窗口),找到下载的Cocos2D所在的目录,输入下面的命令:./install_template.sh。
如果你的XCode不是安装在默认的目录下面(比如说你的机器上面可能安装了多个版本的SDK),你可以在安装脚本里边手工的添加一个参数。(译者注,我没试过,试过的大大可以给指明一下,17楼写明了, 谢谢17楼的提示)

// on “init” you need to initialize your instance  -(id) init  {  // always call “super” init  // Apple recommends to re-assign “self” with the “super” return value  if( (self=[super init] )) {   CGSize windowSize = [[CCDirector sharedDirector] winSize];   // adding the sprite  CCSprite *smiley = [CCSprite spriteWithFile:@"smiley.png"];  smiley.position = ccp(windowSize.width/2,windowSize.height/2);  [self addChild:smiley];   }   return self;  } 

 

不幸的是,背景界面的位置不正确。我们需要为界面设置锚点,如图6所示。

然后:

动作和顺序

 
   然后选中HelloWorldScene.m并对init方法进行一个细微的修改来把背景色改为白色。

现在,如果你运行应用就会发现,显示是纵向而不是横向。接下来,我们要改变游戏的背景。我们已经在项目的“资源”文件夹中加入文件Background3.png。资源文件夹存放所有应用中使用的资源游戏邦注:如图片、声音文件等)。以下面的代码将背景图片设置在静态模式场景中:

  1. _projectilesDestroyed ;   
  2.   
  3. if (_projectilesDestroyed > 30) {   
  4.   
  5. GameOverScene *gameOverScene = [GameOverScene node];   
  6. [gameOverScene.layer.label setString:@"You Win!"];   
  7. [[CCDirector sharedDirector] replaceScene:gameOverScene];   
  8.   
  9. }   

开始使用Cocos2d框架

  1. -(id) init{   
  2.     if( (self=[super init] )) {  
  3.    
  4.         CGSize winSize = [[CCDirector sharedDirector] winSize];   
  5.         CCSprite *player = [CCSprite spriteWithFile:@"Player.png"   
  6.         rect:CGRectMake(0, 0, 27, 40)];   
  7.         player.position = ccp(player.contentSize.width/2,   
  8.                                           winSize.height/2);   
  9.        [self addChild:player];   
  10.   
  11.   }   
  12.        return self;   
  13. }   

点击“选择”进入下个场景。输入MyFirstCocos2dProject作为项目名称,然后点击“保存”。随后,系统便会通过默认模板来创建Cocos2d项目。这篇文章中所述的是Cocos2d框架的0.99版本,默认搜索的是SDK 4.0。如果你安装过最新版的SDK,你会收到如图2中所示的“基础SDK丢失”信息。

 

在这个代码中,我们使用runAction方法来在笑脸界面上执行CCMoveTo动作。CCMoveTo动作方法使用actionWithDuration和位置参数。actionWithDuration是完成动作所需要的时间。位置参数指的是界面的移动地点。如果你运行应用,你会发现笑脸从原位置移动到新位置上。

在init方法之前添加下面的方法:

 (id) scene  {  // ‘scene’ is an autorelease object.  CCScene *scene = [CCScene node];   // ‘layer’ is an autorelease object.  HelloWorld *layer = [HelloWorld node];   CCSprite *background = [CCSprite spriteWithFile:@"Background3.png"];   [layer addChild:background];   // add layer as a child to scene  [scene addChild: layer];   // return the scene  return scene;  } 

 

[director setDeviceOrientation:kCCDeviceOrientationPortrait]; 

Cpp代码  图片 26

触屏的使用

  1. if (sprite.tag == 1) {   
  2.           // target   
  3.           [_targets removeObject:sprite];   
  4.   
  5. } else  if (sprite.tag == 2) {   
  6.           // projectile   
  7.           [_projectiles removeObject:sprite];   
  8. }  

我们可以使用回收功能来不断重复动画,将界面移动到屏幕上的任意位置。这可以通过finishedAnimation功能实现,以下便是代码:

 
      现在,让我们创建一个新的场景,将作为我们的“你赢了”,或“你输”的指示。点击Classes文件夹,进入FileNew File,并选择Objective-C class,并确定了NSObject类被选中。单击Next,然后输入GameOverScene作为文件名,并确保“Also create GameOverScene.h”被选中。

图片 27

     这里边的新元素是添加动作。Cocos2D提供了很多非常方便内置的行动可以用来制作动画的行动,如移动,跳跃的行动,褪色的行动,动画动作及更多。在这里我们为目标使用了三项动作。

我们将使用ParticleExplode效果,这会在用户点击笑脸后创造出爆炸性的效果。以下代码显示如何为游戏添加特殊效果。我们在爆炸中使用相同的笑脸,这意味着一旦笑脸遭到点击,便会产生出更小的笑脸。

      Cocos2D是iPhone开发中一个非常有用的库,它可以让你在创建自己的iPhone游戏时节省很多的时间。它具有很多的功能,比如sprite(精灵)扶持,非常酷的图形效果,动画效果,物理库,音频引擎等等。

      在第一部分,我们选择一个触摸点来使用,先得到在当前视图中的位置,然后调用convertToGL来把坐标转化到当前的布局。这点很重要,因为我们现在是横向模式。

Cpp代码  图片 28

最后的润色

      我是一个Cocos2D开发的新手,尽管有很多有用的教程来介绍如何开始利用Cocos2D开发,但我不能找到一个教程是我期待的那样,它可以创建一个简 单但功能丰富的游戏,这个游戏具有动画,碰撞还有音频,不需要其它更多的高级功能。我最终自己完成了一个简单的例子,并且在我自己的经验下写了这篇教程以 便于它对于其它的新手会有用。

     最后我们这样来规定,即使只有一个目标过去了,你就输了。修改spriteMoveFinished方法,在removeChild:sprite:方法的后面的tag == 1条件里边添加下面的代码:

     你现在可以编译并运行这个工程,你的精灵应该会正确显示,但背景默认是黑色的。对这个作品来说,白色背景会更好。在Cocos2D中,把一个图层的的背景颜色更改成为一个自定义颜色的简单方法是利用CCColoredLayer这个类。来尝试一下吧。选中HelloWorldScene.h并且改变HelloWorld接口省明像下面的那样:

  1. #import "GameOverScene.h"  

Hello, Cocos2D

图片 29
碰撞检测

      我们最需要做的就是确定为运动时间。我们希望,子弹会于一个恒定的速率按照射击方向前进,所以我们再次做一些数学。我们可以找出利用勾股定理来算出移动的距离。记得在几何学里边,这是规则,指出了一个直角三角形的斜边长度等于两直角边的平方的和的开方。

Cpp代码  图片 30

     如果您一直关注我的blog series on audio programming for the iPhoneblog series on audio programming for the iPhone,关于iPhone的一系列音频编程博客,你会非常高兴地知道,对于Cocos2D开发者来说,在游戏中实现基本的声音效果是多么的简单。

    以上应该很清楚了。我们只是通过子弹和目标数组,按照它们的边界框创建相应的矩形,并使用CGRectIntersectsRect方法来检查交叉。

 

这一周接触到Cocos2D开发,在它的官网上看到Ray Wenderlic写的关于cocos2d开发的文章,感觉写的挺好,翻译了一下。
原文链接地址大家可以在上面看到作者的更多内容

 

本文由美洲杯在哪买球发布于计算机教程,转载请注明出处:iphone 游戏编程入门1

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。