大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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中一例(五)的更多相关文章

  1. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先说一下为什么要转换,这是为了后面的A*寻路算法做准备.由于在 ...

  2. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(四)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在打开MainScene.m文件,首先设置实例变量: @imp ...

  3. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先在CatMazeV3中新建CatSprite类,继承于Spr ...

  4. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 回到Xcode中,新建一个EndLayer类,继承于CCNode ...

  5. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Xcode中打开MainScene.h文件,在接口中添加2个方 ...

  6. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(三)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 下面看一下CatSprite中最复杂的moveToward方法, ...

  7. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打开SpriteBuilder,在文件视图中新建一个文件夹Fon ...

  8. JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过

    各位社区的伙伴, JuiceFS v1.0 RC1 今天正式发布了!这个版本中,最值得关注的是对元数据迁移备份工具 dump/load 的优化. 这个优化需求来自于某个社区重度用户,这个用户在将亿级数 ...

  9. 【翻译】Selenium IDE v1.0.11 支持转换格式吗?

    原文: http://blog.reallysimplethoughts.com/2011/06/10/does-selenium-ide-v1-0-11-support-changing-forma ...

随机推荐

  1. js 数字前面自动补零

    num传入的数字,n需要的字符长度        function PrefixInteger(num, n) {            return (Array(n).join(0) + num) ...

  2. 使用Vitrualbox虚拟Windows Server 2016系统的一些常见问题

    所有的问题都是基于有路由器的网络环境下进行设置的,所有的vitrualbox都是安装在win7或者win2008系统上进行的. 1.无法创建x64系统? 解决方法:1)进入主板bios设置,开启cpu ...

  3. 剑指架构师系列-持续集成之Maven实现项目的编译、发布和部署

    Maven组织项目进行编译.部署 Maven项目基本的结构说明如下: mazhi  // 控制所有荐的编译.部署.发布 mazhi-app-parent  // 项目的父项目,有一些公共的设置可以被子 ...

  4. Dockerfile基本结构

    Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行. 一般的,Dockerfile 分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令. 例如 # This ...

  5. 两个activity之间透明过渡效果和经验

    来看下效果图: 大致效果解释: 1. 当用户点击登录时logo下滑一定距离 2. 下滑后旋转90时 变化图标 3. 继续旋转90度 4. 然后移动到左上角 透明度渐变到上个activity 最后销毁当 ...

  6. Swift完成fizz buzz test

    看到一篇文章上说,很多貌似看过很多本编程书的童鞋连简单的fizz buzz测试都完不成. 不知道fizz buzz test为何物的,建议自行搜之. 测试要求是,编写满足以下条件的代码: Write ...

  7. Swift类型推测在可选调用中的小提示

    我们知道Swift中协议里也有对应于Objc中的可选方法或计算属性,当然协议必须以@objc伪指令修饰否则不可以哦. 如下示例: @objc protocol Transaction{ fun com ...

  8. Unity插件 - MeshEditor(八)模型镜像特效

    将静态模型(带MeshFilter)按指定轴向.指定距离克隆一个镜像物体出来,思路很简单,将模型的顶点坐标按指定轴取反,并累加上设定的距离值,然后就完毕了!不过,因为镜像体的顶点镜像于之前模型的顶点, ...

  9. [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel

    继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目 ...

  10. EBS客户化迁移SQL

    检查一些作废了的东西是否在程序包中还有用 SELECT t.* FROM ALL_SOURCE T WHERE T.TEXT LIKE '%CUX_AP_OA_OMS_PROGRAM_ELECT%' ...