第一个塔防游戏--学习笔记
来源:互联网 发布:快图浏览 知乎 编辑:程序博客网 时间:2024/04/27 23:26
屏幕适配:(在AppDelegate.cpp)
CCEGLView* pEGLView =CCEGLView::sharedOpenGLView();
pEGLView->setDesignResolutionSize(480, 320, kResolutionNoBorder);
kResolutionExactFit:会靠拉伸来填满屏幕,本例来说背景图会变形来填充屏幕,因为1024:768=1.3, 480:320=1.5,宽高比不同,图片也就无法等比缩放来填满屏幕,只能变形了。
kResolutionNoBorder: 看不到黑边,实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。
kResolutionShowAll:全部显示,可以理解为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个
kResolutionNoBorder: 看不到黑边,实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。
kResolutionShowAll:全部显示,可以理解为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个
全局变量(可以通过这个来方便新建)
CC_SYNTHESIZE(int,level,Level);这个宏会创建getLevel()和setLevel(int)两个方法。
CC_SYNTHESIZE_RETAIN();也很容易理解,是具有retain属性的变量。
CC_SYNTHESIZE_RETAIN();也很容易理解,是具有retain属性的变量。
加入的cpp文件都需要在android.mk里添加
资源配置等最好写在一个Resource.h里,cpp文件可以引入。h直接使用,方便以后修改
//判断碰撞
bool Army::collisionWithCircle(CCPoint circlePoint, float radius, CCPoint circlePointTwo, float radiusTwo)
{
float xdif = circlePoint.x - circlePointTwo.x;
float ydif = circlePoint.y - circlePointTwo.y;
float distance = sqrt(xdif * xdif + ydif * ydif);
if(distance <= radius + radiusTwo)
{
return true;
}
return false;
}
定时器schedule
调用update方法,需要在类生成时候加入scheduleUpdate(),对应终止方法为unscheduleUpdate();
定时执行
this->schedule(schedule_selector(Garden::myCallBack),1.0f); //1秒执行
延时执行
在myCallBack中加入unschedule(schedule_selector(Garden::myCallBack));则可以做成延时执行
如果是action延时执行,则可以通过CCSequence::create(CCDelayTime::create(3.0f),XXX,NULL);
回调函数CCCallFunc
CCCallFunc 不带参数回调void
CCCallFuncN 带调用的对象自己去函数
CCCallFuncDN 带参数调用
my->runAction(CCCallFunc::create(this, callfunc_selector(AirPort::damageTarget))); //this为airport对象
my->runAction(CCCallFuncN::create(this, callfuncN_selector(AirPort::damageTarget))); //传进去的my对象
void AirPort::damageTarget(CCSprite *arrow){}
my->runAction(CCCallFuncND::create(this, callfuncND_selector(AirPort::damageTarget), (void*)mInt))跑酷:
1、schedule:在游戏中,要检测两个运动的物体什么时候否碰撞,就必须在每一帧中对两个物体的矩阵范围进行判断,是否出现相交。同样的,一些游戏动画,为了做出动画效果,我们在设置动作的同时,还需要对每一帧的画面进行布局,在cocos2d-x中就可以使用schedule()函数实现了。
跑酷中,时刻监控玩家触摸屏幕,需要执行角色jump的方法,包括位置和触摸屏幕的时间等等,相当于void update(float dt);函数,每一帧进行刷新,实时监控。
第一个参数schedule_selector,刷新时所要调用的方法,第二个参数为间隔的时间。
2、进行自定义宏 如:
#define INIT_BASIC_VIEW if(!BasicView::init()) \
{\
return false;\
{\
return false;\
}\
3、setScale:进行缩放,参数为负数的时候将掉转方向。
4、scheduleUpdate,同样可以进行更新,以帧为单位,同时写update方法。
5、锚点设置0~1,如果是精灵,默认为(0.5,0.5),即精灵的正中心;如果是layer,则默认为左下角(0,0)。
5、做为一个游戏,获取结点操作相当频繁,如果一直使用getchildbytag来取得,有时会使得游戏变得很卡,浪费了很多的cpu时间。从那以后的开发尽量少用或不用这个函数,改为成员变量比较好,减少了父结点遍历子结点的时间。从而提高程序的效率。
- 第一个塔防游戏--学习笔记
- 游戏开发学习笔记——第一期:学习初衷
- 【吼吼睡cocos2d学习笔记】第四章 - 第一个游戏
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第一课:游戏原理与机制
- Unity官方第一个人称射击游戏<恶魔射手>—学习笔记四(游戏中的管理)
- 小韵游戏开发学习笔记——第一期:学习初衷
- 第一个学习笔记
- 第一个学习笔记
- 第002讲:用Python设计第一个游戏 ---学习笔记
- 《游戏人工智能》学习笔记
- 游戏开发 学习笔记
- DirectShow 学习笔记第一部分
- Hibernate学习笔记:第一例
- 学习C#第一课笔记
- 算法学习笔记----第一部分
- 【WinEdt学习笔记】第一课
- XML学习笔记 第一记
- JUnit 学习笔记 第一记
- Oracle 多个单引号的处理
- 好的Kentico内容管理网站有哪些(下)
- TCP连接3次握手的理解
- telnet远程登陆
- SQL server每个日志写(log write)究竟有多大
- 第一个塔防游戏--学习笔记
- 使用python爬取智联招聘公司的行业
- JavaScript中的构造函数
- WinXP编译mongodb c++ driver
- 为IIS的多个网站设置不同的.net运行框架
- node.js hello world
- 算法学习第一课静态顺序表操作
- cocos2dx anrdoid crash log查看
- IE6的window.location.href问题