(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2949字,纯文字阅读大概需要5分钟。
内容图文
![(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)](/upload/InfoBanner/zyjiaocheng/1084/d422ae7383eb4137ad345ec632cd79ab.jpg)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博文的地址在:
(NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示
本篇接着上篇介绍炸弹人游戏中的游戏主角的基本构成,游戏主角自然是我们的炸弹人了.
因为主角会在游戏场景中各个方向行走,所以我们需要先准备其对应的图片资源:
如各位所见除了普通的移动动作,我还选择了主角被人道毁灭和无敌状态的动作素材,这个在后面大家将会看到如何融入到游戏逻辑中去.另外为了方便,我使用TexturePacker将其统统打包到一张纹理中去以优化性能.
打开Xcode,建立一个新类BombManSprite.打开BombMaSprite.h头文件,替换为如下内容:
#import "CCSprite.h"
#import "Comm.h"
@class
MainScene;
//游戏主角炸弹人类
@interface
BombManSprite : CCSprite <RoleAcross>
@property (nonatomic,assign) BOOL isDead;
@property (nonatomic,assign) BOOL canAcrossBrick;
@property (nonatomic,assign) BOOL canAcrossBomb;
@property (nonatomic,assign) BOOL isHarmless;
@property (nonatomic,assign) CGFloat speedPerStep;
-(id)initWithMainScene:(MainScene*)mainScene;
-(void)moveTowardByAStar:(CGPoint)targetLocation; //A*算法移动至目标位置(非瓦块坐标)
-(void)fired; //燃烧自身动画
-(BOOL)isInvincible;
-(void)setIsInvincible:(BOOL)isInvincible;
-(void)runWinAnimation;
@end
其中五个属性分别为主角是否死亡,是否可以穿墙,是否可以穿炸弹,是否炸弹可以伤害主角,以及主角行走的速度.
几个实例方法的作用再分别解释如下:
//初始化主角
-(id)initWithMainScene:(MainScene*)mainScene;//A*算法移动至目标位置(非瓦块坐标)-(void)moveTowardByAStar:(CGPoint)targetLocation;//燃烧自身动画-(void)fired;
//是否处于无敌状态-(BOOL)isInvincible;
//设置无敌状态-(void)setIsInvincible:(BOOL)isInvincible;//运行游戏过关时的主角庆祝动作-(void)runWinAnimation;
接下来打开实现文件,我首先来实现主角初始化的方法:
-(id)initWithMainScene:(MainScene *)mainScene{
self = [super initWithImageNamed:@"bm_forward.png"];
if (self) {
_mainScene = mainScene;
_facingForwardAnimation = [CCAnimation animation:@"bm"middle:@"forward" frameCount:3];
_facingBackAnimation = [CCAnimation animation:@"bm"middle:@"back" frameCount:3];
_facingLeftAnimation = [CCAnimation animation:@"bm"middle:@"left" frameCount:3];
_facingRightAnimation = [CCAnimation animation:@"bm"middle:@"right" frameCount:3];
_firedAnimation = [CCAnimation animation:@"bm"middle:@"fired" frameCount:5];
_facingForwardRideAnimation = [CCAnimation animation:@"bm"middle:@"rideForward" frameCount:3];
_facingBackRideAnimation = [CCAnimation animation:@"bm"middle:@"rideBack" frameCount:3];
_facingLeftRideAnimation = [CCAnimation animation:@"bm"middle:@"rideLeft" frameCount:3];
_facingRightRideAnimation = [CCAnimation animation:@"bm"middle:@"rideRight" frameCount:3];
_happyAnimation = [CCAnimation animation:@"bm"middle:@"dead" frameCount:3];
_spOpenSteps = nil;
_spClosedSteps = nil;
_shortestPath = nil;
_currentStepAction = nil;
_pendingMove = nil;
_speedPerStep = 0.8;
_curDirection = RoleDirectionDown;
}
return self;
}
大家可以看到如上代码首先保存主场景的实例,便于以后调用主场景的方法.这里多说一句,主场景在这里起到一个枢纽的作用,所有相关的类都可以借助主场景的帮助放来来完成指定的功能.另外还有一种方法是将所有帮助方法放到一个单例类中,调用的时候取得单例类的实例,然后调用即可.
接下来一次预先创建主角各种行为的动画,后面是初始化一些A*算法需要的变量和主角自身的实例变量,比如行走的速度等.
原文:http://blog.csdn.net/mydo/article/details/50617099
内容总结
以上是互联网集市为您收集整理的(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)全部内容,希望文章能够帮你解决(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。