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

原创 2015年11月21日 10:56:13

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


下面看一下CatSprite中最复杂的moveToward方法,我们一开始只是想要确保cat在屏幕上正确显示出来,动画正确播放出来,所以可以先不管与地图碰撞检测的问题.于是简化到如下代码:

-(void)moveToward:(CGPoint)targetLocation{
    CGPoint diff = ccpSub(targetLocation, self.position);

    if (fabsf(diff.x) > fabsf(diff.y)) {
        if (diff.x > 0) {
            [self runAnimation:_facingRightAnimation];
        } else {
            [self runAnimation:_facingLeftAnimation];
        }
    } else {
        if (diff.y > 0) {
            [self runAnimation:_facingBackAnimation];
        } else {
            [self runAnimation:_facingForwardAnimation];
        }
    }

    CGFloat distance = ccpDistance(targetLocation, self.position);
    CGFloat speed = 100;
    CGFloat durationTime = distance/speed;

    if (_move) {
        [self stopAction:_move];
    }
    _move = [CCActionMoveTo actionWithDuration:durationTime                                                  position:targetLocation];
    [self runAction:_move];
}

这时要在CatSprite中新增一个_move的实例方法如下:

    CCActionMoveTo *_move;

那么CatSprite类基本转换好了,为了尽快测试效果,我们需要将MainScene类中的相关代码搭建好.

打开MainScene.h文件,修改如下:

@interface MainScene : CCNode

-(BOOL)isWallAtTileCoord:(CGPoint)tileCoord;
-(BOOL)isBoneAtTileCoord:(CGPoint)tileCoord;
-(BOOL)isDogAtTileCoord:(CGPoint)tileCoord;
-(BOOL)isExitAtTileCoord:(CGPoint)tileCoord;

-(CGPoint)tileCoordForPosition:(CGPoint)position;
-(CGPoint)positionForTileCoord:(CGPoint)tileCoord;
-(void)removeObjectAtTileCoord:(CGPoint)tileCoord;

@end

这里的MainScene类对应着原代码中的HelloWorldLayer类.我也将实例变量的什么放到了实现文件中,所以头文件里看的比较简洁.这里省略了与cat移动无关的方法,比如显示输赢效果的winGame和loseGame方法等,这写在以后在补上,目前最重要的是看cat能不能在屏幕上正确跑起来.

版权声明:大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.谢谢! hopy ;)

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

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了暂时不影响原来的cat移动方法,我们在CatSprit...
  • mydo
  • mydo
  • 2015年11月21日 11:13
  • 1099

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

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

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

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

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

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

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

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

基于cocos2d tileMap的一个小游戏

上一篇文章中我们介绍了cocos2d tileMap的一些基本知识,这一节我们基于cocos2d做一个简单的游戏,下载地址:http://download.csdn.net/detail/lennon...

使用TileMap制作游戏,在cocos2d-x中使用(三)

本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/8881664 游戏么,得有输赢、敌人。 地图编辑的一些方...

【cocos3.x+box2d+tileMap】制作马里奥游戏(三)创世纪

嘿嘿,标题开得很牛叉,不过事实上也确实如此,我们将在这里创造一个游戏世界,虽然世界很简单,马里奥只能简单感受重力、接受碰撞、左右移动、跳跃,但确实已经是一个小小的世界了! 一、载入地图,初始化box2...
  • pur_e
  • pur_e
  • 2016年01月25日 11:49
  • 1509

使用TileMap制作游戏,在cocos2d-x中使用(三)

本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/8881664 游戏么,得有输赢、敌人。 地图编辑的一些方法,传送...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(三)
举报原因:
原因补充:

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