野菜部落物理引擎实现
来源:互联网 发布:c语言计算圆面积 编辑:程序博客网 时间:2024/04/29 22:09
概述
这回我们主要讲一下物理引擎在我们的游戏中的使用,主要是实现游戏的主要逻辑
cocos物理引擎的自我见解
cocos游戏引擎结合了Box2d物理引擎,所以它本身也支持物理引擎,,我们没必要单独引入box2d,只用cocos自带的引擎就能实现这个游戏
物理引擎的创建的大致步骤是这样的,首先是物理世界的创建,然后在物理世界里面有一种东西叫做“刚体”所谓刚体就是我们在现实世界里面遇到的一般物体,我们在物理世界里面可以设置刚体在x、y轴方向的距离来当做重力加速度,当然也可以设置摩擦力和重量、是否具有弹性等因素,具体的方法在开发者文档里面讲述得很清楚,这里就不做赘述了
野菜部落里面的物理引擎
有了上面的知识我们第一步就是创建物理世界
Scene* OfflineModeScene::createScene(){Scene * scene = Scene::createWithPhysics();// scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);//调试使用,请在产品发布前删去该行OfflineModeScene * layer = OfflineModeScene::create();layer->setPhyWorld(scene->getPhysicsWorld());scene->addChild(layer);scene->getPhysicsWorld()->setGravity(Vect(0.0f,0.0f));scene->getPhysicsWorld()->setAutoStep(false); //解决刚体速度过快导致的穿透问题return scene;}
其中调试使用那行是起到可以看到我们的body的样式方便调试的,具体可以看开发者文档,很有用的一个方法,笔者也是从开发者文档里学来的
问题一:重力加速度问题
别人的重力加速度都设置的平行于屏幕,所以很简单,但是我们的要垂直于屏幕向里,怎么办?
我们会思考到:为什么一定要有加速度呢?是的,我们的棋子又不会调到屏幕里面去,但是问题来了,棋子在碰撞的时候要有一个模仿摩擦力的过程——他会慢慢停下来,这个没有重力就没法有摩擦力(物理知识大家都懂得)幸好cocos给我们安排了一个特殊的API :setLinearDamping(3.5f); //设置线性阻尼
是的!可以设置线性阻尼!
问题二:固定障碍物的问题
我们看到游戏的棋盘中央有俩个固定的障碍物,棋子碰到障碍物会反弹回来,那么问题又来了,障碍物应该也是个刚体,刚体碰撞后会有相应的速度,也就是说障碍物会被弹飞!飞!那么怎么办呢??有人会说把线性阻尼加到最大,重力算到最大!!我最开始也是这么做的,这么做也是正确的,障碍物是不会飞了,但是它会在原地转啊转...转...这里就要用到一个方法
setRotationEnable(false); //设置刚体不可转动
这样就好了,下面贴出障碍物的源代码
/*初始化障碍物*/Sprite *bar1 = Sprite::create("Bar.png");auto Bar1 = PhysicsBody::createBox(bar1->getContentSize());//设置物理世界中的实体Bar1->setDynamic(true); //设置为静态的刚体,不受重力影响Bar1->setMass(9999999999999999999); //设置刚体不可动Bar1->setRotationEnable(false); //设置刚体不可转动Bar1->getShape(0)->setRestitution(1.0f); //设置刚体完全反弹Bar1->setCategoryBitmask(1);Bar1->setCollisionBitmask(1);Bar1->setContactTestBitmask(1);bar1->setPhysicsBody(Bar1); //将刚体与精灵绑定bar1->setPosition(220,319); bar1->setTag(101);addChild(bar1,1);
尾声
啊啊啊,不好,背单词的时间到了,不好意思了,明天会继续向大家展示物理引擎部分,主要是碰撞检测等问题
0 0
- 野菜部落物理引擎实现
- Unity 物理引擎实现匀速圆周运动
- 利用cocos2d来发野菜部落的空雅强力弹棋
- 物理引擎?
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 物理引擎
- 展示一下用Hovok物理引擎实现的角色控制系统
- 展示一下用Hovok物理引擎实现的角色控制系统
- hdu 1316 How Many Fibs?
- Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃
- 浅谈动态注册JNI方法
- zoj 1203 Swordfish
- CS模式下的客户端的注册登录查询
- 野菜部落物理引擎实现
- Markdown绘制流程图的方法
- coco2dx新建项目报错,ld: -pie can only be used when targeting iOS 4.2 or later clang: error: linker command
- 集训 08/12题解
- CodeForces-556A Case of the Zeros and Ones
- 求回文数
- 对于session和cookie的理解
- 拓扑排序 HDU 3342 Legal or Not
- 对于0基础的我来说,学了越久越发现基础才是最难懂的,记下来以后看