【发布时间】:2014-11-18 16:25:32
【问题描述】:
我有这个简单的js:
Physics(function( world ){
//Defining object
var renderer = Physics.renderer('canvas', {
el: 'viewport', // id of the canvas element
width: 500,
height: 200
});
var ball = Physics.body('circle', {
x: 250,
y: 0,
radius:10,
restitution: .8,
mass: 3,
vx: 0
});
var box = Physics.body('rectangle',
{
x: 250,
y: 150,
width: 50,
height: 20,
restitution:.5,
treatment: "static"
}
);
// Add them to the world
world.add( renderer );
world.add( ball );
world.add( box );
//Add physical behaviours
world.add( Physics.behavior('constant-acceleration') );//add gravity
world.add( Physics.behavior('body-impulse-response') );//make obdies bounce (react to impulse)
world.add( Physics.behavior('body-collision-detection') );//detect collision between bodies
world.add( Physics.behavior('sweep-prune') );
world.add( Physics.behavior('edge-collision-detection', //dectect collision with edges
{
aabb: Physics.aabb(0, 0, 500, 500),
restitution:.3
}
)
);
//START playing
world.on('render', function( data ){
var renderer = data.renderer;
});
// subscribe to ticker to advance the simulation
Physics.util.ticker.on(function( time, dt ){
world.step( time );
});
world.on('step', function(){
world.render();
console.log(ball.state.vel._[1]);
});
// start the ticker
Physics.util.ticker.start();
});
canvas {border:1px solid;}
<script src="http://wellcaffeinated.net/PhysicsJS/assets/scripts/vendor/physicsjs-0.6.0/physicsjs-full-0.6.0.min.js"></script>
<canvas id="viewport" width="500" height="200"></canvas>
创建一个带有静态平台和一个球落在上面的世界。球落下并弹跳,然后弹跳速度越来越慢,但它永远不会结束。我在 body 属性中设置了restitution < 1。
我哪里错了?
【问题讨论】:
-
你能把它变成一个工作的 jsfiddle/jsbin/SO-runnable-example 吗?
-
@Mike'Pomax'Kamermans 完成 ;)
-
@Nemus:我们看不到任何输出。请发布一个 jsfiddle 以显示您的输出。
-
有趣的事实:您的
box对象定义中有错字。 “restitution”不是这样拼写的。 -
@Aravind 你在代码的开头错过了
Physics(function( world ){
标签: javascript physicsjs