创建了cocos的工程以及初步了解了工程的结构之后,可以尝试自己改改代码了

游戏窗口的设置

首先是AppDelegate,找到AppDelegate.cpp中AppDelegate::applicationDidFinishLaunching这个成员函数

函数中有几行代码涉及到游戏的一些设置

glview = GLViewImpl::createWithRect("teach", cocos2d::Rect(0, 0, designResolutionSize.width, designResolutionSize.height));//设置窗口的尺寸
director->setDisplayStats(true);//显示FPS
director->setAnimationInterval(1.0f / 60);//设置每帧的间隔
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);//设置游戏的分辨率

调试信息

以上三行代码是连在一起的,把setDisplayStats后的参数改成false,可以发现helloworld中左下角的FPS和Drawcall信息消失了

窗口尺寸和游戏分辨率

然后讲一下如何修改窗口的尺寸,cocos里有一个叫做Size的类,这个尺寸类的widthheight两个成员是我们经常需要使用的,在设置精灵的尺寸啊,坐标的时候会经常使用到

AppDelegate.cpp的上面可以找到到几行代码

static cocos2d::Size designResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768);
static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536);

这是cocos给我们提供的常用的窗口尺寸,我们可以发现,现在使用的是designResolutionSize这个尺寸,480*320是比较小的,可以把窗口的尺寸设置成 mediumResolutionSize1024 *768

glview = GLViewImpl::createWithRect("teach", cocos2d::Rect(0, 0, mediumResolutionSize.width, mediumResolutionSize.height));



最后将代码改成这样,编译

接下来讲一下分辨率的设置,事实上,虽然我们窗口的尺寸设置成了1024*768,但是实际上游戏窗口里的分辨率还是480*320个像素,打开Resources文件夹我们可以看到HelloWorld.png这个cocos的logo,分辨率是195*270,如果说游戏的分辨率设置成1024*768的话

glview->setDesignResolutionSize(mediumResolutionSize.width, mediumResolutionSize.height, ResolutionPolicy::NO_BORDER);

那么结果是这样的



以上就是游戏窗口的一些参数的设置

精灵

我们可以把精灵(Sprite)当作图片,实际上游戏界面的cocos的logo就是一个精灵,现在我们要把这个精灵替换成可爱的小忍,把小忍扔到项目的Resources文件夹下

打开HelloWorldScene.cpp文件,找到

auto sprite = Sprite::create("HelloWorld.png");

把HelloWorld.png改成小忍图片的图片名shinobu.jpg,编译



啊是小忍,我死了

坐标系统

接下来解释一下cocos的坐标系,首先要介绍一下Vec2类,有接触过图形库或者游戏引擎的同学对这种命名应该都不陌生,这个类代表的是二维向量,有xy这两个成员,我们在设置游戏物体的坐标的时候会使用到,同样在HelloWorldScene.cpp中,在创建sprite精灵的地方有这么几行代码

auto sprite = Sprite::create("shinobu.jpg");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite, 0);

第一行代码的意思是用shinobu.jpg这个图片创建一个精灵

第二行代码使用setPosition设置这个精灵的坐标,有意思的来了,坐标中出现了两个对象,一个是visibleSizeorigin

visibleSize这个对象储存了游戏世界的尺寸,也就是我们能够看到的窗口的尺寸,设置游戏的分辨率可以影响这个值,origin指的是窗口左下角的点在游戏世界中的位置

在设置坐标的代码下加入这样一行代码

log("visibleSize.width=%f, visibleSize.height=%f, origin.x=%f, origin.y=%f",
visibleSize.width,
visibleSize.height,
origin.x,
origin.y);

运行,查看输出窗口



可以看到visibleSizeorigin的值,log函数当作c语言的printf使用即可用来调试

Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)这个坐标的代码看似很长,实际上意思很简单,就是窗口正中间的位置,我们把坐标改成Vec2(visibleSize.width/4 + origin.x, visibleSize.height/2 + origin.y)试一下



小忍的位置向左移动了1/4窗口宽度的距离

最后一句this->addChile(sprite, 0);是将这个精灵加入到当前图层中,参数0代表最底层,如果不加这行代码,sprite不会成为游戏世界中的一员,编译出来之后就不会显示

