您现在的位置是: 首页 > 单机游戏 单机游戏

cocos2d x 塔防游戏源码_cocos creator塔防游戏

zmhk 2024-09-06 人已围观

简介cocos2d x 塔防游戏源码_cocos creator塔防游戏       对于cocos2d x 塔防游戏源码的问题,我有些许经验和知识储备。希望我的回答能够为您提供一些启示和帮助。1.怎么在cocos2dx的

cocos2d x 塔防游戏源码_cocos creator塔防游戏

       对于cocos2d x 塔防游戏源码的问题,我有些许经验和知识储备。希望我的回答能够为您提供一些启示和帮助。

1.怎么在cocos2dx的基础上学习opengl,shader

2.web前端转cocos2dx怎么样

3.老师说cocos2dx过两年就会被淘汰,unity3D才是正道,各位怎么看

4.egret 和cocos2d-x-js哪个目前更稳定更好用

cocos2d x 塔防游戏源码_cocos creator塔防游戏

怎么在cocos2dx的基础上学习opengl,shader

       说说我的经验吧。

       一、cocos2d-x 部分

       1.1 技术选型

       从第三个手游开始,我实在被Adobe的ANE和国内的小平台折腾得没了脾气,决定转到cocos2d-x。在选择哪种语言绑定的时候纠结了很久,最后力排众议选了 lua:Cocos2dx+lua合适还是Cocos2dx+js合适? cocos2d-x 2.x 的lua绑定做得并不好,于是我选择了 quick-cocos2d-x (后来,quick被触控收购)。

       1.2 学习 C++

       C++ Primer 中文版(第 5 版) (豆瓣) 是不错的入门书籍,建议看第五版,我写过一篇 C++Primer 第4版和第5版比较 。学习期间建议画一些思维导图帮助理解和整理思路。例如这个(不完整):

       1.3 学习DEMO和熟悉开发平台

       编译 cocos2d-x 自带的 TestCPP 项目,全部跑一遍。熟悉 cocos2d-x API 的用法。记得用doxygen 生成文档,建议每个API的功能都浏览一遍。

       有的同学可能更喜欢直接看源码,那当然更好。不过文档有一个好处就是能更直观地显示继承关系。

       学习DEMO的过程中,你必须熟悉自己开发平台的IDE,例如Windows上必须熟悉 Visual Studio,而OS X上必须熟悉xcode,Linux平台上就熟悉Eclipse+CDT吧。

       注意,quick-cocos2d-x 是不支持Linux开发平台的。

       2014-05-17更新:quick已经使用QT重写了player部分,但依然不支持Liunx平台。

       1.4 了解引擎的文件夹结构

       基于 cocos2d-x 源码生成的文档并不怎么详细,许多功能必须看源码。但这个阶段,我不建议纠结源码太深,倒是可以纠结一下 cocos2d-x 的文件夹结构,看看各个类放在什么地方,找一找常见的哪些宏和常量以及枚举定义在什么地方,这花不了多少时间,但能让你对cocos2d-x有更深刻的了解,同时给你很强的成就感。这种成就感冲淡了你面对大量源码时候的无力感,让你能够继续前行。

       1.5 重复上面的第3步:再次学习DEMO

       这时候看DEMO可能会轻松不少,但是你会有更多的问题去纠结。例如多分辨率支持?例如坐标系统?例如绘图功能?例如层级管理系统?例如事件传递系统?等等等等……这时候可以去Google(注意不要用百毒和其他搜索引擎)找文档看了。

       1.5 重复上面的第3步:再次学习DEMO

       这时候看DEMO可能会轻松不少,但是你会有更多的问题去纠结。例如多分辨率支持?例如坐标系统?例如绘图功能?例如层级管理系统?例如事件传递系统?等等等等……这时候可以去Google(注意不要用百毒和其他搜索引擎)找文档看了。

