0

在 Jbox2D 程序上工作,我创建了 2 个对象,一个 (0,10) 米和 10 米宽和 1 米宽的矩形,以及一个半径为 0.5f 米的 (1,0) 球

//in RectangleObject Class
PolygonShape cs = new PolygonShape();
cs.setAsBox(width, height);

//In CircleObject Class
CircleShape cs = new CircleShape();
cs.m_radius = radius;  

当我的程序运行时,球向平台移动并像我预期的那样击中矩形,但我得到的数字不是我预期的

BallX[0] : 1
BallY[0] : 7.9964995
RectX[0] : 1
RectY[0] : 10

如果 X 和 Y 是从球的中心计算的,那么在 Y = 9.5 处,球应该离盒子只有 0.5 的距离。即使它使用直径,它仍然应该在 Y = 9 处最多 1 米远。

任何人都知道为什么当半径只有 0.5 时它计算 Y 距离为 2 米?

4

1 回答 1

1

多边形形状的参数是“半宽”和“半高”。这是 box2d 的奇怪遗留物之一(请参阅此处的手册),而不是最直观的行为。尝试:

cs.setAsBox(width / 2, height / 2);
于 2014-01-14T18:00:49.050 回答