나는 libgdx 튜토리얼을보고 카메라를 사용하고 타일을 사용하여 맵을 만드는 방법을 배웠다. 그러나 나는 약간의 문제를 만난다. 나는 약간의 아이디어를 원한다. RPG 게임을 만들고 싶지만 위치와 같은 각 괴물의 정보를 외우고 싶습니다. 그러나지도가 너무 커서 렌더링 양을 줄여야합니다. 많은 자원을 사용하지 않고 캠 밖에있는 괴물을 포함한 각 괴물의 정보를 어떻게 보관할 수 있습니까?libgdx - 캠 외부의 객체 처리
답변
libGDX에서 이미 TiledMap
으로 작업 했었다고 가정합니다. 당신은 당신이 그것을 전달하는 Camera
객체를 사용하여 당신을 위해 화면의 정확한 부분을 렌더링하는지도를 그리기 위해 OrthogonalTiledMapRenderer
를 사용할 수 있습니다
OrthogonalTiledMapRenderer renderer =
new OrthogonalTiledMapRenderer(myMap, 1/16f); // Change this to your render scale
//e.g. 1/32f means your tiles are 32px wide
OrthographicCamera camera = new OrthographicCamera(16, 9); //viewport size: 16x9
...
//Inside your class that implements Screen or extends Game
public void render(float delta) {
...
renderer.setView(camera);
renderer.render();
...
}
는 the Ashley framework를보십시오. 모든 엔티티에 위치가 포함 된 Component
을 부여한 다음 렌더링 시스템을 작성하여 그 위치를 그릴 수 있습니다.
엔티티는 TiledMap에 포함되어 있지 않으므로 직접 그려야하지만, 우선 system using Box2dDebugRenderer
구현이 도움이 될 수 있습니다. 당신이 Box2D의를 사용하여 하지 경우
은 여기에 사용되는 방법에의 예 EntitySystem
(테스트하지) :
public class RenderingSystem extends IteratingSystem {
public static final Family MONSTERS = Family.all(BoxComponent.class).get();
//Assumes you've made a BoxComponent class
private ShapeRenderer shapes;
private Camera camera;
public RenderingSystem(Camera camera) {
super(MONSTERS);
this.camera = camera;
this.shapes = new ShapeRenderer();
}
@Override
public void update(float deltaTime) {
shapes.begin(ShapeType.Line);
shapes.setColor(Color.RED);
super.update(deltaTime);
shapes.end();
}
@Override
protected void processEntity(Entity entity, float deltaTime) {
Rectangle box = entity.getComponent(BoxComponent.class);
//^Could be done faster using ComponentMappers
shapes.rect(box.x, box.y, box.width, box.height);
}
}
정보를 주셔서 감사합니다,하지만 나는 애슐리 프레임 워크를 사용하는 법을 모르겠다 ... 나는 프로그래밍에 아주 익숙하다. 내 프로젝트에 라이브러리를 어떻게 구현할 수 있습니까? – sunmaggot
프로젝트를 짓기 위해 Gradle을 사용합니까? 그렇다면이 줄을 여기에 추가하여 gradle 파일에 추가하고 재구성 할 수 있습니다 (https://github.com/libgdx/ashley/wiki/Getting-started-with-Ashley#gradle). 없다면, libGDX는 Gradle을 사용하기 때문에 Eclipse를 사용한다면 [this] (https://github.com/libgdx/libgdx/wiki/Gradle-and-Eclipse)를 사용하여 IDE (Eclipse/IntelliJ)로 가져올 수 있습니다 IntelliJ를 사용하는 경우에는 [this] (https://github.com/libgdx/libgdx/wiki/Gradle-and-Intellij-IDEA)를 입력하십시오. NetBeans 섹션 [여기] (https://github.com/libgdx/libgdx/wiki/Gradle-and-NetBeans)도 있습니다. – Moira
물론, Gradle을 지금 다루지 않으려면 프로젝트를 다시 생성 할 수 있습니다. [Ashley] (http://i.imgur.com/BjUgEmn.png)를 선택하고 이전 코드를 모두 복사하십시오. 꽤 유용하고 모든 것을 더 쉽게 만들어주기 때문에 Gradle을 사용하는 법을 배우는 것이 좋습니다. – Moira
것은 당신이 큰지도를 들어,이 방법이라고 클리핑를 사용해야합니다 . 정보를 저장하는 데 필요한 위치, 텍스처 영역 및 요법과 같은 정보가있는 Java 객체를 만듭니다. –