Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(五)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
为了暂时不影响原来的cat移动方法,我们在CatSprite.m中新建一个移动方法,内容如下,其中考虑了与地图的碰撞情况:
-(void)moveTowardOneTile:(CGPoint)location{
CGPoint diff = ccpSub(location, self.position);
CGPoint desiredTileCoord = [_mainScene tileCoordForPosition:self.position];
if (fabsf(diff.x) > fabsf(diff.y)) {
if (diff.x > 0) {
desiredTileCoord.x += 1;
[self runAnimation:_facingRightAnimation];
} else {
desiredTileCoord.x -= 1;
[self runAnimation:_facingLeftAnimation];
}
} else {
if (diff.y > 0) {
desiredTileCoord.y -= 1;
[self runAnimation:_facingBackAnimation];
} else {
desiredTileCoord.y += 1;
[self runAnimation:_facingForwardAnimation];
}
}
if ([_mainScene isWallAtTileCoord:desiredTileCoord]) {
//[[SimpleAudioEngine sharedEngine] playEffect:@"hitWall.wav"];
} else {
self.position = [_mainScene positionForTileCoord:desiredTileCoord];
if ([_mainScene isBoneAtTileCoord:desiredTileCoord]) {
//[[SimpleAudioEngine sharedEngine] playEffect:@"pickup.wav"];
_numBones++;
//[_mainScene showNumBones:_numBones];
[_mainScene removeObjectAtTileCoord:desiredTileCoord];
} else if ([_mainScene isDogAtTileCoord:desiredTileCoord]) {
if (_numBones == 0) {
//[_layer loseGame];
} else {
_numBones--;
//[_layer showNumBones:_numBones];
[_mainScene removeObjectAtTileCoord:desiredTileCoord];
//[[SimpleAudioEngine sharedEngine] playEffect:@"catAttack.wav"];
}
} else if ([_mainScene isExitAtTileCoord:desiredTileCoord]) {
//[_layer winGame];
} else {
//[[SimpleAudioEngine sharedEngine] playEffect:@"step.wav"];
}
}
}
注意代码中将原代码的与音效相关的部分统统省略,因为本猫的mini在调试声音的App时有点问题,大家如果加上音效代码也是没问题的,请随意 ;)
回到MainScene.m中将touchBegan方法中对cat移动的代码改为新的方法:
[_cat moveTowardOneTile:location];
现在编译运行app,效果如下:
现在我们可爱的鼠大盗已经不能穿墙行走了,下一篇中我们将原来所有的游戏逻辑全部补全(除去音乐和音效),下篇见 ;)
Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(五)的更多相关文章
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先说一下为什么要转换,这是为了后面的A*寻路算法做准备.由于在 ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(四)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在打开MainScene.m文件,首先设置实例变量: @imp ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先在CatMazeV3中新建CatSprite类,继承于Spr ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 回到Xcode中,新建一个EndLayer类,继承于CCNode ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Xcode中打开MainScene.h文件,在接口中添加2个方 ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 下面看一下CatSprite中最复杂的moveToward方法, ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打开SpriteBuilder,在文件视图中新建一个文件夹Fon ...
- JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过
各位社区的伙伴, JuiceFS v1.0 RC1 今天正式发布了!这个版本中,最值得关注的是对元数据迁移备份工具 dump/load 的优化. 这个优化需求来自于某个社区重度用户,这个用户在将亿级数 ...
- 【翻译】Selenium IDE v1.0.11 支持转换格式吗?
原文: http://blog.reallysimplethoughts.com/2011/06/10/does-selenium-ide-v1-0-11-support-changing-forma ...
随机推荐
- js 数字前面自动补零
num传入的数字,n需要的字符长度 function PrefixInteger(num, n) { return (Array(n).join(0) + num) ...
- 使用Vitrualbox虚拟Windows Server 2016系统的一些常见问题
所有的问题都是基于有路由器的网络环境下进行设置的,所有的vitrualbox都是安装在win7或者win2008系统上进行的. 1.无法创建x64系统? 解决方法:1)进入主板bios设置,开启cpu ...
- 剑指架构师系列-持续集成之Maven实现项目的编译、发布和部署
Maven组织项目进行编译.部署 Maven项目基本的结构说明如下: mazhi // 控制所有荐的编译.部署.发布 mazhi-app-parent // 项目的父项目,有一些公共的设置可以被子 ...
- Dockerfile基本结构
Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行. 一般的,Dockerfile 分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令. 例如 # This ...
- 两个activity之间透明过渡效果和经验
来看下效果图: 大致效果解释: 1. 当用户点击登录时logo下滑一定距离 2. 下滑后旋转90时 变化图标 3. 继续旋转90度 4. 然后移动到左上角 透明度渐变到上个activity 最后销毁当 ...
- Swift完成fizz buzz test
看到一篇文章上说,很多貌似看过很多本编程书的童鞋连简单的fizz buzz测试都完不成. 不知道fizz buzz test为何物的,建议自行搜之. 测试要求是,编写满足以下条件的代码: Write ...
- Swift类型推测在可选调用中的小提示
我们知道Swift中协议里也有对应于Objc中的可选方法或计算属性,当然协议必须以@objc伪指令修饰否则不可以哦. 如下示例: @objc protocol Transaction{ fun com ...
- Unity插件 - MeshEditor(八)模型镜像特效
将静态模型(带MeshFilter)按指定轴向.指定距离克隆一个镜像物体出来,思路很简单,将模型的顶点坐标按指定轴取反,并累加上设定的距离值,然后就完毕了!不过,因为镜像体的顶点镜像于之前模型的顶点, ...
- [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel
继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目 ...
- EBS客户化迁移SQL
检查一些作废了的东西是否在程序包中还有用 SELECT t.* FROM ALL_SOURCE T WHERE T.TEXT LIKE '%CUX_AP_OA_OMS_PROGRAM_ELECT%' ...