COCOS2D(1) 入门

第一步:安装cocos2d

从http://www.cocos2d-iphone.org/download下载cocos2d模板,建议下在稳定的版本。打开终端,切换到cocos2d的解压目录,执行命令:  ./install-templates.sh,安装完成,打开xcode4.4,如下图:

cocos2d-iphone 安装成功。

第二步:创建cocos2d应用程序

选择cocos2d ios模板,应用名称输入HelloWord,完成创建。打开应用,如下图:

文件目录如下(注:xcode版本:4.4.1)

第三步:添加精灵

本篇的所有编码都将在HelloWorldLayer.m文件例完成。

总共添加两个精灵,我们需添加一个额外的图片,用作一个sprite。另外一个使用以包含在项目里的icon.png。

定义变量:

 1 #import "HelloWorldLayer.h"
 2 #import "CCTouchDispatcher.h"
 3 
 4 // Needed to obtain the Navigation Controller
 5 #import "AppDelegate.h"
 6 
 7 #pragma mark - HelloWorldLayer
 8 
 9 CCSprite *seeker1;
10 CCSprite *cocosGuy;
11 
12 // HelloWorldLayer implementation
13 @implementation HelloWorldLayer

 

代码如下

 1 // on "init" you need to initialize your instance
 2 -(id) init
 3 {
 4     // always call "super" init
 5     // Apple recommends to re-assign "self" with the "super's" return value
 6     if( (self=[super init]) ) {
 7         
 8         // create adn initealize our seeker sprite,and add it to this layer
 9         seeker1 = [CCSprite spriteWithFile:@"seeker.png"];
10         seeker1.position = ccp(50, 100);
11         [self addChild:seeker1];
12         [self schedule:@selector(nextFrame:)];
13         
14         //do the same our cocos2d guy, reusing the app icon as its imange
15         cocosGuy = [CCSprite spriteWithFile:@"Icon.png"];
16         cocosGuy.position = ccp(200, 180);
17         [self addChild:cocosGuy];
18         
19         self.isTouchEnabled = YES;
20 
21     }
22     return self;
23 }

保存运行:

每三行增加一个精灵,使用“ccp”(cocos2d的点)宏来创建一个二维的X和Y坐标点(CGPoint结构),请注意,在cocos2d,X坐标从在屏幕的左侧并向右增加,Y坐标开始,在屏幕的底部和增加向上。

最后,每个精灵的第三行调用“addChild”添加新创建的精灵的层。

移动精灵:有两种方法

1.使用一个行为告诉精灵超过一定时间自动移动到目标位置。

2.在游戏的运行过程中调用方法让精灵自己移动。

在这个例子中,我们采取第二种方法安排一个周期性的回调让“seeker1”sprite移动,代码为:[self schedule:@selector(nextFrame:)];

并添加方法:

1 - (void)nextFrame:(ccTime)dt{
2     seeker1.position = ccp(seeker1.position.x + 100*dt, seeker1.position.y);
3     if (seeker1.position.x > 480 + 32) {
4         seeker1.position = ccp(-32, seeker1.position.y);
5     }
6 }

 这项工作的效应是,在每一帧的动画,cocos2d的库将调用你的“nextFrame”事件,并经过从上一帧到这一帧的时间(以秒为单位)。这是你做各种事的机会:移动精灵的周围,检查碰撞,更新物理模型,产生新的敌人,删除不再需要的精灵等。

精灵的递增位置:X,100*DT 意味着,在一秒钟内,精灵将移动100个像素,然后我们检查看sprite是否已经离开屏幕。我们在此假设在横向模式下,这是480像素宽,使你的代码更通用的,你需要回调[CCDirector sharedDirector] winSize]得到屏幕的实际大小。但现在480就行,我们加32,因为这是这个精灵的宽度的一半 - 这样的中心是超越480 +32时,整个精灵的右侧消失在屏幕上。当这种情况发生时,我们重设x位置为-32,从而将其置于完全消失于屏幕的左侧。

第四步:响应触摸

响应触摸是有点不同的调度回调的处理事件。事件包括像触摸屏和加速度计的读数。已经有具体定义的方法为这些-在触摸事件的情况下,有两种不同的方法:“standard”或“targeted”。请参阅Touch Delegates进行更深层次的讨论。

添加头文件:#import "CCTouchDispatcher.h"

我们需要告诉CClayer我们要的是触摸事件的“targeted”而不是“standard”,代码如下:

-(void) registerWithTouchDispatcher
{
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}

在XCODE4.4.1中会提示sharedDispatcher方法被舍弃,具体情况以后讨论。