web前端转cocos2dx怎么样

       Cocos2Dx提供了调度器。结合调度器,我们可以不断地修改节点的属性,从而实现丰富的动态效果。但是这样做过于麻烦。举个例子,我们需要把一个精灵从一个位置移动到另外一个位置。从我们前面提到的内容来思考一个可行的方案:在父节点的update中,将它的位置移动镇间隔时间移动的距离。假定目标位置到初始距离为d,移动时间指定为t秒,帧间隔时间1/60秒,那么每个update我们需要往目标位置移动d/60t。这还是匀速地移动,如果要求加速移动的效果,或者减速移动的效果,情况就变得更加复杂一些了。

       为了简化节点的动作执行,一般是CCSprite,Cocos2Dx提供了CAction来支持动作。动作可以简单地分为两类,一是瞬时动作,即立即完成的动作;二是持续性动作,即动作的执行需要持续一段时间。另外,我们还需要有能够组合各种动作的能力,称之为复合动作。下面我们,先看看动作的分类。

       瞬时动作。瞬时动作就是下一帧就要完成的动作,比如定位、缩放。其实这样的动作不需要定时机制,修改节点的属性即可,但还是封装为一个动作,目的是方便进行做动作的组合。瞬时动作包括:

       CCPlace:将节点放置到某个指定位置,其作用与修改节点的Position属性相同。

       CCFlipX和CCFlipY:用于将精灵沿X和Y轴反向显示,其作用与设置精灵的FlipX和FlipY属性相同。

       CCShow和CCHide:用于显示和隐藏节点,其作用与设置节点的Visible属性的作用一样。

       CCCallFunc:CCCallFunc系列动作包括CCCallFunc、CCCallFuncN、CCCallFuncND,以及CCCall- FuncO四个动作,用来在动作中进行类的实例方法的调用。

       持续性动作。持续性动作,以为着动作的执行需要持续一段时间。所以,这些都做都需要指定动作执行的时间:duration。持续性动作还可以根据产生的效果不同进一步细分。

       位置变化动作:针对位置(position)属性。

       CCMoveTo和CCMoveBy:用于使节点做直线运动。

       CCJumpTo和CCJumpBy:使节点以一定的轨迹跳跃到指定位置。

       CCBezierTo和CCBezierBy:使节点进行曲线运动,运动的轨迹由贝塞尔曲线描述。

       by是相对于节点的位置;to是绝对位置。

       属性变化动作:通过属性值的逐渐变化来实现动画效果。

       CCScaleTo和CCScaleBy:产生缩放效果,使节点的缩放系数随时间线性变化。

       CCRotateTo和CCRotateBy:产生旋转效果。

       CCFadeIn和CCFadeOut:产生淡入淡出效果,其中前者实现了淡入效果,后者实现了淡出效果。

       CCFadeTo:用于设置一段时间内透明度的变化效果。

       CCTintTo和CCTintBy:设置色调变化。可以理解为RGB颜色中的某一种颜色值变化了。

       视觉特效动作:一些特殊的视觉效果。

       CCBlink:使目标节点闪烁。

       CCAnimation:播放帧动画,用帧动画的形式实现动画效果。

       控制动作:对一些列动作进行精细控制。

       CCDelayTime:将动作延时一定的时间才执行。

       CCRepeat:把现有的动作重复一定次数。

       CCRepeatForever:现有动作一直执行下去。

       复合动作。复合动作是由一些基本动作一起组合成的新动作。可以满足游戏需要的复杂动作需求。

       CCSpawn:允许一批动作同时执行。

       CCSequence:顺序执行一系列动作。

       CCSpeed:改变动作执行的速度。

       CCActionEase:是一类动作,不同于CCSpeed的匀速执行,CCActionEase允许多样化地控制速度。

       CCEaseRateAction

       CCEaseIn

       CCEaseOut

       CCEaseInOut

       CCEaseExponentialIn

       CCEaseExponentialIn

       CCEaseExponentialInOut

       CCEaseSineIn

       CCEaseSineOut

       CCEaseSineInOut

       CCEaseElastic

       CCEaseElasticIn

       CCEaseElasticOut

       CCEaseElasticInOut

       CCEaseBounce

       CCEaseBounceIn

       CCEaseBounceOut

       CCEaseBounceInOut

       CCEaseBackIn

       CCEaseBackOut

       CCEaseBackInOut

老师说cocos2dx过两年就会被淘汰,unity3D才是正道,各位怎么看

       风险肯定是有的~转过来又俩问题,一个是没做过游戏~整个游戏逻辑可能有问题~另一个是c++不熟悉,工程项目稍微大一点的话怕内存泄露~cocos2d-x肯定是用来做手机游戏的~万一有泄露可能整个程序直接崩了~主要怕这个

