2013-04-17 25 views
9

Vì vậy, tôi sử dụng libgdx, tạo một platformer. Im sử dụng các ô vuông cho các nền tảng nhưng khi chúng được vẽ, một số trong chúng có khoảng trống giữa chúng. Khi tôi phóng to/thu nhỏ hoặc di chuyển máy ảnh xung quanh vị trí di chuyển khoảng trống. Có ai có cùng một vấn đề hoặc biết cách sửa chữa nó?Lấy khoảng trống giữa các hoạ tiết lát gạch với libgdx

Chi tiết hơn một chút. gạch là kích thước 32 và đã cố gắng kết cấu của cả hai 32 và 64. gạch được xếp hàng 32 ví dụ như. gạch đầu tiên sẽ là x = 0 y = 0 giây x = 32 y = 0 và cứ thế theo cả hai hướng x và y. Khoảng trống không phải là đồ tạo tác kết cấu vì tôi đã kiểm tra điều này nhiều lần. Sử dụng texturepacker với padding. Đoán tốt nhất của tôi là nó là một vấn đề khi chuyển đổi các kết cấu để coords màn hình nhưng thực sự không có ý tưởng làm thế nào để sửa lỗi này. Tôi đã nghĩ rằng vấn đề này đã xảy ra trước đây nhưng không thể tìm thấy bất kỳ sửa chữa bất cứ nơi nào. Tôi đã kiểm tra và kiểm tra lại độ chính xác của tôi với kích thước gạch và xếp chúng lên.

Mọi trợ giúp sẽ được đánh giá cao. cảm ơn.

Trả lời

4

Bleeding

Gaps

Câu trả lời ngắn gọn là nó có thể là bộ lọc của bạn, mà có thể cần phải được thiết lập để gần.

Cũng có thể muốn kiểm tra các hướng dẫn làm việc tại Libgdx.

6

Vâng, tôi ở đây để tiết kiệm trong ngày của bạn!

Giải pháp được gọi là "Đệm cạnh". Bây giờ nếu bạn đang làm việc với tilesets, tôi có thể đảm bảo với bạn rằng điều này sẽ làm việc.

Cá nhân tôi đang sử dụng Tiled cho phép tôi điều chỉnh lề và giãn cách trong các ô của mình. Nhược điểm duy nhất của điều này là bạn sẽ phải sử dụng GIMP với plugin này: http://registry.gimp.org/node/26044

Plugin này sẽ cho phép bạn áp dụng phần đệm cạnh cho lát gạch và thì đấy! Không có hiện vật xấu xí hơn.

3

Nó được gọi là "chảy máu kết cấu". Bạn cần phải thêm đệm vào các ô xếp của mình để khi kết cấu chảy máu, nó có thể thu thập dữ liệu pixel chính xác để lấp đầy khoảng trống.

2

Tôi biết hơi muộn để trả lời bài đăng này, nhưng khi tôi đang tìm kiếm giải pháp tôi đã đến đây.

Tuy nhiên, đối với tôi, tôi đã tìm thấy một cách dễ dàng hơn nhiều để loại bỏ các nhấp nháy hoặc khoảng trống xuất hiện ngẫu nhiên giữa các ô.

tôi chỉ cần thêm một dàn diễn viên với số thập phân rất lâu tôi đã cho vị trí của người chơi:

camera.position.set((int)robot.position.x, (int)robot.position.y, 0); 

Điều đó khiến các cầu thủ di chuyển rất kì lạ và làm cho anh ta di chuyển trơn tru một lần nữa tôi đã thêm một dàn diễn viên với phương pháp làm cho nó aswell:

batcher.draw(robotSprite, (int)robot.position.x, (int)robot.position.y, 16, 16); 

Et voilà! Làm việc hoàn hảo cho tôi.

9

Đây là một bài đăng muộn khác, nhưng tôi mới bắt đầu làm việc với LibGDX và tôi gặp vấn đề tương tự. Tôi đã cố định nó bằng cách thiết lập trường duplicatePadding của lớp TexturePacker.Settings thành true.

