어제 jbox2d를 사용하기 시작했는데 현재 문제가있어 문제를 해결할 방법을 찾을 수 없습니다. 나는 많은 정적 인 몸과 하나의 역동적 인 몸 (플레이어)을 가지고 있고 나는 충돌을 시뮬레이션하고 싶다.Jbox2D와 관련한 문제
기본적으로 world.step 메서드가 호출되는 즉시 내 동적 본문은 x 축과 y 축 (18.0에서 19.25 사이 및 26.0에서 70.76까지)의 원래 위치에서 벗어납니다. 정적 인 몸체의 위치와 역동적 인 몸체의 움직임) 그리고 그것이 맞습니다.
중력 (나는 필요하지 않습니다)과 관련이 있지만, 저는 세계와 역동적 인 몸체를 0.0f , 그것은 여전히 동일한 문제를 제공합니다. 문제는 내 동적 엔티티의 fixture입니다 (제거 할 경우 문제가 더 이상 발생하지 않습니다)
또한 본문 및 동적 엔터티가 약간 다르게 이동합니다 pixe ls, 그래서 내 setLinearVelocity 메서드가 잘못되었을 수도 있습니다)
이 문제를 해결하려면 어떻게해야합니까?
지도 클래스, 게임의 맵을 포함
이
내 코드 (나는 쓸모없는 물건을 피하고 내가 만에 대한 jbox2d 유지)입니다.//fields
Code:
public static final float METER_IN_PIXELS = 40.0f;
private World world;
...
//constructor
Code:
public Map(int startPosX, int startPosY)
{
world = new World(new Vec2(0,10.0f));
...
}
//called every 33ms
Code:
public void update(int delta)
{
world.step(1/60.0f, 8, 3);
player.update(delta); // to update the player's movement
...
}
PhysicsMovingEntity 모든 이동 기관에 의해 사용되는 클래스 (순간에 그것은 플레이어
//fields
Code:
private Body body;
private float physicsX;
private float physicsY;
//constructor
public PhysicsMovingEntity(float x, float y, World world)
Code:
{
super.setX(x);
super.setY(y);
physicsX = x/Map.METER_IN_PIXELS;
physicsY = y/Map.METER_IN_PIXELS;
initPhysicalBody(world);
}
//init method
Code:
public void initPhysicalBody(World world)
{
BodyDef bd = new BodyDef();
bd.type = BodyType.DYNAMIC;
bd.position.set(physicsX, physicsY);
bd.gravityScale = 0;
PolygonShape ps = new PolygonShape();
ps.setAsBox(getFrameSize().width()/Map.METER_IN_PIXELS, getFrameSize().height()/Map.METER_IN_PIXELS);
FixtureDef fd = new FixtureDef();
fd.density = 1;
fd.shape = ps;
body = world.createBody(bd);
[color=#FF4000]body.createFixture(fd);[/color] // this toggles the problem
}
//called every 33ms
Code:
public void update(int delta)
{
super.update(delta);
[color=#FF4000]body.setLinearVelocity(new Vec2(getLastDirection().getX() * getSpeed(),
getLastDirection().getY() * getSpeed()));[/color] // probably giving the second problem
}
정말 너희들이이 문제를 해결하는 나를 도울 수 있기를 바랍니다.
감사 만 연장 있어요
이러한 함수는 무엇입니까? getLastDirection() & getSpeed () giving –