Box2D를 사용하여 게임을 프로그래밍하려고 할 때 Box2D에서 문제가 발생했습니다. 텍스처와 스프라이트의 길이에 대한 픽셀 수를 채워 상자 주위에 상자를 만들었습니다. 모든 것이 올바른 위치에 있었지만 어떤 이유로 모든 것이 아주 천천히 진행되었습니다. 인터넷에서 보면 픽셀을 미터로 변환하지 않으면 box2d가 매우 큰 객체로 도형을 처리 할 수 있다는 것을 알았습니다. 이것은 모든 것이 천천히 움직이는 논리적 인 원인으로 보였다.Libgdx Box2D 픽셀 - 미터 변환?
이 사이트에서 비슷한 질문을 발견했지만 답변이 도움이되지 못했습니다. 대부분의 경우 솔루션은 스케일링 요소를 사용하여 픽셀 수를 미터로 변환하는 방법을 만드는 것이 었습니다. 나는 이것을 시험해 보았지만 모든 것이 잘못되어 크기가 틀렸다. 이것은 숫자가 바뀌었지만 그 의미가 같았 기 때문에 나에게 논리적으로 보였다.
픽셀 수를 줄이는 방법이 있는지 궁금 해서요. 모든 것이 같은 (픽셀) 크기로 같은 위치에 있지만, 평균 미터가 더 낮습니다. 당신은 당신이 도움이 될 생각하는 다른 방법이있는 경우 , 나는 또한 이것은
width = Gdx.graphics.getWidth()/5;
height = Gdx.graphics.getHeight()/5;
camera = new OrthographicCamera(width, height);
camera.setToOrtho(false, 1628, 440);
camera.update();
카메라를 내가하는 데 사용하는 방법을 만드는 데 사용할 여기
코드입니다 .. 그것을 듣고 싶어 whouldTable = new Item();
Table.Create(372f, 60f, 152f, 96f, 1.0f, 0.2f, 0.2f, world);
:
public void Create(float X, float Y, float Width, float Height, float density, float friction, float restitution, World world){
//Method to create an item
width = Width;
height = Height;
polygonDef = new BodyDef();
polygonDef.type = BodyType.DynamicBody;
polygonDef.position.set(X + (Width/2f), Y + (Height/2f));
polygonBody = world.createBody(polygonDef);
polygonShape = new PolygonShape();
polygonShape.setAsBox(Width/2f, Height/2f);
polygonFixture = new FixtureDef();
polygonFixture.shape = polygonShape;
polygonFixture.density = density;
polygonFixture.friction = friction;
polygonFixture.restitution = restitution;
polygonBody.createFixture(polygonFixture);
}
이 경우 테이블에, 나는 다음과 같은 사용 항목을 만들려면 : 객체를 생성
스프라이트는 다음 방법을 사용하여 항목을 인출되어
public void drawSprite(Sprite sprite){
polygonBody.setUserData(sprite);
Utils.batch.begin();
if(polygonBody.getUserData() instanceof Sprite){
Sprite Sprite = (Sprite) polygonBody.getUserData();
Sprite.setPosition(polygonBody.getPosition().x - Sprite.getWidth()/2, polygonBody.getPosition().y - Sprite.getHeight()/2);
Sprite.setRotation(polygonBody.getAngle() * MathUtils.radiansToDegrees);
Sprite.draw(Utils.batch);
}
Utils.batch.end();
}
스프라이트 또한 화소 사이즈를 갖는다.
이 방법을 사용하면 이미지가 올바른 위치에 표시되지만 모든 것이 천천히 움직입니다. 개체를 올바르게 이동하고/또는 의미가 적어 지도록 변경해야하는 경우 어떻게하는지 궁금합니다. 미리 감사드립니다.
고맙습니다. 그렇게하고 싶다면 픽셀을 다른 수의 미터에 매핑해야합니까? 어떻게해야합니까? (항목을 만들고 질문에 스프라이트를 그리는 데 사용 된 코딩이 포함되어 있습니다) – dragonfly
내 대답을 편집했습니다. – sinu
고마워, 나는 그것을 올바르게 보이게하는 방법을 이미 알아 냈지만 스프라이트의 위치를 전체 화면으로 변환해야만 모든 것이 올바른 위치에있는 것처럼 보이지만 실제 시뮬레이션은 더 낮은 위치에 있었다. 왼쪽 구석. 이것은 더 나은 아이디어 인 것 같다. – dragonfly