(NO.00003)iOS游戏简单的机器人投射游戏成形记(十五)

在Xcode中打开Robot.h文件添加如下2个方法:

-(void)moveArm:(MoveDirection)direction;
-(void)armShoot;

在Robot.m中实现这2个方法:

-(void)armShoot{
    [_arm armShoot];
}

-(void)moveArm:(MoveDirection)direction{
    [_arm moveArm:direction];
}

由于玩家点击机器人时需要选中该机器人,所以要添加touchBegan方法:

-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
    self.isSelected = YES;

    LevelRestrict *lr = [LevelRestrict sharedInstance];
    lr.selectedRobot = self;

    [[MainScene sharedInstance] selectRobot:self];
    //将触碰事件向下层节点传递
    //[super touchBegan:touch withEvent:event];
}

现在在回到MainScene.m中添加selectRobot方法,其主要内容为选中一个机器人,必须反选其他机器人,任何时候只能有一个机器人被选中.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-20 14:01:08

(NO.00003)iOS游戏简单的机器人投射游戏成形记(十五)的相关文章

(NO.00003)iOS游戏简单的机器人投射游戏成形记(一)

这是一个简单的机器人投射游戏,主要来熟悉物理引擎的一些东西.你可以把它认为是机器人投篮;尽管投出的是抛物线,但不是篮球而是子弹,速度也较快. 游戏玩法是玩家选择机器人,移动机器人手臂瞄准篮框,然后发射子弹.如果子弹掉入篮框则得分.子弹耗完或时间耗完则游戏结束. 游戏中主要玩法的变化如下: 1.可以通过修改过关条件,比如限制子弹数量,限制剩余时间,要求必须达到一定分数等增加或降低难度. 2.可以通过Level场景的布局以及篮框的移动路线来增加难度,别忘了场景中机器人的位置也是可以变化的,而且谁说场

(NO.00003)iOS游戏简单的机器人投射游戏成形记(五)

上一篇我们建立了机器人物理对象,下面我们来看看对应的逻辑代码. 进入Xcode,新建Robot和Arm类,分别继承于CCNode和CCSprite类.代码全部留空,后面再实现. 我们再看一下这个机器人要如何与玩家交互.当玩家触碰到机器人手臂并且移动时,以关节为中心旋转手臂.因为前面在SpriteBuilder中限制了关节转动的范围,所以不用担心关节旋转到"奇怪"的角度上. 首先在Arm.m的初始化方法中打开用户交互: self.userInteractionEnabled = YES;

(NO.00003)iOS游戏简单的机器人投射游戏成形记(二)

打开Ai按需求依次绘制机器人身体,手臂和篮框: 因为是实验性质的游戏所以没必要在这上面花太多功夫,画出意思即可.虽然是2D游戏,但实际游戏中可以表现出伪3D的图形效果;尽管本猫这次画的游戏元素都是满满的2D效果 ;) 还要注意的是各个游戏元素大小的比例需要适中,因为机器人身体和手臂需要在游戏中组合,且手臂需要单独转动,所以分开绘制. 我们还需要子弹元素,就拿NO.00002游戏中的子弹素材吧: SpriteBuilder新建项目,命名为ShootBall. 将之前绘制的游戏素材拖入新建的Imag

(NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)

回到Xcode中,在MainScene.h接口中添加碰撞协议: @interface MainScene : CCNode <CCPhysicsCollisionDelegate> //... @end 然后在MainScene.m初始化方法中打开碰撞代理: _physicWorld = (CCPhysicsNode*)[self getChildByName:@"physicWorld" recursively:YES]; NSAssert(_physicWorld, @

(NO.00003)iOS游戏简单的机器人投射游戏成形记(十)

打开Arm.h,在其接口中添加一个新方法: -(void)armShoot; 接下来在Arm.m中实现该方法: -(void)armShoot{ CGPoint startPoint = [self convertToWorldSpace:ccp(0, 5)]; CGPoint endPoint = [self convertToWorldSpace:ccp(20, 5)]; [_mainScene shoot:startPoint to:endPoint]; } 该方法最终调用MainScen

(NO.00003)iOS游戏简单的机器人投射游戏成形记(十一)

机器人发射子弹已经完成了,下面看看怎么给玩家设置障碍. 大家从上篇的图可以看到,在机器和篮筐直接有若干障碍物.我们先看如何实现它们. 打开SpriteBuilder,在Sprites文件夹中新建SmallBrick.ccb,类型为Node. 从控件库拖入一个CCNodeColor节点,称为其根节点的子节点.按照喜好装饰外观,同时打开物理对象,物理类型为静态: 新建Levels文件夹,在其中建立Level.ccb文件,类型为Node.首先拖入一个物理节点到其根节点. 然后拖入2个机器人到屏幕左侧,

(NO.00003)iOS游戏简单的机器人投射游戏成形记(十二)

回到Xcode,新建Level1类,继承于CCNode. 打开Level1.m在初始化方法中添加如下方法: -(void)didLoadFromCCB{ [self initBasket]; [self initRestrict]; } 下面分别实现其中2个方法. 首先是initBasket: -(void)initBasket{ CCActionMoveBy *mov1 = [CCActionMoveBy actionWithDuration:5 position:ccp(0, -0.7)];

(NO.00003)iOS游戏简单的机器人投射游戏成形记(六)

为什么要将手臂移动的代码单独放在一个方法中? 其实这里是多次重构之后的版本.原来的移动代码是放在touchMoved方法里的.后来发现除了触摸手臂移动方式外,还要实现触摸屏幕移动手臂这第二种方式. 所以将其提取出来放在一个方法中,后面还会在Arm类的接口中做声明.现在我们暂且不管,单单看这个方法: -(void)moveArm:(MoveDirection)direction{ CCPhysicsBody *physicsBody = self.physicsBody; CGPoint velo

ActionScript3游戏中的图像编程(连载四十五)

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477 3.1.1 Flash简单滤镜的共性分析 在模拟Photoshop样式的过程中,我们发现两个毫不相干的滤镜居然会有很多参数出奇地一致.实际上,好多个简单滤镜都有重复,下面我把它们整理成表格供大家查看. 滤镜名称 模糊 强度 距离 颜色/渐变 品质 内外 挖空/隐藏 投影 √ √ √ √ √ √ √ 发光 √ √ √ √ √ 模糊 √ √ 斜角 √ √ √ √ √ √ √ 渐