cocos2d-x

实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测

谁都会走 提交于 2019-11-30 12:48:53
在Box2D中碰撞事件通过实现b2ContactListener类函数实现,b2ContactListener是Box2D提供的抽象类,它的抽象函数: virtual void BeginContact(b2Contact* contact)。两个物体开始接触时会响应,但只调用一次。 virtual void EndContact(b2Contact* contact)。分离时响应。但只调用一次。 virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold)。持续接触时响应,它会被多次调用。 virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)。持续接触时响应,调用完preSolve后调用。 下面通过将12.2.3一节的实例采用Box2D技术重构,了解一下Box2d物理引擎中如何检测碰撞。 首先我们需要在工程中添加一个新类。使用Visual Studio 2012中添加一个新类,需要分别添加C++源文件和头文件。具体操作,如图所示,右键点击工程HelloBox2D下的Classes文件夹,在右键菜单中选择,“添加”→ “新项目”。弹出如后面的图所示添加新项对话框,我们在对话框中选择文件的种类,在“名称

Visual Studio 2012下Box2D开发环境设置

老子叫甜甜 提交于 2019-11-30 12:48:42
Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同。由于本书在此之前介绍的都是基于微软的Visual Studio 2012下开发的Win32平台,所以这一节我们介绍Visual Studio 2012下Box2D开发环境设置。 这些需要设置和调整的方面包括如下: 在解决方案中添加libBox2D库工程。 添加libBox2D库引用。 开启Box2D预编译开关。 1、在解决方案中添加libBox2D库 首先,打开解决方案,右键点击解决方案HelloBox2D,在右键菜单中选择,“添加”→ “现有项”,如图所示。 在解决方案中打开libBox2D工程 在弹出对话框中选择Box2D.vcxproj工程文件,具体的工程路径是“<工程目录>\cocos2d\external\Box2D\proj.win32\Box2D.vcxproj”。添加完成后,我们会看到解决方案中添加了libBox2D工程,如图所示。 添加libBox2D工程 2、添加libBox2D库引用 然后,我们在解决方案中右键点击工程HelloBox2D,在右键菜单中选择“属性”,弹出如图所示工程属性对话框,在属性对话框中选择“通用属性”→“框架和引用”,接着点击右边“添加新引用”按钮,在弹出对话框中选中

Getting and setting the RGB / RGBA value of a pixel in a CCSprite (cocos2d-x)

孤者浪人 提交于 2019-11-30 09:59:18
Why do I need this? Basically I need to turn a color image into gray-scale. Including a gray-scale version of the image could be a solution, but space is tight in my situation - I don't want my APK to be too big. Besides, I would like to work on the pixels for some effects too. Again, this is to make the APK smaller. I have found getPixel setPixel from CCTexture2D and Getting image's pixel RGBA , but I would like something more simple. Any help is appreciated. Thank you! Here is my solution for you : 1.First make a CCImage version of your image: I) from File : CCImage *img= new CCImage(); img-

cocos2d subclassing sprite to handle touch?

六眼飞鱼酱① 提交于 2019-11-30 08:52:46
问题 I'm new to the cocos2d(-x) world. I'd like to detect a touch to a sprite, and tutorials/examples seem to suggest using layer to detect touch and find the approapriate sprite with bounding box. Is subclassing sprite to allow touch detection generally a bad idea? 回答1: it is better and much more clear to handle touches in one place. but i think, no one can bar you to do this 回答2: Note: This answer might be outdated. I answered this at 2012. It is not a bad idea. Here is how I do it: header file:

Cocos2d-x-v3动作体系

霸气de小男生 提交于 2019-11-30 08:49:59
Cocos2d-x-v3动作体系 cocos2d-x-v3版本v2的版本有的很大的改动,最直观的是在一些函数的改动和类名的改动上,首先以CC开头的类,都不再使用CC。在我个人的理解上,原来的cocos2d-x是完全从iphone的框架cocos2d移植过来的,代码的风格和编程的思想都及类似于Object-C,除了语法是C++的外,其他就像是OC版的翻译,新的版本更好的体现了跨平台的特性,也更多的运用了C++的一些编码思想和语言特点,更易于各平台的开发者使用。这篇博客的主要内容,是总结cocos2d中行为动作的处理方法和相关函数。 一、瞬时动作 这类行为只能称为动作,不能称作动画,其执行是瞬时的,没有可是化的过程。 cocos2d中常用的瞬时动作有如下几种: FlipX:关于x轴做镜像变换。 FlipY:关于y轴做镜像变换。 Hide:隐藏。 Show:显示。 ToggleVisibility:切换隐藏和显示。 Place:将对象放置在某个位置。 二、延时动作 延时动作就是动画,将动作的过程展现出来,cocos2d引擎中的几种延时动作如下: 1. MoveTo:将对象移动到某一位置,是绝对位置,移动后不会记录对象的原始位置,动作不能进行反转。例如: auto action = MoveTo::create(2, Vec2(100, 100));//2S时间移动到(100,100)

