在这篇文章中,我们将带领您了解cocos2d-xc++使用误区记录的全貌,包括cocos能用c++吗的相关情况。同时,我们还将为您介绍有关Bullet(Cocos2dx)之使用cocos2dx测试Ph
在这篇文章中,我们将带领您了解cocos2d-x c++使用误区记录的全貌,包括cocos能用c++吗的相关情况。同时,我们还将为您介绍有关Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D、Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持、Cocos2d 卡牌塔防 游戏 cocos2d-x游戏开发之旅 第14 15 16 章 源代码调试 注意点 出现无法打开包括文件:“cocos2d.h”: No such file or direct、cocos2d-iphone – Cocos2d Box2d或Chipmunk的知识,以帮助您更好地理解这个主题。
本文目录一览:- cocos2d-x c++使用误区记录(cocos能用c++吗)
- Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持
- Cocos2d 卡牌塔防 游戏 cocos2d-x游戏开发之旅 第14 15 16 章 源代码调试 注意点 出现无法打开包括文件:“cocos2d.h”: No such file or direct
- cocos2d-iphone – Cocos2d Box2d或Chipmunk
cocos2d-x c++使用误区记录(cocos能用c++吗)
1.类当中的指针成员变量在初始化接收值时,不能直接把外部的一个值的地址简单赋值给该成员变量,应该使用new操作符来初始化。外部的值随时可能被释放掉。
eg:
class A { public: A(); std::string* str; }; A::A() { str = String::create("abc")->getCString();//错误(String是cocos2dx里面的字符串格式刷函数) str = new std::string("abc");//正确 }
Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D
1.使用 Cocos 引擎建立工程,打开 cocosstudio 修改分辨率为 960*640 ,删掉背景图片 发布到vs 工程 1.打开 AppDelegate 设置分辨率,并运行 director-getOpenGLView()-setDesignResolutionSize(960,640, ResolutionPolicy :: EXACT_FIT ); 2.配置Bullet(win
1.使用cocos引擎建立工程,打开cocos studio 修改分辨率为960*640,删掉背景图片
发布到vs工程
1.打开AppDelegate设置分辨率,并运行
director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::EXACT_FIT);
2.配置Bullet(win32)到cocos2dx
首先要将bullet3-master的头文件复制到cocos\frameworks\cocos2d-x\external\Bullet;具体方法请看
如下图Bullet3之交叉编译Android 复制头文件
4.将编译好的Bullet库(win32)release库复制到
Cocos\frameworks\cocos2d-x\prebuilt\win32下分别更名为
BulletCollision_vs2012.lib
BulletDynamics_vs2012.lib
BulletSoftBody_vs2012.lib
LinearMath_vs2012.lib
如何得到Bullet库,这个就要去看Bullet3之Hello World(vs2012)补充如何生成Bullet库
5.打开刚才生成的项目的属性,选择链接器->输入->附加依赖项,输入生成的Bullet库,如图
将PhysicsWorld3D类复制到classes/physics3d并添加到工程中,编译运行,成功表明配置成功,
有可能会出现error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”
将Bullet生成时的c/c++->代码生成->运行库,改为MD
5.测试PhysicsWorld3D
在HelloWorldScene.h添加
#include "physics3d/PhysicsWorld3D.h" public: void onExit(); void update(float delta); private: bool initPhysics3D(); // 初始化物理世界 bool initCamera(); // 初始化摄像机 private: PhysicsWorld3D* _world; // 3d 物理世界 btRigidBody* _box; // 盒子 cocos2d::Sprite3D* _spBox; // 盒子模型 cocos2d::Camera* _camera; // 摄像机
在HelloWorld::init()
先初始化摄像机,再初始化物理世界,
关于初始化物理世界,首先创建,然后添加一个地面,再添加一个box作为测试用
bool HelloWorld::initPhysics3D() { _world = PhysicsWorld3D::create(); // 创建3d物理世界 if (_world == nullptr) { return false; } // 载入plane模型 auto spPlane = Sprite3D::create("model/ground.c3b"); this->addChild(spPlane); spPlane->setPosition3D(Vec3::ZERO); // add a plane 方向向上,位置(0,0,0), 0.5的摩擦,0.5的弹性 _world->addPlane(btVector3(0, 1, 0), btVector3(0, 0, 0), PhysicsMaterial3D(0, 0.5, 0.5, 0)); // 载入盒子模型 _spBox = Sprite3D::create("model/box.c3b"); this->addChild(_spBox); _spBox->setPosition3D(Vec3(0, 20, 0)); // add a box _box = _world->addBox(btVector3(1, 1, 1), btVector3(0, 20, 0)); _box->setUserPointer(_spBox); // 设置2摄像机可见 this->setCameraMask(2); return true; }
每一帧去更新物理世界,同时更新box的位置,当然可以使用MotionState去优化,这个不着急
void HelloWorld::update(float delta) { static float m[16]; _world->update(delta); auto trans = _box->getWorldTransform(); // 获取box的变换矩阵 trans.getOpenGLMatrix(m); _spBox->setNodeToParentTransform(Mat4(m)); // 设置box模型的变换矩阵,但是getPosition3D不会得到正确位置,这个以后讨论 }
当HelloWorld退出时要销毁物理世界
void HelloWorld::onExit() { Layer::onExit(); _world->destroy(); // 销毁物理世界 _world = nullptr; }
当运行程序,会看到一个box从天而降,重重的摔在地上
源代码及其资源下载
Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!
高清显示和Cocos2D
好吧,有一个好消息 — 在最新版本的Cocos2D中包括了高清屏的完整支持,你可以用下面1-2-3步就可简单搞定!
- 在调用CCDirector的enableRetinadisplay方法在app开始时启用高清支持.如果你使用cocos2D项目模板,你只需要在app delegate中在那一行去掉注释即可.
- 增加高清精灵到你的app中,但是不是使用”@2x”后缀,而是为cocos2D使用”-hd”后缀.当你加载精灵的时候,在普通屏将使用普通图片,在高清屏Cocos2D将在高清屏自动为你加载高清图片.
- 现在你可以在Cocos2D中使用点来代替像素来定位了.注意一些APIs(但不是很多)任然必须以像素处理 — 当在这种情况下,它们的名称中将带有像素字眼,否则一律一点来处理.
在一般情况下,最容易的事是制作一张最高分辨率的图片(比如高清屏下的2X大小),然后你可以简单缩小图片到普通的iphone适用的尺寸上.
你可能会奇怪为什么要劳神创建两张不同的图片 — 为什么不总是调用一张大的图片然后用编程将其缩小呢?好吧,加载纹理到内存中是app的内存克星,所以如果你在普清屏上加载高清图片将会浪费大量的内存.
但是别担心 — 你不需要总是在Photoshop中缩放图片.TexturePacker实际上已经有了缩放给定图片的特性,它正好被用在我们的Cocos2D之旅上.
iPad,iPhone以及屏幕纵横比
以上使得我们在高清屏中的处理更加容易,但是在iPad中怎么办?
好吧,这将给我们带来一个非常烦人的问题:如何使其在iphone和ipad上都能正常工作 — 比较这些设备的屏幕纵横比不一样!
iPhone的分辨率为480x320活着960x640 — 纵横比为1.5,而ipad分辨率为768x1024(原作者写作时高清ipad还未出世.猫猪注),纵横比为1.33.
这意味着如果你将一张在ipad(768x1024)填充整个背景的图片在iphone上重新使用的时候,可能不会完全适配.如果你按iphone的宽度来缩小图片(乘以0.9375),你将得到720x960,所以额外的部分将会被裁剪掉!
这很让人讨厌,因为不光是背景图片,屏幕纵横比问题也使得跨设备兼容难上加难.
这里有一些解决方案,这里列出一些(你可以在评论中也将你自己的解决方案贴出来):
- 在高清屏iPhone(640x960)屏幕中心划出一片”可玩区域(playable area).这将在边框附加有稍许额外的超出 — 你可以用背景将其掩盖,玩家可能甚至不会注意到.这将允许你容易的在各种不同的设备上重用素材和转换坐标.我们在本系列博文中就是用这种方法.
- 你可以在iphone上使用类似纵横比,如果你在ipad屏幕上将”main content”限制在684x1024中的话,这将给你的ipad屏幕每条边带来42像素的边框.如果你能调整内容适应684x1024矩形,你也可以为其他设备缩小图片.
- 你可以为iPhone,iPad和高清屏设备准备不同的图片,它们的坐标系也不同.这将具有最大的弹性,但是也会增大app文件的尺寸
对于这些难题 — Cocos2D目前并没有任何帮助方法在ipad上自动为你加载”-hd”后缀的图片(新版本的Cocos2D已经可以为ipad选择合适的图片了.猫猪注),以及转换坐标系等等工作.一切都取决于你!
Cocos2d 卡牌塔防 游戏 cocos2d-x游戏开发之旅 第14 15 16 章 源代码调试 注意点 出现无法打开包括文件:“cocos2d.h”: No such file or direct
Cocos2d 卡牌塔防 游戏 cocos2d-x游戏开发之旅 第14 15 16 章 源代码调试 注意点
出现无法打开包括文件:“cocos2d.h”: No such file or directory
第一步:把书中源代码文件夹拷贝到以下目录。
打开此文件夹后,显示如下:
用VS2012打开proj.win32里边的Chapter16_2_CardDefence08.win32.vcxproj,按下图打开:
第二步:在附加包含目录中,添加如下代码:
如果出现fatalerror C1083: 无法打开包括文件:“cocos2d.h”:No such file or directory
解决方法如下:选择项目属性--》C/C++--》附件包含目录设置为:
复制:$(ProjectDir)..\..\..\cocos2dx;$(ProjectDir)..\..\..\cocos2dx\include;$(ProjectDir)..\..\..\cocos2dx\kazmath\include;$(ProjectDir)..\..\..\cocos2dx\platform\win32;$(ProjectDir)..\..\..\cocos2dx\platform\third_party\win32\OGLES;..\Classes;%(AdditionalIncludeDirectories);
同时注意把E:\cocos2d-x-2.2.3\extensions
E:\cocos2d-x-2.2.3\cocosDenshion\android
E:\ cocos2d-x-2.2.3\cocos2dx\platform\third_party\win32\libraries
加到C/C++--》附件包含目录中去。
第三步:把E:\cocos2d-x-2.2.3\Debug.win32下的所有lib文件和dll文件拷贝至自己项目的Debug.win32下面。
最终运行成功画面如下:
cocos2d-iphone – Cocos2d Box2d或Chipmunk
这是Cocos2d:http://www.cocos2d-iphone.org/的网站
下载:http://www.cocos2d-iphone.org/download
今天关于cocos2d-x c++使用误区记录和cocos能用c++吗的介绍到此结束,谢谢您的阅读,有关Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D、Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持、Cocos2d 卡牌塔防 游戏 cocos2d-x游戏开发之旅 第14 15 16 章 源代码调试 注意点 出现无法打开包括文件:“cocos2d.h”: No such file or direct、cocos2d-iphone – Cocos2d Box2d或Chipmunk等更多相关知识的信息可以在本站进行查询。
本文标签: