(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)
2023-09-14 08:56:50 时间
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
(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];大家可以看到如上代码首先保存主场景的实例,便于以后调用主场景的方法.这里多说一句,主场景在这里起到一个枢纽的作用,所有相关的类都可以借助主场景的帮助放来来完成指定的功能.另外还有一种方法是将所有帮助方法放到一个单例类中,调用的时候取得单例类的实例,然后调用即可.
接下来一次预先创建主角各种行为的动画,后面是初始化一些A*算法需要的变量和主角自身的实例变量,比如行走的速度等.
和iPhone玩家对战吧,Google Play游戏服务将支持iOS平台 Google今天在游戏开发者大会上宣布了若干与Google Play游戏服务的相关更新,其中和游戏玩家关系最大的也许就是Google Play Game Services将支持iOS平台,这也就意味着回合制和实时多人游戏将同时支持Android和iOS,以后这两个平台的玩家也就可以互动了。显然,这对于游戏开放商也是个好消息——让原本被割裂的用户参与到同场竞技中来。
本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例...
相关文章
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
- (NO.00005)iOS实现炸弹人游戏(九):游戏主角(二)
- (NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十六)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(八)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(七)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
- (NO.00002)iOS游戏精灵战争雏形(十一)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十一)
- Xcode中iOS模拟器程序中的plist路径
- 如何做好IOS View的布局
- IOS谓词--NSPredicate
- 【IOS-COCOS2D游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)
- 【IOS-COCOS2D游戏开发之十三】CCSPRITE利用BEZIER(贝塞尔)做抛物线动作并让CCSPRITE同时播放两个ACTION动作!
- 【IOS-COCOS2D游戏开发之十七】灵活使用精灵可视区域(TEXTURERECT)与锚点(ANCHORPOINT),并结合可视区域与锚点制作进度条!
- 【IOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GAMECENTER 指南(实现仿官方的成就提示框)、游戏接入OPENFEINT指南;
- 【IOS-COCOS2D-X 游戏开发之十一】NEW CCSPRITE()带来的错误&使用CCUSERDEFAULT及PVR.CCZ在COCOS2DX中要注意!
- iOS中 蓝牙2.0详解/ios蓝牙设备详解
- IOS SEL的理解与使用
- 《iPhone与iPad开发实战—iOS经典应用剖析》连载二
- [转]IOS下如何判断机器是否越狱
- iOS原生(swift5)和web(js javascript)相互调用 WKWebView
- iOS 对称加密和非对称加密的具体实现
- iOS一个开发系列中 - UIButton 使用摘要
- ios-UI-汤姆猫德游戏实现
- ios ios7 取消控制拉升