cocos2d-x 新工程的把玩的更多相关文章

  1. Android Studio安装后配置默认新工程目录以及.gradle,.android,.m2和system,config目录

    关于在哪里设置:以下所有设置都是在没有打开工程的前提下设置的, Configure > Settings 如图: 不要使用 Configure > Project Defaults> ...

  2. Vivado2016旧工程IP移动到新工程

    前言 在VIVADO中图形化界面生成IP,在旧工程中使用后,如果想在新的工程中使用这个IP但又不想再次生成一次,则就需要把就旧工程中的IP导入到新工程中. 流程 1.旧工程IP生成的目录如下,IP为C ...

  3. Spring Boot 2 - 初识与新工程的创建

    Spring Boot的由来 相信大家都听说过Spring框架. Spring从诞生到现在一直是流行的J2EE开发框架. 随着Spring的发展,它的功能越来越强大,随之而来的缺点也越来越明显,以至于 ...

  4. 使用git在github上创建新工程

    这段时间进经常会忘记如何在github上同步工程,于是又得查资料,查参考书,浪费了很长时间,因此有了感触,写几篇有关此类问题的篇章! 这是老手新手都十分容易犯的错误,就是在创建一个新github项目或 ...

  5. 对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错。

    对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错.步骤如下: 右键新的工程---&g ...

  6. Python学习---Django的新工程设置模板

    该模板完全可以在创建好新工程后进行部分代码替换 创建app01的  python startapp app01   创建static子目录 settings.py """ ...

  7. 使用Kotlin开发Android应用(II):创建新工程

    在基本了解什么是Kotlin以及Kotlin可以做什么之后,接下来就到了配置Android Studio并使用Kotlin开发Android apps的时候了.首次配置Android Studio需要 ...

  8. Vivado SDK 2014.2 创建新工程后,BSP版本不对的解决办法

    问题描述如下: 1. 使用Vivado SDK 2014.2已经创建了工程,但是此时,hdf文件增加了外设,需要重新创建工程以更新SDK中的外设描述: 2. 使用新的hdf创建工程后,发现system ...

  9. Android下Cocos2d创建HelloWorld工程

    最近在搭建Cocos2d的环境,结果各种问题,两人弄了一天才能搞好一个环境-! -_-!! 避免大家也可能会遇到我这种情况,所以写一个随笔,让大家也了解下如何搭建吧- 1.环境安装准备 下载 tadp ...

随机推荐

  1. Python之工作方向

    "python基础-->(函数/面向对象/网络编程(scoket套接字)/并发编程(mutiprocessing)) "运维+web开发-->页面展示(django/f ...

  2. C#线程学习笔记五:线程同步--事件构造

    本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/23/Event_Constructor.html,记录一下学习过程以备后续查用. 前面讲的线 ...

  3. visualStudio 的一些常用使用操作总结

    今年苟了差不多一整年,期间断断续续把c++ prime plus 看完了 ,发现并没有什么鸟用 ,但是对代码怎么形成二进制的过程 动态内存管理 这些模模糊糊的确实理解更深刻些了 特别是c++过度到c# ...

  4. 分布式全文搜索引擎ElasticSearch—超详细

    1 ElasticSearch 1.1 ES的概念和特点 ES:全文检索的框架,专门做搜索,支持分布式.集群.封装的Lucene. 特点: 原生的Lucene使用的不足,优化了Lucene的调用方式 ...

  5. JS---案例:点击按钮设置div背景色渐变

    案例:点击按钮设置div背景色渐变 背景色渐变:设置透明度 <div id="dv"></div> <input type="button& ...

  6. javaWeb实现验证码--代码超简单

    1.前端显示 HTML: <h3>验证码:</h3> <input type="text" name="validationCode&quo ...

  7. oop面向对象【接口、多态】

    今日内容 1.接口 2.三大特征——多态 3.引用类型转换 教学目标 1.写出定义接口的格式 2.写出实现接口的格式 3.说出接口中成员的特点 4.能够说出使用多态的前提条件 5.理解多态的向上转型 ...

  8. ORA-07217 environment variable cannot be evaluated

    问题描述:还是rman的问题,一个很沙雕的问题,改了半天,准备是要做数据库的全备,和归档的备份 1.连接rman进行备份,这里要保持数据库为mount状态,因为要对数据库全备 [oracle@orcl ...

  9. CentOS 磁盘在线扩容

    场景介绍: 操作系统Centos7.x 系统有一块vdisk,容量为20G,共分为3个区(swap和boot分区为标准分区xfs文件系统,根分区为LVM分区,xfs文件系统) 业务需求:在VM系统不关 ...

  10. RBAC-权限管理设计

    1.RBAC(Role-Based Access Control)——基于角色的访问控制.简单来说每个角色有不同的权限,通过对用户赋予不同角色来赋予其对应权限. 2.RBAC0:最基本的用户角色多对多 ...