供配电工程 蓝天大厦飞弹配什么角色

03年玩了一块电脑的小游戏。横版,飞行躲避一些飞弹障碍,角色是一男一女,都骑着扫把。_百度知道
03年玩了一块电脑的小游戏。横版,飞行躲避一些飞弹障碍,角色是一男一女,都骑着扫把。
,日文的。,求名称及下载音乐很欢快
飞出的子弹里有个带翅膀的蛋,这是重点
提问者采纳
楼主可以从这里下载!.com/share/link!
其他类似问题
为您推荐:
其他8条回答
房东图2代说PRE2这场比赛称为Prehistorik 记得在DOS玩过的。 。
骑扫把的飞行射击游戏是《棉花小魔女》。横版可以双人玩的有街机版两个:Magical Night Dreams: Cotton 2;Magical Night Dreams: Cotton Boomerang。使用MAME模拟器,可以到:国治模拟精品屋(emu618)》街机游戏》MAME》射击游戏》飞行射击类搜索下载。有带翅膀的蛋
是不是男女角色可选男角色间断按空格是带翅膀鸡蛋
长按是火一样的东西女角色间断按空格是蓝色方块
长按绿色闪电
对的对的!!就是这个!游戏叫神马名字?还有下载地址吗?
我也在找这个,我记得背景是白天,不是棉花小魔女
不知你找到没有?
消防战士一样
哈利波特之男欢女爱。
你找到了吗我也在找
还没有、、、很怀念的PC小游戏
火箭飞人?
一男一女的相关知识
下载知道APP
随时随地咨询
出门在外也不愁Cocos2D开发教程:Caterpillar游戏的移动和飞弹
发表于 20:23|
作者杨鹏飞
摘要:Tut7做了一个 利用Cocos2D引擎来制作毛虫游戏的系列教程 ,并提供了详细的代码。我们节选了 其中关于移动和导弹的教程 ,希望能够为开发者带来帮助。Cocos2D是一个开源2D游戏框架,分别有Python版本和Objective-C版本。其衍生出一个跨平台版本叫做Cocos2D-x。如果你也在用Cocos2D-x开发的话,也可以到CSDN发起的跨...
Tut7做了一利用Cocos2D引擎来制作毛虫游戏的个,并提供了详细的代码。我们节选了其中,希望能够为开发者带来帮助。Cocos2D是一个开源2D游戏框架,分别有Python版本和Objective-C版本。其衍生出一个跨平台版本叫做Cocos2D-x。如果你也在用Cocos2D-x开发的话,也可以到CSDN发起的中,投上一票,或者吐上一槽。
第一步:操控游戏角色
加入以下代码到GameLayer.m的init方法里:&
[[CCTouchDispatcher&sharedDispatcher]&addTargetedDelegate:self&priority:0&swallowsTouches:YES];&
这行代码允许GmaiLayer陈为一个触控代理去接受触控通知。现在,我们家两个方法进去:
//&1&-&(BOOL)ccTouchBegan:(UITouch&*)touch&withEvent:(UIEvent&*)event&{&&&&&return&YES;&}&&//&2&-&(void)ccTouchMoved:(UITouch&*)touch&withEvent:(UIEvent&*)event&{&&&&&//&3&&&&&CGPoint&touchLocation&=&[self&convertTouchToNodeSpace:touch];&&&&&&CGPoint&oldTouchLocation&=&[touch&previousLocationInView:touch.view];&&&&&oldTouchLocation&=&[[CCDirector&sharedDirector]&convertToGL:oldTouchLocation];&&&&&oldTouchLocation&=&[self&convertToNodeSpace:oldTouchLocation];&&&&&&//&4&&&&&int&xChange&=&touchLocation.x&-&oldTouchLocation.x;&&&&&int&yChange&=&touchLocation.y&-&oldTouchLocation.y;&&&&&&int&newX&=&self.player.position.x&+&xC&&&&&int&newY&=&self.player.position.y&+&yC&&&&&&//&5&&&&&?f(newX&&&+&kGameAreaWidth&-&kGridCellSize&&&&&&&&&&&newX&&kGameAreaStartX&&&&&&&&&&&newY&&kGameAreaStartY&+&kGridCellSize&/&2&&&&&&&&&&&newY&&&+&(kGridCellSize&*&3))&{&&&&&&&&&&__block&BOOL&collide&=&NO;&&&&&&&&&CGPoint&oldPosition&=&self.player.&&&&&&&&&//&6&&&&&&&&&self.player.position&=&ccp(newX,newY);&&&&&&&&&&//&7&&&&&&&&&[self.sprouts&enumerateObjectsUsingBlock:^(id&obj,&NSUInteger&idx,&BOOL&*?t&р)&{&&&&&&&&&&&&&Sprout&*sprout&=&(Sprout&*)&&&&&&&&&&&&&CGRect&sproutRect&=&[sprout&getBounds];&&&&&&&&&&&&&CGRect&playerRect&=&[self.player&getBounds];&&&&&&&&&&&&&&?f(CGRectIntersectsRect(sproutRect,&playerRect))&{&&&&&&&&&&&&&&&&&collide&=&YES;&&&&&&&&&&&&&&&&&*?t&р&=&YES;&&&&&&&&&&&&&}&&&&&&&&&&}];&&&&&&&&&&//&8&&&&&&&&&?f(collide)&{&&&&&&&&&&&&&self.player.position&=&oldPosition;&&&&&&&&&}&&&&&}&}&
让我们对这些代码做一些注释:
1.首先我们需要实现ccTouchesBegan方法,使得调用器知道我们正在响应触控操作。一旦遗漏程序就会崩溃。
2.接下来,用户手指在屏幕上滑动时候调用ccTouchesMoved方法方法。
3.获取当前触摸位置的坐标引用,和之前的坐标。
4.获取新旧位置的变化,用来定义下一步游戏角色应该怎走多远。
5.至此我们得到了一串方格来确保角色不会约出边界。
6.更新角色的位置。
检查是否角色会碰上障碍。我们需要严格限定角色的走位。
最后,如果有碰撞,则回到上一个比较安全的位置。
第二步:飞弹
为了让角色和其他目标进行互动,游戏角色会以一个恒定的速率发射当前级别的飞弹。我们得先需要几个常数,在GameConfig.h里加上以下代码:
#define&kMissileSpeed&1.0&#define&kMissileMaxSpeed&10.0&#define&kMissilesTotal&20&#define&kMissileFrequency&.6&//seconds&#define&kMinMissileFrequency&.2&
现在创建一个GameObject subclass,命名为Missile,然后把以下代码加到Missile.h里:
#import&&cocos2d.h&&#import&&GameObject.h&&&@interface&Missile&:&GameObject&@property&(nonatomic,&assign)&BOOL&&-&(void)update:(ccTime)&@end&
其中dirty属性会在将来代表飞散无法使用。可能由于游戏角色越出边界或者和其他游戏物体碰撞。因为飞弹永久失效,需要一阿update方法来做出一个动画效果。
现在往Missile.m里面加入以下代码:
#import&&Missile.h&&#import&&GameLayer.h&&#import&&GameConfig.h&&&@implementation&Missile&&@synthesize&dirty&=&_&&&-&(id)initWithGameLayer:(GameLayer&*)layer&{&&&&&&if(self&==&[super&initWithGameLayer:layer])&{&&&&&&&&&self.sprite&=&[CCSprite&spriteWithSpriteFrameName:@&missile.png&];&&&&&}&&&&&&return&&}&&-&(void)update:(ccTime)dt&{&&&&&&&&&&int&inc&=&kMissileSpeed&*&(self.gameLayer.level&+&1.5);&&&&&&&&&&&if(inc&&&kMissileMaxSpeed)&{&&&&&&&&&inc&=&kMissileMaxS&&&&&}&&&&&&&&&&&int&y&=&self.position.y&+&&&&&&self.position&=&ccp(self.position.x,y);&&&&&&&&&&&if(self.position.y&&&kGameAreaStartY&+&kGameAreaHeight)&{&&&&&&&&&self.dirty&=&YES;&&&&&}&}&&@end&
1.这里的init方法和之相似,之负责创建飞弹。
2.飞弹的移动速度。会根据当前级别进行加速。
3.有时候飞弹的速度会失控,我们需要限制一个最大速度。
4.这两行代码实际上是让飞弹超前运动,我们计算一个新飞弹的y值,同时更新位置。
5.最后,如果飞弹碰撞到顶部边框(没有碰到障碍物),就设置成_dirty属性为真。我们会在GmaeLayer里使用垃圾回收机制将这些dirty的飞弹回收掉。
第三步:开火
通常当你有一大票的对象,比如飞弹这种,你绝对不想每次都重新分配。因此我们需要创建两个数组,一个用来hold住所有发出的飞弹(in play),另一个hold住还未发出的飞弹(pool)。最后我们把所有dirty属性的飞弹都放到pool数组里面。
将以下属性添加到GameLayer.h:
@property&(nonatomic,&retain)&NSMutableArray&*missilesW&@property&(nonatomic,&retain)&NSMutableArray&*missilesF&&然后在GameLayer.m中import&Missile.h,在init方法中加入以下代码:&&&_missilesWaiting&=&[[NSMutableArray&alloc]&initWithCapacity:kMissilesTotal];&_missilesFiring&=&[[NSMutableArray&alloc]&initWithCapacity:kMissilesTotal];&&for(int&x&=&0;&x&&&kMissilesT&x++)&{&&&&&Missile&*missile&=&[[Missile&alloc]&initWithGameLayer:self];&&&&&[self.missilesWaiting&addObject:missile];&&&&&[missile&release];&}&
初始化每个飞弹数组。
循环kMissilesTotal几次,创建足够多的飞弹。然后将它们添加到missilesWaiting数组。
然后跳转到update方法,添加以下代码:
&static&float&missleFireCount&=&0;&&-&(void)update:(ccTime)dt&{&&&&&&&&&&&&&&&&&float&frequency&=&kMinMissileF&&&&&if(kMissileFrequency&/&(self.level&*&1.25)&&&kMinMissileFrequency)&{&&&&&&&&&frequency&=&kMissileFrequency&/&self.&&&&&}&&&&&&&&&&&if(missleFireCount&&&frequency)&{&&&&&&&&&missleFireCount&+=&&&&&&}&else&{&&&&&&&&&missleFireCount&=&0;&&&&&&&&&&&&&&&&&&if([self.missilesWaiting&count]&&&0)&{&&&&&&&&&&&&&Missile&*missile&=&[self.missilesWaiting&objectAtIndex:0];&&&&&&&&&&&&&[self.missilesFiring&addObject:missile];&&&&&&&&&&&&&[self.missilesWaiting&removeObjectAtIndex:0];&&&&&&&&&&&&&missile.position&=&self.player.&&&&&&&&&&&&&[self.spritesBatchNode&addChild:missile.sprite];&&&&&&&&&&}&&&&&}&&&&&&&&&&&__block&Missile&*dirty&=&&&&&&[self.missilesFiring&enumerateObjectsUsingBlock:^(id&obj,&NSUInteger&idx,&BOOL&*stop)&{&&&&&&&&&Missile&*missile&=&(Missile&*)&&&&&&&&&[missile&update:dt];&&&&&&&&&if(missile.dirty)&{&&&&&&&&&&&&&dirty&=&&&&&&&&&&&&&&*stop&=&YES;&&&&&&&&&}&&&&&}];&&&&&&&&&&&if(dirty)&{&&&&&&&&&dirty.dirty&=&NO;&&&&&&&&&[self.missilesWaiting&addObject:dirty];&&&&&&&&&[self.missilesFiring&removeObject:dirty];&&&&&&&&&[self.spritesBatchNode&removeChild:dirty.sprite&cleanup:NO];&&&&&}&}&
1.我们需要创建一个静态计数器。
2.计算飞弹开火频率,不同级别有不同的开火频率。
3.如果频率更快,或者达到的级别,就释放一种新的飞弹。
4.把一个飞弹拉出pool的数组,把它加到正在开火的数组中。
5.枚举所有的飞弹,检查是否有dirty属性的飞弹。一旦发现,标记它以便移回pool的数组里。
6.如果有dirty属性的飞弹,从pool数组里移动到正在开火的数组同时从batch node中移除sprite(精灵)&
最后实现的效果。
推荐阅读相关主题:
网友评论有(0)
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 供配电工程 蓝天大厦 的文章

 

随机推荐