我在静态框内创建了一个动态圆(四个静态墙来制作一个框)。 将负面重力应用于世界。
现在效果是圆形体应该从内壁反弹并最终稳定下来。
with restituion = 1我得到的效果是:从墙上反弹不断增加,它永远不会停止。
我做错了什么?我认为resitution = 1意味着无限跳跃(相同的距离),但这里的弹跳距离逐渐增加。
// create ground (box-type object)
function createGround(x, y, width, height, rotation) {
// box shape definition
var groundSd = new b2BoxDef();
groundSd.extents.Set(width, height);
groundSd.restitution = 0.0;
var groundBd = new b2BodyDef();
groundBd.AddShape(groundSd);
groundBd.position.Set(x, y);
groundBd.rotation = rotation * Math.PI / 180;
return world.CreateBody(groundBd);
}
function createCircleAt(x, y, r) {
var boxSd = new b2CircleDef();
boxSd.density = 1.0;
boxSd.friction = 1.0;
boxSd.restitution = 1.0;
boxSd.radius = r;
// add to world as shape
var boxBd = new b2BodyDef();
boxBd.AddShape(boxSd);
boxBd.position.Set(x,y);
return world.CreateBody(boxBd);
}
使用box2d.js
答案 0 :(得分:0)
Box2d没有给出精确的模拟。将恢复原状置于1.0只会使物理外观足够接近'。
答案 1 :(得分:0)
我想这取决于你墙壁的恢复价值。球在墙上弹跳,有自己的“行为”,如果我记得很清楚,它会计算出2之间的比例。你是否尝试改变墙壁恢复值?