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

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

如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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能不能在屏幕上正确跑起来.

时间: 2024-12-27 22:28:48

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

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

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先在CatMazeV3中新建CatSprite类,继承于Sprite.其中CatSprite.h文件如下所示: #import "CCSprite.h" @class MainScene; @interface CatSprite : CCSprite @property (nonatomic,assign,readonly) NSInteger n

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

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了暂时不影响原来的cat移动方法,我们在CatSprite.m中新建一个移动方法,内容如下,其中考虑了与地图的碰撞情况: -(void)moveTowardOneTile:(CGPoint)location{ CGPoint diff = ccpSub(location, self.position); CGPoint desiredTileCoord = [

《逃离牧场v1.0》android游戏豌豆荚首发庆,快来看看吧!!!

<逃离牧场>是快开客的又 一创意,玩家通过躲避炮台 子弹全身而退地到达屏幕上 方的亭子的位子,游戏成功! 如果被打中次数超过3次,游 戏失败!,如有疑问,欢迎 建议我! QQ:923780263 微信公众号:QuickDev助手 博客:http://blog.csdn.net/ qq923780263 豌豆荚下载地址:apps.wandoujia.com/apps/com.lxc.taolimuchang.wdj <逃离牧场v1.0>android游戏豌豆荚首发庆,快来看看吧!!!

最新:百度春节抢百万游戏--汤圆向前冲--辅助工具v1.0.0.2

https://www.cnblogs.com/Charltsing/p/ADBJumpTY.html 联系QQ:564955427 汤圆向前冲辅助工具 因为手残,用以前微信跳一跳的辅助工具改了一下,手工跳. 1.如果是xp sp3或者windows7 sp1,请百度下载安装.net 4.0或更高版本 2.本程序自带ADB,无需自行安装.想自己下载的用下面的链接,下载之后将ADB相关的三个文件放到本程序同一目录下 adb工具包最新2017Google官方版下载https://dl.google.

heatmap.js v1.0 到 v2.0,详细总结一下:)

前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这里: http://www.oschina.net/p/heatmap-js 目前,对于热力图的开发,百度.高德开发平台上使用的都是这款JS开源库.当然,现在还有我们公司:P 百度示例:http://developer.baidu.com/map/jsdemo.htm#c1_15 高德示例:http

效率飞速提高Four Dimension Technologies GeoTools v17.0 1CD+AutoHook.2017.v1.0.3.00 1CD

效率飞速提高Four Dimension Technologies GeoTools v17.0 1CD+AutoHook.2017.v1.0.3.00 1CD GeoTools v12.18 1CD     GeoTools写的是测绘.GIS用户心中最初但现在有这个程序它是有用的,只是任何AutoCAD用户相关的足够的命令.GeoTools现在是几乎所有的AutoCAD用户有用.它解决了很多常见的问题和地图生产的要求和编辑AutoCAD是地理数据的一个非常方便的工具捕获(GIS底图).处理.转

[Android应用]《花界》V1.0 正式版隆重发布!

http://www.cnblogs.com/qianxudetianxia/archive/2012/04/05/2433669.html 1. 软件说明(1). 花界是一款看花软件:“看花,议花,说花,提高您的赏花素养!”. (2). 发布<花界>V1.0正式版,一是检验,综合,统一本博客技术分析,二是从理论到实践的转换. 2. 应用下载下载地址:点击谷歌市场:点击 3. 源码下载源码托管:传送门 4. 业务简介(1). 持续更新高清花朵的图片赏析:(2). 给花儿分门别类,教你区分不同的

DataScope v1.0 多功能串口虚拟示波器使用介绍

DataScope v1.0 特性 1.无需安装,启动即用;2.支持同时刷新多达10个通道的单精度浮点型数据;3.支持多种格式的通道数据导入.导出及回放;4.支持全屏浏览;5.支持图表数据统计.测量及缩放;6.支持蓝牙适配器;7.支持各通道独立刷新;8.支持3D轨迹显示;9.3D立方体显示;10.航空仪表;11.灵活可屏蔽的快捷键支持. 准备工作 在使用时我们要先引入头文件“ #include "DataScope_DP.h" ”,这个头文件中定义了我们需要用的2个函数和一个数组,分别

[iOS UI进阶 - 2.0] 彩票Demo v1.0

A.需求 1.模仿"网易彩票"做出有5个导航页面和相应功能的Demo 2.v1.0 版本搭建基本框架 B.搭建基本框架 1.拖入TaBarController,5个NavigationController和对应的5个UIViewController 2.配置图标和启动画面 AppIcon直接拖入图片 LaunchImage在Xcode6中需要先更改启动图使用图库的图片,而不是LaunchImage.xib 2.引入图片包 4. 按照模块分类代码包 3.底部导航--自定义TabBar (