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

原创 2015年11月21日 11:13:35

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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,效果如下:

这里写图片描述

现在我们可爱的鼠大盗已经不能穿墙行走了,下一篇中我们将原来所有的游戏逻辑全部补全(除去音乐和音效),下篇见 ;)

版权声明:大熊猫猪·侯佩原创或翻译作品.谢绝转载! hopy

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

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

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

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

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

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

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

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

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

首先说一下为什么要转换,这是为了后面的A*寻路算法做准备.由于在v1.0中,可能是Cocos2D本身有问题,以下 touchLocation = [_tileMap convertTouchTo...
  • mydo
  • mydo
  • 2015年11月21日 10:34
  • 1064

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

首先在CatMazeV3中新建CatSprite类,继承于Sprite.其中CatSprite.h文件如下所示:#import "CCSprite.h"@class MainScene;@interf...
  • mydo
  • mydo
  • 2015年11月21日 10:46
  • 972

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

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

cocos2d-x Tile Map 教程(一)

原文来自http://www.raywenderlich.com/39113/cocos2d-x-tile-map-tutorial-part-1 这是我很喜欢的一个学习网站。在里面能学到很多东西,同...
  • CHENPOLU
  • CHENPOLU
  • 2014年01月28日 15:37
  • 7563

将Cocos2d-x游戏打包成Android应用程序

1. 打开Eclipse(已经装好ADT和NDK),导入cocos2d-x的Android项目。 2
  • kingabcde
  • kingabcde
  • 2014年05月11日 15:41
  • 2716

cocos2D v3.4 在TileMap中开启高清显示

在Tiled中制作一幅地图,用的图片砖块分辨率为32x32.iOS设备为iPhone 4s.在未打开高清屏支持的cocos2d v2.x版本中,运行log显示480x320.遂启用高清屏支持:[CCd...
  • mydo
  • mydo
  • 2015年11月13日 08:51
  • 1144
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(五)
举报原因:
原因补充:

(最多只允许输入30个字)