this 튜토리얼에서 사용 된 것과 동일한 코드를 사용하고 있습니다. 그러나 프로젝트를 실행하는 동안 오류가 발생합니다. LibGDX의 기본 프로젝트가 정상적으로 작동했습니다.LibGDX/Box2D UnsatisfiedLinkError
오류 :
World world = new World(new Vector2(0, -100), true);
편집 : 그것 (클래스의 첫 번째 행)를 참조한다
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.badlogic.gdx.physics.box2d.World.newWorld(FFZ)J
at com.badlogic.gdx.physics.box2d.World.newWorld(Native Method)
at com.badlogic.gdx.physics.box2d.World.<init>(World.java:222)
at net.ocps.tchs.permarun.PermaRun.<init>(PermaRun.java:19)
at net.ocps.tchs.permarun.Main.main(Main.java:14)
라인하여 world
변수를 포함하는 더 디버깅시, 난 아무것도 주석과 프로그램이 실행되었는데 (검은 상자를 제외하고는 아무 것도 나타나지 않았다. 왜냐하면 나는 정의 줄을 주석 처리 할 때 오류를 주석 처리했기 때문이다.)
Edit2가 :. 전체 코드를 작동합니다 (이 GdxNativesLoader.load();
를 사용하는 여러 가지 방법이 있지만이, aquaraga 덕분에 내가 사용하기로 결정 방법입니다)
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.CircleShape;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.utils.GdxNativesLoader;
public class PermaRun implements ApplicationListener {
World world;
Box2DDebugRenderer debugRenderer;
OrthographicCamera camera;
static final float BOX_STEP=1/60f;
static final int BOX_VELOCITY_ITERATIONS=6;
static final int BOX_POSITION_ITERATIONS=2;
static final float WORLD_TO_BOX=0.01f;
static final float BOX_WORLD_TO=100f;
@Override
public void create() {
GdxNativesLoader.load();
world = new World(new Vector2(0.0f, -100.0f), true);
camera = new OrthographicCamera();
camera.viewportHeight = 320;
camera.viewportWidth = 480;
camera.position.set(camera.viewportWidth * .5f, camera.viewportHeight * .5f, 0f);
camera.update();
//Ground body
BodyDef groundBodyDef =new BodyDef();
groundBodyDef.position.set(new Vector2(0, 10));
Body groundBody = world.createBody(groundBodyDef);
PolygonShape groundBox = new PolygonShape();
groundBox.setAsBox((camera.viewportWidth) * 2, 10.0f);
groundBody.createFixture(groundBox, 0.0f);
//Dynamic Body
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyType.DynamicBody;
bodyDef.position.set(camera.viewportWidth/2, camera.viewportHeight/2);
Body body = world.createBody(bodyDef);
CircleShape dynamicCircle = new CircleShape();
dynamicCircle.setRadius(5f);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = dynamicCircle;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.0f;
fixtureDef.restitution = 1;
body.createFixture(fixtureDef);
debugRenderer = new Box2DDebugRenderer();
}
@Override
public void dispose() {
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
debugRenderer.render(world, camera.combined);
world.step(BOX_STEP, BOX_VELOCITY_ITERATIONS, BOX_POSITION_ITERATIONS);
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
그 줄을 어디에 넣으라고 제안합니까? 코드가'create()'메소드에 도착하기 전에 깨집니다. – Chris
감사합니다! 나는 질문에 수정 사항을 게시하려고하지만 다시 upvote 및 답변을 받아 들일거야 – Chris
내 대답은 – aquaraga