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

标签: cocos2d游戏动画地图
852人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1553736次
    • 积分:24928
    • 等级:
    • 排名:第241名
    • 原创:785篇
    • 转载:98篇
    • 译文:190篇
    • 评论:556条
    关于侯佩 | hopy
    Asm , C , Javascript , Ruby , Objc , Swift
    iOS , MacOS , Linux , Windows
    Rails , SpriteKit , Cocos2D

    QQ : 1九7九61七4

    本猫用心写文章,如果帮助到你,请你任性打赏,以鼓励本猫猪写出更多更好的作品 :)


    博客打赏
    博客打赏
    博客专栏
    文章分类
    最新评论