创建了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. Intel和AMD的CPU性能对比图

    Intel和AMD的CPU性能对比图:

  2. Android设计模式—观察者模式

    装载请标明出处:https://www.cnblogs.com/tangZH/p/11175120.html  观察者模式 说白了,就是一个对发生改变,所有依赖于它的对象也发生改变,这是一对多的关系. ...

  3. Android 插件化开发(二):加载外部Dex文件

    在学习Java反射的技术后,我们可以开始更深一步的探究插件化开发了.首先先讲一下Android App的打包流程,然后我们通过一个简单的例子 —— 实现插件化加载外部Dex来完成初级的插件化开发的探索 ...

  4. Android WebView 加载富文本内容

    WebView加载数据的方式有两种: 1. webView.loadUrl(data);//加载url 2. webView.loadDataWithBaseURL(null,data, " ...

  5. Java多线程面试问答

    今天,我们将讨论Java 多线程面试问答. 线程是Java面试问题中的热门话题之一.在这里,我从面试的角度列出了大多数重要的Java多线程面试问题,但是您应该对Java线程有足够的知识来处理后续问题. ...

  6. 2019年Java面试题基础系列228道(2)

    21.描述一下 JVM 加载 class 文件的原理机制? JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的 Java 运行时系统组件,它 ...

  7. 2019前端面试系列——CSS面试题

    盒模型 /* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; marg ...

  8. WPF无边框可拖动窗体

    下面主要记录下创建无边框窗体,并且可以拖动.这种窗体主要用于弹出小窗体时. <Window x:Class="WpfApplication1.MainWindow" xmln ...

  9. 针对windows系统如何解决openssl_pkey_export(): cannot get key from parameter 1这个问题

    为了解决这个问题我百度了很多方法,可是很多方法并没有效果. 方法一: 如果你安装的是phpstudy这个集成环境,那么 1.你就要去php拓展里面去打开php_opemssl中打开这个扩展. 2.去p ...

  10. Vue学习笔记Day2

    1.mustache语法 如何将data中的文本数据插入到HTML中? 通过使用mustache语法(也就是双大括号),将data中的变量名插入到HTML元素中,显示在页面上. 如下图:并且数据是响应 ...