cocos creator的box2d

本来是打算和前面一篇混在一起的,后来想了下,两个完全不相干的主题,放在一起不好,而且既然我的文章产出率这么低,不如拆成2篇,混一混更新频率……

首先就是,cocos creator在1.5的版本加入的box2d。

然后,我试着把跑酷游戏切换到box2d版本,效果感觉很糟,由于一些原因,图片先不放了。

后来又折腾了几天,打算把boo转为box2d试试。

不过,这里面坑太深了,按照官方的文档,及示例,看的云里雾里。

首先,你要了解box2d的机制,其次,你要了解cocos对box2d进行加工的逻辑……

本身camera就是一个简单的节点移动,很多用户大概要的是类似一个view框的东西。后来一看解释,官方的camera依然是节点移动。『那要你何用?』于是继续之前自己写的camera。

最后,我才明白,为什么box2d和camera组件是一起上的。

因为box2d的坐标系和cocos不一样……节点捆绑的逻辑也不同……

在cocos creator里制作box2d的组件还挺简单的:

在节点里,原先添加碰撞组件的地方,改成物理就好了。

其他的参数去官网查下,试了下,基本上就用Dynamic和Static就行了。

另外需要碰撞前开启下

var physicsManager = cc.director.getPhysicsManager();

physicsManager.enabled = true;

box2d里的重力默认是320/s

不需要重力或者想要修改这个值的话,设置

physicsManager.gravity = cc.v2();

另外,碰撞框的调试,只要开启这项就够了,其他的自己看情况改吧:

physicsManager.debugDrawFlags =

// 0;

// cc.PhysicsManager.DrawBits.e_aabbBit |

// cc.PhysicsManager.DrawBits.e_pairBit |

// cc.PhysicsManager.DrawBits.e_centerOfMassBit |

// cc.PhysicsManager.DrawBits.e_jointBit |

cc.PhysicsManager.DrawBits.e_shapeBit

;

想要鼠标拖拽效果的:

this.addComponent(cc.MouseJoint);

因为box2d是套完整的物理引擎,所以,基本上这些填好,然后在creator里把对应的物理组件加上,就可以了,没什么代码要写的。

当然,之后有其他的效果实现还是需要代码。不过省了自己写物理效果的一大段js。

另外,camera要配套使用,box2d里的物理刚体是不会随着父节点移动的。同时上线的camera里帮忙转换了坐标。用法:

在一个空节点下添加camera组件

camera里想要移动的节点填在targets里,然后自己再额外写个脚本,视角锁定在主角身上,就是脚本里的target:dolo……

话说这个都什么玩意……

总之不这么做的话,你自己就要自己去转换坐标,蛋疼。

另外官方对于targets和target的层级似乎有要求,他们需要在同一层级,但是我试了一下,把主角放在targets节点里,可以正常运行,放在外面不行。

最后放个demo吧,其实还是在犹豫用box2d还是自己之前写的那套物理规则。

『柯南』里有句台词:

『人们不是常说,祭典前的准备工作,比祭典本身更快乐吗?』

因为在准备祭典的时候,可以和伙伴一起探讨,对未来的祭典举行充满期待,抱有希望是件很好的事。

然而我现在一点都没有感觉快乐,大概是因为没法开展祭典吧,也就是说现在的快乐值是5,而真正开始祭典的时候,快乐值是3,所以祭典之前比较快乐…………

原文链接放box2d版的。http://ccx01.com/game/dolo_box2d/

之前一版 http://ccx01.com/game/boov3/

原文发布于微信公众号 - Sign(SignACG)

原文发表时间:2017-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SEO

「知识」你不知道的百度网页分块权重评估方法

29460
来自专栏织云平台团队的专栏

H5前端监控实践

为了便捷的衡量 H5 页面的速度、质量,高效定位问题,给用户提供更优质的服务。我们建设了自己的 H5 前端监控——天网云 ilook。

2.1K10
来自专栏阮一峰的网络日志

为什么寄存器比内存快?

计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 ? 同样都是晶体管存储设备,为什么寄存器比内...

36370
来自专栏阮一峰的网络日志

谈谈MVC模式

1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。 MVC模式就是架构模式的一...

33850
来自专栏陈树义

【超实用】面对枯燥的源码,如何才能坚持看下去?

一个软件开发人员,工作到了一定的年限(一般是3、4年左右),如果他还没学会阅读源码,那么他就会遇到瓶颈。因为到了这个时候的开发,他应该不仅仅只会做那些 CURD...

17650
来自专栏IT派

谈谈 MVC 模式

如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。

12300
来自专栏魏琼东

AgileEAS.NET平台开发实例-药店系统-快速的SAAS开发体验

一、AgileEAS.NET应用开发简介 在4月份,callhot写过一系列的有关于AgileEAS.NET平台的开发应用的系列AgileEAS.NET平台开发...

28260
来自专栏雪胖纸的玩蛇日常

老男孩Python全栈开发(92天全)视频教程 自学笔记02

32240
来自专栏Python攻城狮

GitHub 系列之「怎样使用 GitHub?」1.写在前边的话,为什么要写CitHub?2.GitHub 是什么?3.注册 GitHub

跟朋友在交流的时候听到求职的时候发现有些公司要附Github帐号,一个优秀的 GitHub 账号当然能让你增色不少。自己之前听说过,但没有花时间研究,最后花了时...

14130
来自专栏资深Tester

记线上bug分析

24130

扫码关注云+社区

领取腾讯云代金券