(NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)

news/2024/4/20 19:28:13/

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


上一篇我们完成了导弹道具相关的道具制作,本篇中我们来完成其实现代码

首先我们在Star.m的spawnStar方法中添加如下代码:

case brkColorPoolBlue:star = [Star starWithType:starTypeStickShoot];break;

接着打开GameScene.m文件,在星星和反弹棒的碰撞处理方法中添加如下处理分支:

case starTypeStickShoot:@synchronized(self){[Star doStickShootWork];}break;

现在重新回到Star.m中,添加doStickShootWork方法:

+(void)doStickShootWork{GameScene *gameScene = [GameScene sharedGameScene];if (gameScene.isStickShooting) {return;}gameScene.isStickShooting = YES;[gameScene scheduleBlock:^(CCTimer *timer){@synchronized(gameScene){gameScene.isStickShooting = NO;}} delay:10];
}

该方法很简单,首先如果反弹棒已处在射击状态则直接返回.否则将反弹棒设置为射击状态,然后在10秒后取消射击状态.

再次回到GameScene.m中,添加设置射击状态的方法:

-(void)setIsStickShooting:(BOOL)isStickShooting{_isStickShooting = isStickShooting;if (_gunTop) {_gunTop.visible = _isStickShooting;}
}

在初始化方法的最下面中添加如下一行:

    [self schedule:@selector(autoShoot) interval:1];

游戏逻辑每隔1秒钟调用一次autoShoot方法来实现自动射击,那么该方法做了什么事呢?我们来看一下:

-(void)autoShoot{@synchronized(self){if (self.isStickShooting && _gunTop && _gunTop.visible) {[Star shoot:_gunTop.position];}}
}

貌似很简单,方法首先判断当前反弹棒是否处在射击状态,并且设计炮管已初始化且可见.如果这些条件都满足则调用Star类中的shoot方法,并向方法传递了当前炮管位置的坐标.

导弹是可以摧毁砖块的,所以还要实现一个碰撞处理方法:

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair bullet:(CCNode *)bulletbrick:(CCNode *)brick{@synchronized(self){        CCSprite *bulletSp = (CCSprite*)bullet;[bullet removeFromParent];[_userInterface updateHitsLabel:[NSString stringWithFormat:@"Hits:%d",++_hits]];_score += ((Brick*)brick).value * _scoreRatio;if (_scoreRatio > 1) {[self updateMsgLabel:[NSString stringWithFormat:@"Score X %d",_scoreRatio]];}[_userInterface updateScoreLabel:[NSString stringWithFormat:@"得分:%d",_score]];[Star spawnStar:(Brick*)brick];[brick removeFromParent];[_level removeFromBricks:brick];}return YES;
}

代码很简单,大家可以自行理解.

最后我们就来实现Star的+shoot方法:

+(void)shoot:(CGPoint)startPos{GameScene *gameScene = [GameScene sharedGameScene];CCPhysicsNode *physWorld = gameScene.physicsWorld;@synchronized(gameScene){CGSize viewSize = [CCDirector sharedDirector].viewSize;CCSprite *bullet = (CCSprite*)[CCBReader load:@"Elements/Bullet"];bullet.position = startPos;[physWorld addChild:bullet];CCActionMoveTo *move = [CCActionMoveTo actionWithDuration:2 position:ccp(bullet.position.x,viewSize.height)];CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{[bullet removeFromParent];}];CCActionSequence *seq = [CCActionSequence actions:move,blk,nil];[bullet runAction:seq];}
}

方法主要逻辑如下:

  • 取得游戏场景对象中的物理世界对象
  • 初始化导弹动画精灵对象
  • 在导弹对象上运行向前飞行的动作,直到屏幕最上端
  • 在到达屏幕最上端后,将导弹对象删除

编译运行游戏,可以看到效果如下:

这里写图片描述

当然球掉落之后,应该游戏结束了,导弹不用再发射了,在实际游戏中这是一个需要修改的地方.

好了,我们在本系列打砖块游戏中实现了不少东西,其实限于时间原因很多地方都没有扩展和完善.毕竟一个真实的游戏想要吸引玩家的眼球和手指还有很多部分需要修改.

