开始前简单说下其他几款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. Linux基础篇九:用户管理

    查看当前用户的ID信息(也可以查看其他用户的ID信息) 每个进程都会有一个用户身份运行 cat /etc/passwd 账号的操作: useradd  (新建用户) 例题:   groupadd  s ...

  2. C. 小花梨判连通

    https://acm.ecnu.edu.cn/contest/173/problem/C/ 联通块染色,若i,j满足题目中的条件,那么他们在每幅图中的染色情况相同,即hash值相同 使用unsign ...

  3. PAT甲级——1065 A+B and C (64bit)

    1065 A+B and C (64bit) Given three integers A, B and C in [−2​63​​,2​63​​], you are supposed to tell ...

  4. 服务端向客户端推送消息技术之websocket的介绍

    websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现. 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: 当发送私信的时候,如果要 ...

  5. Docker系列七: 使用Humpback管理工具管理容器(一款UI管理工具)

    Humpback 可以帮助企业快速搭建轻量级的 Docker 容器云管理平台,若将你的 Docker 主机接入到 Humpback 平台中,就能够为你带来更快捷稳定的容器操作体验. 功能特点 Web操 ...

  6. EXAM-2018-7-29

    EXAM-2018-7-29 未完成 [ ] H [ ] A D 莫名TLE 不在循环里写strlen()就行了 F 相减特判 水题 J 模拟一下就可以发现规律,o(n) K 每个数加一减一不变,用m ...

  7. Ananconda常用指令

    Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项,可用于解决开发过程中遇到python版本需要切换的问题. conda有一点好处是,如 ...

  8. iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码

    iOS精选源码 TYCyclePagerView iOS上的一个无限循环轮播图组件 iOS高仿微信完整项目源码 想要更简单的推送消息,看本文就对了 ScrollView嵌套ScrolloView解决方 ...

  9. Memcached的批量删除方案总结

    Memcached的批量删除,向来是Memcached使用者很头疼的事情,因为Memcached采取的缓存方案是哈希表结构,所以没有办法实现delete from tablename where ke ...

  10. ReentrantLock(重入锁)的源码解析

    转自:从源码角度彻底理解ReentrantLock(重入锁)](https://www.cnblogs.com/takumicx/p/9402021.html)) 公平锁内部是FairSync,非公平 ...