随笔分类 -  cocos2d-x

摘要:基本概念基本功能:几何图形、变换、着色、光照、贴图高级功能:曲面图元、光栅操作、景深、shader编程状态机先设置状态参数:多边形、顶点列表、填充颜色、纹理、混合模式、坐标系再调用绘图指令如果没有设置新参数,会一直用当前的状态来绘图,所以是有状态的OpenGL可以分为客户端和服务端,客户端可以是cpu或主机,服务端是gpu或另一台主机客户端发送绘图指令,服务端负责绘制渲染,尽量在客户端完成工作,只发送必要数据到服务端,减少传输压力开启/关闭绘图特性GL_APICALL void GL_APIENTRY glEnable(GLenum cap); // 开启一个状态GL_APICALL void 阅读全文
posted @ 2014-02-09 18:06 GAMTEQ 阅读(717) 评论(0) 推荐(0)
摘要:开始为游戏增加Lua脚本支持,今天主要配置了一下开发环境:cocos2d-x 2.2.1,xcode5。1. 创建cocos2d-x-lua项目类似于创建C++项目,用以下命令即可:python create_project.py -project Lua1-package com.GAMTEQ.Lua1-language lua这样创建出的项目,主要是为了让lua调用C++,即以Lua脚本来启动游戏。2. 为项目增加Lua支持由于我的游戏以前没有Lua支持,所以不能用上述命令。解决方法很简单,把$MYDIR/cocos2d-x-2.2.1/scripting/lua目录add到xcode的项 阅读全文
posted @ 2014-01-28 00:22 GAMTEQ 阅读(1904) 评论(1) 推荐(0)
摘要:1. 拖动地图1.1 地图移动原理地图tiledMap是CCLayer的child,把tiledMap的锚点设置成(0.5,0.5),然后setPosition到VisibleSize的中心,那么地图的中心就和屏幕的中心重合了。拖动地图的原理是,移动tiledMap精灵的position,即实质是地图在移动,而看起来好像屏幕在移动。1.2 得到划动向量在ccTouchesBegan确定起始触摸点,然后在ccTouchesMoved确定触摸终止点,得到向量vec即划动屏幕时的一个短时段内的划动向量。把这个划动向量加到tiledMap的getPosition上,即可划动地图。该向量的正负和因子(比 阅读全文
posted @ 2014-01-26 23:22 GAMTEQ 阅读(1139) 评论(0) 推荐(0)
摘要:最近一直在做45度斜视角游戏,也就是isometric等容地图,俗称2.5D。地图上物体的前后遮挡是我遇到的第一个问题,总结一下处理方法。遮挡问题(不知道术语),就是比如一个角色站在树后面,那么树要遮挡住角色的一部分,我是用实时修改zorder实现的。1. 制作地图用Tiled制作45度地图时,物体如何放在地图上有2种方法:1.1 标记法:在地图对象层上标记出对象,并且指定该对象的类型。游戏加载地图时,遍历所有的对象,根据其类型,生成不同的精灵:主角、NPC、城墙、建筑等。生成的时候把zorder设置成该精灵所在的瓦块坐标的x分量和y分量之和。比如城墙在(10,20)这个瓦块上,那么其zord 阅读全文
posted @ 2014-01-26 22:42 GAMTEQ 阅读(3993) 评论(0) 推荐(0)
摘要:昨天测试“角色被遮挡部分透明显示”功能时,发现角色死亡后,其轮廓精灵不会消失。调试发现,角色在死亡时,其引用计数retain_count居然是9。这是由引用计数混乱引起的内存泄露。加了很多日志跟踪retain_count,又通过调试,终于确定了问题,是我错误使用CCCallFuncN这个CCAction导致的。于是查看cocos2d-x2.2.1源代码了解这个类的实现原理。CCCallFuncN是CCAction的子类,是函数回调动作。我在游戏中用这个类来实现“角色死亡后倒地4秒渐渐消失再删除精灵”功能。PathFinder::_deadAction = CCSequence::createW 阅读全文
posted @ 2014-01-26 21:10 GAMTEQ 阅读(365) 评论(0) 推荐(0)
摘要:这几天看了libpomelo的cocos2dx客户端这是个聊天室,由2个场景构成,登录场景LoginScene,聊天场景ChatScene。一. LoginScene客户端是以Login场景来启动的Login场景初始化时先构造各种控件比如文本框,然后为登录按钮绑定登录回调创建menu及其回调CCMenuItemLabel *pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(Login::onLogin));CCMenu *pMenu = CCMenu::create(pMenuItem, NULL);pMenu-> 阅读全文
posted @ 2014-01-26 20:56 GAMTEQ 阅读(1021) 评论(0) 推荐(0)
摘要:为主角增加特殊技能火焰箭, 需要用到粒子系统以前看的例子中有做好的粒子效果, 于是直接搬来用目前我理解的粒子系统, 是一个发射器, 按照一定的规律向周围发射粒子(方向, 速度, 衰减, 颜色)发射器同时发射n个粒子, 待粒子衰减后, 回收, 继续发射, 就能实现比较炫的效果cocos2dx的粒子系统, 是由一个png图片和一个plist文件组成, 和tiled_map有点类似.png图片定义了粒子的纹理, plist定义了粒子系统的特点, 入发射规律用喷射粒子来模拟飞行的火箭, 难点就是控制喷射方向首先,要把喷射的初始方向设为x轴正向_jet->setAngle(0);然后,假设飞行方向 阅读全文
posted @ 2014-01-26 20:43 GAMTEQ 阅读(351) 评论(0) 推荐(0)
摘要:已知图片上的一个触摸点,怎么求其落在地图的哪个瓦块上?已知:瓦块尺寸64*32pt,瓦块数20*20,地图尺寸1280*640pt如图, 图片的原点是o1地图原点是o2向量:o1p,o1o2地图坐标系的基向量:u,v瓦块的宽的1/2: w瓦块的高的1/2:ho2的坐标: (W, H)p的坐标:(x, y)求:m, n 使得o2p=m*u+n*v解:根据向量减法o2p=o1p-o1o2即o2p=(x, y) - (W, H)=(x-W, y-H)又u=(w, -h)v=(-w, -h)o2p=m(w, -h)+n(-w, -h)则(x-W, y-H) =m(w, -h)+n(-w, -h)得二元 阅读全文
posted @ 2014-01-26 20:37 GAMTEQ 阅读(979) 评论(0) 推荐(0)