【发布时间】:2014-07-01 02:24:51
【问题描述】:
我正在使用PhysicsJS 制作一个 2D 轮盘赌球旋转动画。
到目前为止,我已经实现了以下内容:
- 使用了constraint,这样球就不会“飞走”:
rigidConstraints.distanceConstraint( wheel, ball, 1 ); - 使用drag 让球减速:
world.add(Physics.integrator('verlet', { drag: 0.9 })); - 让轮子吸引球,这样当阻力使球足够慢时,它会朝它下落
我的问题:
-
如何逐渐减慢球的旋转速度?
我的drag值已经很高了,但它看起来并没有做任何事情 -
如何让车轮产生吸引力?
距离限制应防止球逃逸,而不是靠近车轮。 -
为什么
angularVelocity: -0.005在方向盘上根本不起作用?
我的代码,也在JSfiddle
Physics(function (world) {
var viewWidth = window.innerWidth
,viewHeight = window.innerHeight
,renderer
;
world.add(Physics.integrator('verlet', {
drag: 0.9
}));
var rigidConstraints = Physics.behavior('verlet-constraints', {
iterations: 10
});
// create a renderer
renderer = Physics.renderer('canvas', {
el: 'viewport'
,width: viewWidth
,height: viewHeight
});
// add the renderer
world.add(renderer);
// render on each step
world.on('step', function () {
world.render();
});
// create some bodies
var ball = Physics.body('circle', {
x: viewWidth / 2
,y: viewHeight / 2 - 300
,vx: -0.05
,mass: 0.1
,radius: 10
,cof: 0.99
,styles: {
fillStyle: '#cb4b16'
,angleIndicator: '#72240d'
}
})
var wheel = Physics.body('circle', {
x: viewWidth / 2
,y: viewHeight / 2
,angularVelocity: -0.005
,radius: 100
,mass: 100
,restitution: 0.35
// ,cof: 0.99
,styles: {
fillStyle: '#6c71c4'
,angleIndicator: '#3b3e6b'
}
,treatment: "static"
});
world.add(ball);
world.add(wheel);
rigidConstraints.distanceConstraint( wheel, ball, 1 );
world.add( rigidConstraints );
// add things to the world
world.add([
Physics.behavior('interactive', { el: renderer.el })
,Physics.behavior('newtonian', { strength: 5 })
,Physics.behavior('body-impulse-response')
,Physics.behavior('body-collision-detection')
,Physics.behavior('sweep-prune')
]);
// subscribe to ticker to advance the simulation
Physics.util.ticker.on(function( time ) {
world.step( time );
});
// start the ticker
Physics.util.ticker.start();
});
【问题讨论】:
-
这个问题似乎跑题了,因为它是关于物理的。
-
@duffymo 这是关于编程物理的,使用一个众所周知的 JS 库。游戏制作者一直都在这样做,并且有很多 SO 问题。
-
@mikemaccana 在我编辑之前,它可能被误认为是一个物理问题。现在措辞应该更清楚了。
-
你可以滥用一个众所周知的 JS 库 b/c 你不了解物理。我认为这是其中一种情况。
-
@duffymo 如果您检查我的代码,您会看到例如角速度作为选项给出但被忽略。我不知道你为什么会把它或其他问题与缺乏对物理学的理解联系起来——这显然是一个代码问题。
标签: javascript physicsjs