博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【IOS-COCOS2D游戏开发之十一】使用BOX2D物理系统以及在COCOS2D框架添加BOX2D物理系统LIB包的方法...
阅读量:6681 次
发布时间:2019-06-25

本文共 7723 字,大约阅读时间需要 25 分钟。

本站文章均为 
 原创,转载务必在明显处注明: 

转载自【黑米GameDev街区】 原文链接: 

上一节讲述了粒子的相关问题,当然啦,不示弱,今天继续将物理系统给大家进行简单的介绍和讲述;

首先先介绍,如何在cocos2d中加入box2d开发lib包,因为一般使用cocos2d引擎进行开发游戏时,大家创建项目都会选用cocos2d框架,而不是直接采用物理系统的cocos2d框架,但是后期忽然需要在项目中使用物理系统(这种情况很经常发生,至于为什么,童鞋们都懂得~),OK,首先创建一个普通的cocos2d项目;

OK,加入box2d->lib步骤如下:

1. 首先将box2d的lib包拷贝到刚创建的项目下,然后右键项目的libs文件夹进行导入项目中;(如果你没有box2d的lib包,那就新建一个cocos2d-box2d的项目就有了)

2.双击你的项目名默认打开配置信息窗口,点击Build Settings标签,然后在页面中找到”Search Paths“一栏,然后在“User Header Search Paths”中添加“xx/libs”;这里的XX是你的项目名称;紧接着在“User Header Search Paths”一项的上面设置“Always Serch Paths”的选项 为YES,默认为NO;这里务必要设置;

3.最后commadn+B (我用的xcode For lion)编译项目代码,如果提示编译成功,OK,可以使用啦;

下面我来给大家简单的介绍以下如何在cocos2d中使用Box2d物理系统,虽然关于Box2d的相关资料和教程很少,但是这里我也不会很详细的介绍和解释,因为我即将上市的Android游戏开发书籍中已经对Box2d进行了很详细的讲解和两个物理小游戏实战,所以这里就大概的介绍下一些重要的方法;

便于讲解,这里我直接使用Xcode直接创建一个cocos2d-Box2d的项目,然后简单的修改:

这里我只是对重要的方法进行的说明,主要修改的一点地方在备注1这里,我这里对每次玩家触摸屏幕的地方创建的刚体都进行施加了一个力,让刚体进行运动,那么这个运动的轨迹也会根据你设置的物理世界的重力方向发生改变,当前项目中,重力方向垂直下落,没有X轴的变化;

还要注意一点,由于box2d是c++代码,那么如果你使用box2d的话,首先把你的Delegate.m的类改成Delegate.mm,还有你使用box2d相关代码的实现类(.m)格式的类要改成(.mm)格式才可,这样编译器就会知道是混合代码,否则都当成object-c进行编译就会报错;

运行截图如下:

从图中可以看出,在icon图的周围包围着线段,这个就是Box2d提供的调试绘制,将本无形的刚体绘制出来了;

这里我不得不说一些童鞋,例如之前我写过Android上的一个自己随手的物理系统小球的例子,我在博文中写了要触屏才创建小球,但是很多童鞋问我项目运行起来没效果有问题,我就崩溃了。。。你们让我情何以堪

源码本想上传,但是发现一点击上传资源就悲剧打不开网页,大家可以直接创建一个cocos2d-box2d的项目,然后将HelloWorldLayer.mm中代码换成我上面的代码即可~

 

你可能感兴趣的文章
(转)android UI进阶之实现listview的分页加载
查看>>
surfaceView和View最本质的区别
查看>>
[[有声畅销书.与成功有约]读书笔记
查看>>
freeswitch与外部网关链接
查看>>
[Z]K.I.S.S.Random Genrator “保持简单”随机数发生器
查看>>
TWELP™ Vocoder
查看>>
CentOS查看CPU、内存、网络流量和磁盘 I/O
查看>>
《JAVA与模式》之有感
查看>>
js中substr与substring的差别
查看>>
【GK101 谐波数据生成器】上位机软件升级(版本:1.1)
查看>>
HTML5-WebSocket技术学习(2)
查看>>
免费的天气预报API--谷歌,雅虎,中央气象台
查看>>
[寻路][导航][算法][地图开发]寻路算法的对比优势1
查看>>
CMMI 3级精简并行过程综述
查看>>
关于new/delete、malloc/free的内存泄漏检测
查看>>
上传文件时的后台处理
查看>>
详解动态规划01背包问题--JavaScript实现
查看>>
图片懒加载
查看>>
房价网是怎么使用分布式作业框架elastic-job
查看>>
objc-msgSend的作用
查看>>