但让我们暂时在这里打住,向下一个游戏目标前进吧.

下一系列<<愤怒的炸弹>>的博文中再见吧 ;)

(本系列完)


http://www.ppmy.cn/news/275877.html

相关文章

Android 游戏引擎libgdx之Box2D 案例实践——打砖块(一)

参考子龙山人系列博客&#xff1a;http://www.cnblogs.com/zilongshanren/tag/cocos2d/ 此作者都是基于IOS的cocos2D开发&#xff0c;本人参考并且转化为libgdx的cocos2d使用。 libgdx目前还主要用于Android开发&#xff0c;想学IOS的亲&#xff0c;请看上述作者的博客。 欢迎转…

原生js做h5小游戏之打砖块

前言 首先&#xff0c;先说明一下做这个系列的目的&#xff1a;其实主要源于博主希望熟练使用 canvas 的相关 api &#xff0c;同时对小游戏的实现逻辑比较感兴趣&#xff0c;所以希望通过这一系列的小游戏来提升自身编程能力&#xff1b;关于 es6 语法&#xff0c;个人认为以后…

原生JS实现打砖块,贪吃蛇,弹球小游戏

来来来&#xff0c;先上效果图 赶快学习起来吧 话不多说&#xff0c;放代码 1. <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-…

TensorFlow2-生成对抗网络

What i can not create, i do not understand. 我不能创造的东西&#xff0c;我当然不能理解它。 简介 对抗生成网络&#xff08;GAN&#xff09;是时下非常热门的一种神经网络&#xff0c;它主要用于复现数据的分布&#xff08;distribution&#xff0c;或者数据的表示&#…

打砖块小游戏php程序,利用原生js实现html5打砖块小游戏(代码示例)

本篇文章给大家通过代码示例介绍一下利用原生js实现html5打砖块小游戏的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。 前言 PS&#xff1a;本次项目中使用了大量 es6 语法&#xff0c;故对于 es6 语法不太熟悉的小伙伴最好能先…

Simulink尝试双脉冲实验验证MOSFET二极管反向恢复实验的特性(附仿真模型)

目录 前言 双脉冲实验 Simulink仿真对比 总结 前言 最近在做交错串联的图腾柱单相PFC的项目&#xff0c;基于模型的开发&#xff0c;想要在仿真上实现过零点尖峰电流产生并通过软启动进行抑制&#xff0c;把整个过程都通过仿真实现出来&#xff0c;在这个过程中尝试了Simul…

原生js做h5小游戏之打砖块

前言 首先&#xff0c;先说明一下做这个系列的目的&#xff1a;其实主要源于博主希望熟练使用 canvas 的相关 api &#xff0c;同时对小游戏的实现逻辑比较感兴趣&#xff0c;所以希望通过这一系列的小游戏来提升自身编程能力&#xff1b;关于 es6 语法&#xff0c;个人认为以…

Box2D例子——打砖块

一个永远反弹的球 这次我们以一个打砖块小游戏展开学习。首先&#xff0c;在上篇的基础上我们做出调整。 world new World(new Vector2(0, 0f), true); 我们把重力设置为0&#xff0c;因为该游戏中并不需要重力。 EdgeShape edge new EdgeShape();FixtureDef boxShapeDef ne…

openCV(三)绘制几何图形

openCV内置了几何图形绘制函数&#xff0c;通过简单的操作就可以绘制几何图形。例如&#xff0c;可以绘制直线、矩形、圆形、椭圆、多边形、文字等&#xff0c;分别对应函数cv2.line()、cv2.rectangle()、cv2.circle()、cv2.ellipse()、cv2.polylines()、cv2.putText()。 下面来…

html 原生js手写树 仿照antd 样式

效果如图 <!doctype html> <html><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

手机配电脑 玩转体感游戏

大家都听说过体感游戏&#xff0c;体感游戏突破以往以手柄按键控制的操作方式&#xff0c;是一种通过肢体动作变化来进行的新型电子游戏。任天堂公司推出的WIFI凭借其新颖的操作方式和任天堂游戏固有的吸引力深受人们喜爱。什么 家里没有wii体感游戏机但也想体验体感游戏的乐趣…

