P2.JS之触碰材质(ContactMaterial)备忘

关键代码:

 1 boxShape.material = new p2.Material();
 2 platformShape.material = new p2.Material();
 3
 4 var material = new p2.ContactMaterial(boxShape.material, platformShape.material, {
 5     surfaceVelocity: -50,
 6     restitution: 0.5,
 7     friction: 0.3,
 8     stiffness: 1e7
 9 });
10 world.addContactMaterial(material);

像很普遍的弹跳效果就需要用到这个组件了。

这段代码的效果其实就是方块自由落体到挡板上,有轻微反弹效果,并且有向右的速度。

根据我试验的结果,不管是boxShape还是platformShape作为bodyA,当surfaceVelocity小于0时,方块向右移动,大于0时,自然向左。

restitution为反弹力属性,默认值1。friction是摩擦力,默认值0.3。stiffness是刚度属性,默认值1e7。

这个ContactMaterial类,还有其它的属性,不过没试出效果来,就没写到例子上去了,分别是:

relaxation,Relaxation of the resulting ContactEquation that this ContactMaterial generate

frictionStiffness,Stiffness of the resulting FrictionEquation that this ContactMaterial generate

frictionRelaxation,Relaxation of the resulting FrictionEquation that this ContactMaterial generate

contactSkinSize,Offset to be set on ContactEquations. A positive value will make the bodies penetrate more into each other. Can be useful in scenes where contacts need to be more persistent, for example when stacking. Aka "cure for nervous contacts".

实在也不知道怎么翻译,就直接贴上来当作备忘吧。

练习的源码地址:https://gist.github.com/yxzblue/3a66babfb93b889f0833#file-contactmaterial-html

p2.js v0.6.0 的压缩包,链接:http://pan.baidu.com/s/1mgsW7xA 密码:bj85

p2.js 的Github地址:https://github.com/schteppe/p2.js

时间: 2024-08-05 02:50:52

P2.JS之触碰材质(ContactMaterial)备忘的相关文章

P2.JS之距离约束(DistanceConstraint)备忘

关键代码: 1 //以下是地面和墙壁的代码 2 //下 3 var body = new p2.Body({ mass: 0, position: [0, -5]}); 4 var shape = new p2.Plane(); 5 body.addShape(shape); 6 world.addBody(body); 7 8 //右 9 body = new p2.Body({ angle: Math.PI / 2, mass: 0, position: [10, 0]}); 10 body

P2.JS之旋转约束(RevoluteConstraint)备忘

作用:物体可以绕着所设置的锚点作旋转运动.用途:车轮. 先上段代码: 1 var r1 = new p2.RevoluteConstraint (holderBody, circleBody, { 2 worldPivot : [0, 5] 3 //localPivotA: [1, -1], 4 //localPivotB: [0, 0] 5 }); 6 r1.enableMotor() ; 7 r1.setMotorSpeed( 5); 8 world.addConstraint(r1) ;

P2.JS之移动约束(PrismaticConstraint)备忘

PrismaticConstraint,叫做活塞约束比较好理解,因为,被它约束的物体只能在单一方向作运动. 先上段关键代码: 1 var p1 = new p2.PrismaticConstraint (holderBody, circleBody, { 2 localAnchorA : [1, -0.5] , 3 localAnchorB : [0, 0], 4 localAxisA : [0, 1], 5 disableRotationalLock : false 6 }); 7 p1.se

P2.JS之线性弹簧(LinearSpring)备忘

先上段关键代码: 1 var s1 = new p2.LinearSpring(holderBody, circleBody, { 2 localAnchorA: [0, 0], 3 localAnchorB: [0, 0], 4 stiffness: 100, 5 damping: 1, 6 restLength: 1.5 7 }); 8 world.addSpring(s1); 效果图: 这里localAnchorA, localAnchorB的概念仍旧是相对于各自物体内的坐标,当为[0,0

触碰jQuery:AJAX异步详解

触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和XHTML来表示. 2)   使用DOM模型来交互和动态显示. 3)   使用XMLHttpRequest来和服务器进行异步通信. 4)   使用javascript来绑定和调用.

js手机触屏轮播效果

以前自己用纯js写的,找了N就都没找到,还是从同事哪里重新拿过来的,仅是备忘,看过新浪新闻的手机触屏端后,自己写了个效果,比新浪的省代码多了 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Cache-Control&

触碰jQuery:AJAX异步详解(转)

AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和XHTML来表示. 2)   使用DOM模型来交互和动态显示. 3)   使用XMLHttpRequest来和服务器进行异步通信. 4)   使用javascript来绑定和调用. 通过AJAX异步技术,可以在客户端脚本与web服务器交互数据的过程中使用XMLHttpRequest对象来完成HTTP请

移动端点击、触碰

这篇文章将会阐述以下问题 延迟的click 拥抱tap 一次触碰 阻止它们!!!preventDefault还是stopPropagtion 模拟事件是什么鬼 事故现场 延迟 点穿(包含angular的ng-click) 焦点获取 分析Yocto,zepto,fastclick带来的思考 zepto -- 万恶的tap fastclick -- “完美” Yocto -- “后zepto时代替代者” 让我们开始吧! 迟到的click “移动端最好用tap,click是有延迟的...” 开始写移动

android触碰消息传递机制

前阵子要的工作是给桌面(Launcher启动器,其实也是一个activity)添加一个触摸特效(一个View),而这个特效是每次触碰都会有,不管你在桌面上做什么操作都会显示特效!之前一直摸索着不知道如何入手,后来慢慢的实验之后才知道有个android触碰消息传递机制.自己摸索的确很慢,要是早点知道这个机制那将会事半功倍. 用户的每次触碰(onClick,onLongClick,onScroll,etc.)都是由一个ACTION_DOWN+n个ACTION_MOVE+1个ACTION_UP组成的,