开始前简单说下其他几款js物理引擎

box2d老牌,功能全面,但是效率低下,移动端基不用考虑的

matterjs  效率目前我测试下来最高,但是依然还在开发中(好像还很缓慢),目前功能局限,而且有bug。(本来项目打算使用,结果局限和bug导致放弃)

p2js 移动端推荐使用 (常规体量在目前手机大多数上应用没有问题)

作者github:    https://github.com/schteppe

阅读此文需要一定的基础知识,这里只讲p2.js 与 createjs 的组合应用

坐标系:

  p2.js与createjs 的x轴是一致的。y轴是相反的

 

注册点:  

  createjs默认在目标bound的左上角

  p2.js默认在目标bound的中心

相关属性转换

  createjs.rotation = -p2.angle * 180 / Math.PI;

  createjs.x= p2.Body.position[0];

  createjs.y= -p2.Body.position[1];

使用createjs的movieclip、sprite、img贴图渲染

  p2js的一大特点就是最基本的库里并没有集成贴图渲染的相关api,一开始觉得很不习惯,使用后觉得真心好用,能满足很多特殊情况           

  例如:1 由于模型原因,我们贴图需要稍大于模型,这样才能在渲染时没有缝隙。

     2 动态刷新贴图(例如我们直接使用createjs的movieclip,多方便)  

  其实就是把p2的坐标,角度对应的绑定给createjs的元件来显示。  

var arrDataShow=[]; //数组管理对应关系

//建createjs元件
var _m=new createjs.MovieClip()
//建p2刚体
var _p2= new p2.Body(
{
mass: 1,
position: [0, 0],
angle:0.1,
allowSleep : false
})
world.addBody(_p2); arrDataShow.push({data:_p2,show:_m,type:""});//数组管理对应关系 //渲染
stage.addEventListener("tick",function(e)
{
world.step(1 / 10); //createjs fps 与 p2 word的step 对应关系 自行摸索
for (var i = 0; i < arrDataShow.length; i++)
{
var type = arrDataShow[i].type;
var data = arrDataShow[i].data;
var show = arrDataShow[i].show;
//
show.x = data.position[0];
show.y = -data.position[1];
show.rotation = -data.angle * 180 / Math.PI;
}
})

 

至于不规则图形,如何在p2中建立刚体官方demo里面也有

注意:

因为不规则所以刚体的重心并不会在bound的中心,所以需要进一步解决这个问题(项目时间原因,暂时还未想到好的办法,待更新)

到此 两者的组合应用 算是基本清了!

p2.js 与 createjs 的组合应用的更多相关文章

  1. JS二维数组排序组合

    需求是这样的:http://q.cnblogs.com/q/29093/ 这里简述一下: 现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai&qu ...

  2. p2.js物理引擎学习

    P2简介 P2是一款基于Javascript编写的HTML5 2D物理引擎,和Box2D.Nape等2D物理引擎一样,P2集成了各种复杂的物理公式和算法,可以帮助我们轻松的实现碰撞.反弹等物理现象的模 ...

  3. js中的寄生组合继承

    function inheritProperty(subType, superType) { function F(){} F.prototype = superType.prototype; sup ...

  4. JS监听键盘的组合按键

    Mark 一下: $(document).keydown(function (e) { console.log(e); var keyCode = e.keyCode || e.which || e. ...

  5. 【一统江湖的大前端(8)】matter.js 经典物理

    目录 [一统江湖的大前端(8)]matter.js 经典物理 一.经典力学回顾 二. 仿真的实现原理 2.1 基本动力学模拟 2.2 碰撞模拟 三. 物理引擎matter.js 3.1 <愤怒的 ...

  6. 前端UI框架和JS类库

    一.前端框架库: 1.Zepto.js 地址:http://www.css88.com/doc/zeptojs/ 描述:Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jqu ...

  7. P2物理引擎中文文档

    P2物理引擎中文文档地址:https://github.com/schteppe/p2.js/wiki/Chinese-wiki-%E4%B8%AD%E6%96%87%E7%BB%B4%E5%9F%B ...

  8. 【干货】Jquery.Datables与Bootstrap3的组合使用

    官方地址 datatables官方网址:www.datatables.net 下载bootstrap3与datables文件包 引用文件 css:bootstrap.css.dataTables.bo ...

  9. GSAP JS基础教程--认识GSAP JS

    第一次写博文呢,这次写博客是因为应一位同学的要求,写一下GSAP JS的一个小教程.为什么说小呢?因为它实际上就是小,只是一个入门级的小教程.如果你想问:“那你为什么不写详细一点呢?”,我想说,说., ...

随机推荐

  1. C++ sizeof 运算符

    sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小. sizeof 运算符可用于获取类.结构.共用体和其他用户自定义数据类型的大小. 使用 sizeof 的语法如下: ...

  2. 算法笔记4.3递归 问题 B: 数列

    题目描述 编写一个求斐波那契数列的递归函数,输入n 值,使用该递归函数,输出如下图形(参见样例). 输入 输入第一行为样例数m,接下来有m行每行一个整数n,n不超过10. 输出 对应每个样例输出要求的 ...

  3. Bc-数组-Stack

    1.栈,堆栈,先进后出 2.栈的几个操作: > 入栈,push > 出栈,pop > 获取栈顶元素,peek > 获取栈中共有元素个数,getSize > 是否为空,is ...

  4. JS UTC 昨天

    var birthday = new Date("Jan 01, 1983 01:15:00") var formatDate = function (date) {       ...

  5. worship|spurs|drowns out|frauds|expell|spray with|deposit|moist|gave a sigh

    to have or show a strong feeling of respect and admiration for God or a god 敬奉,崇拜,信仰(上帝或神) On the is ...

  6. String的compareTo用法

    String的compareTo其实就是依次比较两个字符串ASC码.如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值.如果两个字符串完全一样,则返回0.来看一下代码. publi ...

  7. labview线程相关

    两个结论.     1. 在 LabVIEW 上编写多线程程序非常方便,我们应该充分利用这个优势.一般情况下,编写程序时应当遵循这样的原则:可以同时运行的模块就并排摆放,千万不要用连线,顺序框等方式强 ...

  8. [LC] 92. Reverse Linked List II

    Reverse a linked list from position m to n. Do it in one-pass. Note: 1 ≤ m ≤ n ≤ length of list. Exa ...

  9. Eclipse中项目过大引起的 IDE 加载缓慢,JVM 内存不足的情况解决

    如果 IDE 加载项目非常缓慢,甚至常常出现卡死的情况,有可能是开发工具设置的 JVM 内存不够引起的.解决办法:找到 Eclipse 的安装目录,修改 Eclipse.ini 配置文件.修改此配置文 ...

  10. LeetCode Day 8

    LeetCode0015 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 例如, 给 ...