计算机 玩体感游戏,电脑也能玩体感游戏了 微软推出Windows版Kinect

【52PK 6月6日消息】微软将向Windows开发者发售Kinect体感设备&#xff0c;以帮助其开发新应用&#xff0c;而面向普通消费者的正式版也会在今年晚些时候公开发售。如今Kinect已经在官网开始预售&#xff0c;价格为199美元&#xff0c;开发者订购后在7月就可以收到新的Kinect设…

aiwi体感游戏,感受聊斋风情

aiwi聊斋》是2011年腾讯自主研发的首款大型多人在线手机客户端即时战斗网游。恢宏大气的玄幻背景贯穿为人熟知的聊斋故事&#xff0c;构建出一个人、鬼、妖共处的神话世界&#xff01;梦幻瑰丽的地图场景、精巧细致的角色怪物、丰富多彩的游戏内容、流畅稳定的后台支持&#xf…

android体感软件,基于Android系统的体感运动游戏平台

摘要&#xff1a; 体感运动游戏的概念特指用身体去感受和互动的游戏,不同于使用游戏摇杆,键盘,鼠标来控制游戏,引入多种传感设备来代替传统的手柄或键盘操作.体感运动游戏采用识别人体动作的输入方式.比如在网球游戏中,手中的手柄好像网球拍一样,玩家可以做出任意动作;在跑步游…

AR体感游戏,体感互动游戏,AR大屏互动

体感游戏&#xff0c;用身体去感受的电子游戏。突破以往单纯以手柄按键输入的操作方式&#xff0c;体感游戏是一种通过肢体动作变化来进行&#xff08;操作&#xff09;的新型电子游戏。 通过互联网运营平台&#xff0c;进行人机互动&#xff0c;在线玩家在线互动、竞技运动&a…

android体感游戏主机,体感手势引擎+智能电视机顶盒+3D深度摄像头,速盟打造基于Android的体感游戏平台#36氪开放日#...

相信36氪的读者对Kinect 一定有所了解。这是由微软开发&#xff0c;应用于 Xbox 360 主机的一种3D体感摄影机&#xff0c;利用即时动态捕捉、影像辨识、麦克风输入、语音辨识等功能带给玩家“免控制器的游戏与娱乐体验”&#xff0c;通过自己的肢体控制游戏&#xff0c;并且实现…

[体感游戏]关于体感游戏的一些思考(三) --- 射击

终于来了...大家一直在期待的部分 --- 射击&#xff01; 出于某种原因&#xff0c;人们总是被射击弹丸的能力&#xff0c;而引入暴力&#xff0c;则是爆炸的能力所吸引。抛开那些蹩脚的哲学&#xff0c;射击是hard core游戏体验必不可少的&#xff0c;所以让我们加以探索。 正如…

LeapMotion联动Unity实现体感识别

首先安装前置 在这个网址&#xff1a;https://developer.leapmotion.com/ &#xff08;直连会比较慢&#xff09;下载unity 插件 Ultraleap for Developers 这里下载驱动程序 安装完驱动程序后在右下角出现的新图标中打开这个驱动&#xff0c;摄像头已经能识别到骨骼&#xf…

移动体感游戏:站在游戏与硬件产业共享的未来上

作者&#xff1a;我堂堂一个熊猫 来源&#xff1a;脑极体&#xff08;ID&#xff1a;unity007&#xff09; 任天堂不允许玩家们继续做肥宅这件事&#xff0c;还有谁不知道吗&#xff1f; 最近新发布在Switch平台上的体感游戏《健身环大作战》凭借着“硬核健身”的标签吸引了大…

大学生角度_LeapMotion结合Unity开发体感游戏_02

2018/09/11 距离上一篇博客已经过去快两个月了&#xff0c;目前我的游戏已经基本上是算粗糙地开发完了&#xff0c;过了ican的校赛&#xff0c;正在准备市赛。 现在我接着上一篇继续往下写~ 手势识别 如果按照上一篇的步骤安装好leap motion&#xff0c;就能够实现在空白的游…