egret 和cocos2d-x-js哪个目前更稳定更好用

       刚好我现在同时在开发两个2D游戏,一个是用Cocos2d-x,一个是用Unity3d。

       对于“学习”而言,

       Cocos2d-x是比较好理解的。它是传统的OOP结构,对于有编程经验的人来说,是最好不过了。就连Unity3d上,也有一个很火的2D框架,Futile,是模仿Cocos2d-x的架构和代码风格。从Cocos2d-x上手接触一下游戏引擎,是一个不错的选择。

       而Unity3d是Component-Based结构,对于OOP背景的程序员来说,一开始会觉得别扭。而且Unity3d有很多针对3d模型、3d动画、优化等等的商用功能,对于初学者来说会有点overwhelming的感觉。而且无论如何使用Unity3d,总需要在editor里进行大量操作,对理解游戏引擎和代码架构来说,并不是一个很好的方式。

       然而,从“开发”的角度来说,

       Cocos2d-x正如 @周华 所说,是一个“纯正”的引擎——仅仅只是代码库。虽然可以利用CocosBuilder和其他一些工具进行图形化操作,但效率始终不够Unity3d高。而且暴露过多的底层代码,对于研究是一件大大的好事,但是对于创作而言,未必是福音。

       而Unity3d则是一个高效的IDE+代码库。它很好地封装了底层代码,提供许多简便的图形操作,还有商业级的高级功能。对于开发而言,我认为是更好地选择。之前大多数开发者对Unity3d的认识还停留在3D开发,但2013年末的2D支持让更多人选择Unity3d进行2D开发。

       所以我的结论是,通过Cocos2d-x或者是Unity3d上的Futile框架来入门,熟悉之后再过渡到Unity3d进行开发。:)

       如果大型游戏,强烈建议不要使用cocos2d-js

       我们目前的几个项目都是cocos2d-js开发的,我打算把这几个项目转egret。有如下几个理由:

       1、cocos ide有BUG:断点会崩溃、代码提示很差、内存太高、虚拟机的菜单栏会影响事件(迭代了很多版本,这菜单栏BUG都没修复)

       2、studio的工作流在几个引擎中是最差的,而且有BUG。经常和实际表现不一致。而且内存占用大,会崩溃。不能继承(这个问题最严重,不能继承按钮,那么按下缩放等高级功能就很蛋疼)。

       3、

       架构太差。写点小功能没事,如果想写大型游戏,这套架构会让你抓狂!比如最简单的按钮事件,我必须在事件方法里面加个触摸类型判断。一个很简单的点击,就

       多出很多这种相似的代码!4、UI有好几套,然而每一套都有BUG。CCUI的设计也是很糟糕的!同时也是崩溃的罪魁祸首。

       5、引擎BUG问题,

       很多BUG会让你欲哭无泪,比如坐标会出现undefined。再比如热更新的BUG,XCODE编出的包默认是js而不是jsc,当这个包发布商店就会

       出现不能热更新的问题,同时也进不去游戏,卡在了热更新界面。(这个问题导致我们流失了3个月的用户,知道苹果商店通过审核位置),再比如

       java/objectc和js的交互,这个都有问题!再比如:ios第三方输入法会导致崩溃!

       6、工作流问题,IDE的断点的观察变量很不友好、studio导出的配置很大、studio扩展性很差。在IDE 1.2版本出来之前,我们团队甚至无法断点,只能打印日志来debug。

       7、工作效率问题,代码提示先不谈。我实现一个简单的列表都能折腾很久,那ccui的list真是太不好用!除此之外,裁剪、遮罩这些只需要一行的代码,在cocos下面需要无数行!

       8、

       引擎升级问题:cocos大概一个月1个升级,egret是2周。然而cocos升级会带来大量的新BUG,而且兼容性很差。导致我们现在还用3.0版

       本。最蛋疼的是,官方的3.6版本又不能断点了!3.0升级到3.6还会导致布局混乱、九宫失效、崩溃闪退(绝对不是代码问题这个解释了)!基本上

       cocos每加个新功能都会带来无数新BUG,老BUG修复量也少,我论坛反馈的问题经常需要迭代2到3个版本才修复,下个版本修复兼职是不可能。而

       egret不仅迭代快,BUG修复也勤快!也很少有一些导致产品质量的验证BUG。

       9、官方人员态度问题:我在cocos论坛发的BUG反馈,过了7天才有人来回复。地址(从3.0到3.1和3.2的BUG,官方帮忙看下),再看下egret我发的BUG反馈,当时是下班时间,然而第二天一早就回复我了。地址(Egret社区-BUG列表)

       10、API问题:cocos经历了3个大版本,官方API文档也有的API,实际尽然是没有的,官方回复是还没加入js绑定。

       11、跨平台问题:cocos2d-js经常是HTML5和JSB表现不一致。导致我们现在只能专注JSB而放弃HTML5版本。egret很少有这个问题。

       12、

       性能问题:先抛开runtime。如果你用了ccui,那么我100%保证你的cocos2d-js的性能会被egret秒杀。再来说下native下面

       的性能对比,cocos的人说egret是js写的逻辑,而他们是绑定。那么问题来了,在现在,js的逻辑产生的性能压力一点都不是问题(参考

       node.js,能用js写服务器了都)。主要的性能压力其实是在渲染上面,而他们2个都是opengl作为渲染的。如果用了ccui,那么还是被

       egret秒杀。那ccui带来的drawCall真是太!!再来谈runtime,egret现在很多浏览器都集成了runtime(可以opengl

       渲染代替canvas渲染),而cocos-js只是说在合作,已经慢了一步。

       13、产品路线图问题:cocos的几个产品一心在弄3D,egret都已经自己搞了一个IDE了。开发基本的生活cocos都没保障好,就去想和u3d打架!

       14、内部问题:cocos估计内部很不和谐,ide据说是1个人在开发,studio是30个人(30个人整出这东西),而且studio是用的.NET搞的,跨平台最呵呵的技术!QT、AIR那些那么多高效率,扩展性强的技术不用,选了个.NET。。。。

       ---------------------------------------------------------------------------------------------------------------------------------

       题

       外话:说了那么多cocos的不是,我也曾试着爱过它,我甚至开发了一个和egret

       wing一样的UI编辑器,写了个和Flash/Flex一样的API(egret用的这套,这种架构很好用,简单明了)。其中UI编辑器还加上了

       unity3d那种绑定脚本的功能。然而因为cocos底层的一些令人发狂的BUG,我最终是放弃了。有egret这个车子在,我还造什么轮子?我打算把

       手里头的这套cocos的东西开源。然后去整egret去!

       ---------------------------------------------------------------------------------------------------------------------------------

       再来个题外话:

       游戏引擎cocos2d-js和egret 对比

       这

       个是百度搜索第一的对比,里面说cocos2d的工具比egret多,我不否认,但是能用的基本没有。而egret的工具很稳定。就拿最简单的骨骼动

       画,cocos连龙骨都不支持,studio里面的骨骼设计也是坑的不行,egret的骨骼设计工具从界面和实用性都已经完爆studio了!

       再来说上面的地址里面的成功产品:捕鱼达人、DOTA传奇、我叫MT那都是cocos2dx写的,和js版本一点关系都没有!请问你有见过网页版的刀塔传奇么?

       上面的开发语言对比,大项目来说,ts真的是完爆js!js那不小心就会出错真心不适合大项目,不然微软不会造这个轮子。

       上面的参考资料对比,cocos2d-js的文档连参数的注释都没,和c++文档作参考也不行,很多参数是不一致的!而egret在开发工具里面就继承了中文的帮助。

       从目前状况看,今年绝对是egret产品井喷的一年,不信走着瞧!cocos真是把我坑惨了!

       ---------------------------------------------------------------------------------------------------------------------------------

       再

       次申明,请拿cocos2d-js或者JSB的大作出来,不用拿2dx的东西。说到2dx,你们再去了解下,榜单上,有几个人是没改过引擎源码的,有几个

       游戏能随着cocos引擎升级而升级。用studio的又有几个。并不想和王哲斯逼,只是希望你们能正视BUG,提高体验。如果好,我们团队会考虑

       cocos技术的,否则只能用egret和unity3d了。我说cocos这么多不是,也是希望他成长,能给开发者带来更多利益,带来更多方便,而不是

       各种无厘头的问题,各种蹩脚的手段去开发。还有,我说的这几点,@王哲

       你接招,如果我不说出这些BUG,这些问题,那么估计还不一定改。egret同样有个人叫王泽,然而他的理念完全当我们开发者是用户,提高开发体验,这个

       很重要的。

       好了,今天关于“cocos2d x 塔防游戏源码”的话题就到这里了。希望大家能够通过我的讲解对“cocos2d x 塔防游戏源码”有更全面、深入的了解,并且能够在今后的生活中更好地运用所学知识。