在init方法中添加:self.isTouchEnabled = YES 注册触摸事件。

由于我们使用的是触摸事件的“targeted”,所以必须至少实现ccTouchBegin方法,返回YES告诉touch dispather 你要求的这个触摸,添加代码:

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
    
    return YES;
}

这次触摸也会导致另一个触摸方法被回调,我们在下面这个方法里编写代码让第二个精灵移动到触摸结束的地方:

- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
    
    CGPoint location = [self convertTouchToNodeSpace:touch];
    
    [cocosGuy stopAllActions];
    [cocosGuy runAction:[CCMoveTo actionWithDuration:1 position:location]];
}

convertTouchToNodeSpace 做了一下几件事情:

1. 得到在这个视图上触摸的位置location

2.它要求CCDirector将其转换为GL坐标,也就是我们使用同一坐标系画图。(例如,纵向和横向坐标的转换)

3.最后它将这些GL坐标转换到节点空间,这样做是为了CCLayer,使它没有区别。

后边的代码的目的是停止精灵当前的活动,进行下面的动作。

 

运行代码,将会看到,seeker1匀速往右运动,点击屏幕cocosGuy移动到点击的地方。

 

这次就写到这吧,有什么不对的地方,还希望阅者指正!

参考网址:http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_2._your_first_game

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
(译)cocos2d里面如何用texture picker和像素格式来优化spritesheet.pdf (译)在cocos2d里如何制作各种按钮.pdf (译)如何使用cocos2d制作基于tilemap的游戏教程 第一部分.pdf (译)如何在cocos2d里面使用动画和spritesheet.pdf (译)如何用cocos2d制作iphone游戏:旋转炮塔.pdf (译)如何用cocos2d制作iphone游戏:更猛的怪物和更多得管卡.pdf (译)如何使用cocos2d制作一个Slide Image Game:第一部分.pdf (译)如何使用cocos2d来制作一个塔防游戏:第一部分.pdf cocos2d 2.0 添加遮罩.pdf iOS Code Signing解惑.pdf iPhone上面的现实增强(Augmented Reality)入门教程.pdf OpenGL ES2.0 – Iphone开发指引.pdf OpenGLES2.0 Iphone开发指引:第二部分,纹理贴图.pdf 使用cocos2d和box2d制作滚动背景.pdf 加入敌人和战斗:如果使用cocos2d制作基于tiled地图的游戏:第三部分.pdf 在cocos2d里面如何使用物理引擎box2d:弹球.pdf 在cocos2d里面如何拖拽精灵.pdf 如何使用box2d来做碰撞检测(且仅用来做碰撞检测).pdf 如何使用CCRenderTexture来创建动态纹理.pdf 如何使用cocos2d1.0来给sprite添加Mask(遮罩).pdf 如何使用cocos2d制作一个塔防游戏:引子.pdf 如何使用cocos2d制作一个太空射击游戏.pdf 如何使用cocos2d制作一个打地鼠的游戏:(第二部分。完).pdf 如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分.pdf 如何使用cocos2d和box2d来制作一个Breakout游戏:第二部分(完).pdf 如何使用cocos2d来制作一个打地鼠的游戏:第一部分.pdf 如何使用GameCenter制作一个简单的多人游戏教程:第一部分.pdf 如何使用GameCenter制作一个简单的多人游戏教程:第二部分.pdf 如何使用NSCoding和NSFileManager来保存你的应用程序数据.pdf 如何制作一个类似tiny wings的游戏:第一部分.pdf 如何制作一个类似tiny wings的游戏:第二部分(完).pdf 如何升级你的cocos2d版本.pdf 如何学好Iphone开发.pdf 如何查找资料.pdf 碰撞检测和收集物品:如何使用cocos2d制作基于tiled地图的游戏:第二部分.pdf (译)cocos2d精灵教程:第一部分.pdf (译)cocos2d精灵教程:第三部分.pdf (译)cocos2d精灵教程:第二部分.pdf (译)cocos2d菜单教程:第一部分.pdf (译)cocos2d菜单教程:第三部分(完).pdf (译)cocos2d菜单教程:第二部分.pdf (译)使用cocos2d和box2d来制作一个platformer游戏.pdf (译)如何使用cocos2d制作一个塔防游戏:第三部分.pdf (译)如何使用cocos2d制作一个塔防游戏:第二部分.pdf (译)如何使用cocos2d制作一个塔防游戏:第四部分(完).pdf (译)如何使用cocos2d制作一个滑动图片游戏教程:第二部分(完).pdf (译)如何用cocos2d制作一款简单的iphone游戏(第一部分).pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值