mã ví dụ:

import com.badlogic.gdx.tools.texturepacker.TexturePacker; 
import com.badlogic.gdx.tools.texturepacker.TexturePacker.Settings; 

Settings settings = new Settings(); 
     settings.maxWidth = 1024; 
     settings.maxHeight = 1024; 
     settings.duplicatePadding = true; 
     TexturePacker.process(settings, "source", 
       "destination", "name"); 
+0

duplicatePadding! Cảm ơn! – Pasha

+0

duplicatePadding đã giải quyết được sự cố của tôi cũng là – Aleris

+0

Ok và bạn thực sự sử dụng tính năng này như thế nào ...? Điều gì sẽ đi vào "nguồn" "đích" và "tên"? source = tileset Tôi tin? – SuppressWarnings

1

tôi sẽ gửi giải pháp của tôi ở đây và những gì tôi đã cố gắng cho Libgdx về vấn đề này.

-

T1. Tạo spritesheet gốc (không có tập tin bản đồ) tải xuống từ đâu đó để đệm 2.

A1. Đây sẽ là không thể đối với đóng gói lại spritesheet mà không có bản đồ, ngay cả khi bạn tìm thấy một công cụ Slice/splitter, nó phải là một loạt các hình ảnh mà cần phải đóng gói lại đúng cho TiledMap (.tmx)

A1 (Cập nhật). Tập lệnh do @Nine Magics cung cấp sẽ là cách tốt nhất để làm điều này! (Tôi sử dụng như là giải pháp cuối cùng của tôi)

-

T2. Sử dụng TiledMapPacker được cung cấp bởi libgdx-nighty hoặc GDX-toolg, Mã hàng loạt nên:

java -classpath "gdx.jar";"gdx-natives.jar";"gdx-backend-lwjgl.jar";"gdx-backend-lwjgl-natives.jar";"gdx-tiled-preprocessor.jar";"extensions/gdx-tools/gdx-tools.jar" com.badlogic.gdx.tiledmappacker.TiledMapPacker "PathToYourProject\android\assets\RawMap" "PathToYourProject\android\assets\Map" --strip-unused 

A2. Đầu ra .tmx không thể đọc được bởi Tiled Nếu bạn đang sử dụng đường dẫn thư mục phức tạp để phân loại các tệp .png của mình. Và tệp đầu ra có thể không tải được bởi AtlasTmxMapLoader.

-

T3. Chỉnh vị trí máy ảnh, đặt vị trí máy ảnh thành số nguyên. Mã được thích @Julian hoặc @strangecat từ libgdx tiledmap flicker with Nearest filtering

A3. Tôi sử dụng giải pháp này không có vấn đề gì và cũng đăng mã của tôi khác với chúng.

float cameraX = (int)(mainCamera.position.x * Game.PPM_X)/Game.PPM_X; 
    float cameraY = (int)(mainCamera.position.y * Game.PPM_X)/Game.PPM_X; 
    float cameraZ = mainCamera.position.z; 
    mainCamera.position.set(cameraX, cameraY, cameraZ); 

Và cũng load nó với TmxMapLoader.Parameters

TmxMapLoader.Parameters params = new TmxMapLoader.Parameters(); 
    params.textureMinFilter = Texture.TextureFilter.Linear; 
    params.textureMagFilter = Texture.TextureFilter.Nearest; 
    params.generateMipMaps = true; 
    assetManager.load(TILED_MAP_SETS.FIRST_MAP, TiledMap.class, params); 

Nếu bạn sử dụng PPM và muốn di chuyển từng pixel, bạn có thể sử dụng hiệu chỉnh số nguyên này cho trò chơi của bạn, Nếu không bạn chỉ có thể chuyển đổi vị trí thành số nguyên.

Tôi gần như lãng phí cả ngày để slove điều này, hy vọng điều tra này có thể giúp mọi nhà phát triển trò chơi :)

Các vấn đề liên quan