2014-01-13 5 views
0

Работа над программой Jbox2D Я создал 2 объекта прямоугольника в (0,10) метра и 10 метров шириной и 1 метра в ширину, а шар в (1,0), который имеет радиус 0.5f СчетчикиКоординаты JBox2D не совпадают

//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 рассчитываются из центра шара, тогда шар должен быть всего 0,5 от коробки при Y = 9,5. даже если он использует Диаметр, он должен оставаться на расстоянии не более 1 метра при Y = 9.

Кто-нибудь знает, почему его вычисление Y должно составлять 2 метра, когда радиус равен 0,5?

ответ

1

Аргументы для формы многоугольника: «полуширина» и «половина высоты». Это один из странных переносов из box2d (см. Руководство here), а не самое интуитивное поведение. Попытайтесь:

cs.setAsBox(width/2, height/2); 
+0

Они все еще не сталкиваются визуально, но, прочитав руководство, я заметил «Кожа», поэтому номер не является ТОЧНО правильным. из того, что я могу сказать, что поверхность кожи составляет 0,5 фунта вокруг поверхности фигур и, масштабируя все до 64 раз, делает небольшой промежуток между ними завышенным, так что я просто должен приспособиться к этому визуально, поскольку все сейчас встречается правильно. – Snowdrama

+0

Кожа должна быть нечувствительной, если вы используете правильные размеры. По умолчанию скин равен 0.01f (или 1cm) –

+0

Поскольку координаты X и Y многоугольника являются центрами, я должен рисовать прямоугольник как drawRect (getX() - (getWidth()/2), getY() - (getHeight()/2), getWidth(), getHeight()); но я получаю: https://www.dropbox.com/s/n0vcecuj9ut4mz8/Screenshot%202014-01-15%2002.44.49.png Небольшой промежуток между Кругом и Прямоугольниками. Также это масштабируется x10 вместо преобразования в пиксельные координаты, я просто использую буквальные мировые координаты, а затем масштабирую все. – Snowdrama

Смежные вопросы