cocos2d-x 游戏引擎入口

独自空忆成欢 提交于 2019-11-30 08:49:45
Cocos2d-x 是当前手游开发2d游戏最热门的引擎了,从知道Cocos2d-x到现在也有一年多的时间,但使用cocos2d-x的时间却是非常少的,以至于现在使用的时候都是一头雾水;所以现在打算 跟进一步的了解Cocos2d-x游戏引擎…… Cocos2d-x支持跨平台,而各种平台的实际应用入口是不相同的,为了寻找游戏引擎的入口,现用ios平台来说明; 注:我本非iOS开发者,对于iOS应用基本框架是不熟悉的,所以下面说的不会很详细,大概知道干吗的就可以了 打开3.0 版本的 cpp-empty-test, 在proj.ios目录下找到main.m,会发现有一个@"AppController";接下来在proj.ios目录下找到AppController.mm文件,有一个静态的AppDelegate对象;在application方法的最后 cocos2d::Application *app = cocos2d::Application::getInstance();查看Application类、AppDelegate类、ApplicationProtocol类的源代码后会发现,app是指向前面看到的AppDelegate静态对象的;跟踪app->run();调用,可以看到CCDirectorCaller类的startMainLoop方法中,会看到有一个selector:

Cocos2dx memory management, how to use destructors and when to release objects?

萝らか妹 提交于 2019-11-30 08:07:45
问题 I'm reading around the web and the documentation but to be honest, I don't get it. Since I'm new to cocos2d-x I would like to understand better how the objects are created/retained and what I'm supposed to do to release them (if required). The thing that confuses me is the usage of smart pointers that I don't know very well. Imagine that in my CCLayer (added to the CCScene) I add a CCSprite, so i do: this->sprite = CCSprite::create("mySprite.png"); this->addChild(sprite); then since I've used

Cocos移植到Android-Android.mk编译文件

笑着哭i 提交于 2019-11-30 06:15:37
我们在上一篇博客中年使用的cocos工具对于C和C++源代码进行编译。事实上cocos工具读取<游戏工程目录>\proj.android\jni\目录中的Android.mk文件,进行交叉编译和打包的。 Android.mk是一个编译文件,它是GNU Makefile的一小部分,是用来向Android NDK描述C和C++源代码文件的,如何进行编译,以及打包等操作。默认的Android.mk文件内容如下: [html] view plain copy LOCAL_PATH : = $(call my-dir) ① include $(CLEAR_VARS) ② LOCAL_MODULE : = cocos2dcpp_shared ③ LOCAL_MODULE_FILENAME : = libcocos2dcpp ④ LOCAL_SRC_FILES : = hellocpp /main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp ⑤ LOCAL_C_INCLUDES : = $(LOCAL_PATH)/../../Classes ⑥ LOCAL_WHOLE_STATIC_LIBRARIES : = cocos2dx_static ⑦ LOCAL_WHOLE_STATIC

Cocos移植到Android-使用Eclipse交叉编译打包

拜拜、爱过 提交于 2019-11-30 06:15:25
如果对命令行望而生畏,我们可以借助于安装有ADT插件的Eclipse工具实现交叉编译。 使用Eclipse进行交叉编译,首先需要将要编译的工程导入到Eclipse的Workspace中,Workspace是多个工程的集合。具体步骤是启动Eclipse后,选择菜单File→New→Project,弹出如图21-18所示的新建工程对话框,选择Android→Android Project from Existing Code。 新建工程对话框 在新建工程对话框中点击Next按钮,弹出如下图所示的导入工程对话框,点击Browse按钮,弹出后面所示的选择目录对话框,注意选择目录是:“<游戏工程路径>\proj.android”,在这个目录下有创建Eclipse的Android工程所需要的文件。 导入工程对话框 选择目录对话框 选择好目录后,点击确定按钮关闭对话框,回到导入工程对话框,如下图所示,在Root Directory已经有内容了。如果没有报错说明选择工程成功了。注意我们不要选中Copy projects into workspace选项。选择完成后点击Finish按钮。 选择工程成功 然而点击Finish后,Eclipse导入并编译工程,编译完成时候会发现有很多错误,如下图所示。经过研究不难发现引起这些错误的原因是,找不到Cocos2d-x在Android平台的Java类

Cocos2d-x android can't resolved coscos2dx library

泪湿孤枕 提交于 2019-11-30 05:18:35
i am starting by macOSX xcode4.5 . i tried to tutorials. Using cocos2dx, it completes building of macOSX, The problem occurred in android sources. No contents of cocos2dxActivity are described. so, org.cocos2dx.lib is not other files. android is not running. i use ndk-r8. What will be a problem? In cocos2d-x 2.0.3 ...Cocos2d-x Lib java files has been considered as a different project only So import that project in the eclipse Lets make it Simple First Import the project in eclipse from this path - cocos2d-2.0-x-2.0.3/cocos2dx/platform/android/java You will see libcocos2dx project in eclipse ..