2012-07-04 32 views
6

tôi tạo ra một máy ảnh:libgdx setOrigin và setPosition không hoạt động như mong đợi?

camera = new OrthographicCamera(5.0f, 5.0f * h/w); 

Tạo một sprite:

ballTexture = new Texture(Gdx.files.internal("data/ball.png")); 
ballTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 
TextureRegion region = new TextureRegion(ballTexture, 0, 0, ballTexture.getWidth(), ballTexture.getHeight()); 
ball = new Sprite(region); 

Đặt nguồn gốc, kích thước, và vị trí:

ball.setOrigin(ball.getWidth()/2,ball.getHeight()/2); 
ball.setSize(0.5f, 0.5f * ball.getHeight()/ball.getWidth()); 
ball.setPosition(0.0f, 0.0f); 

Sau đó, làm cho nó:

batch.setProjectionMatrix(camera.combined); 
batch.begin(); 
ball.draw(batch); 
batch.end(); 

Nhưng khi tôi render nó, phía dưới bên trái của bóng ma của tôi là tại (0, 0), không phải là trung tâm của nó, như tôi mong đợi nó là bởi vì tôi đặt nguồn gốc là trung tâm của sprite. Tôi đang thiếu gì?

Trả lời

7

Nguồn gốc liên quan đến xoay vòng và chia tỷ lệ, như được mô tả trong phương pháp JavaDocs.

+0

Ah, tất nhiên. Tôi đọc điều đó, nhưng không đặt 2 và 2 lại với nhau. Cảm ơn. – shino

+1

Tôi biết nó không liên quan đến vị trí nhưng tại sao câu này trong Tài liệu cho phương thức vị trí đã đặt? : Đặt vị trí nơi sẽ vẽ sprite. Nếu nguồn gốc, luân chuyển hoặc tỷ lệ được thay đổi, sẽ hiệu quả hơn một chút để đặt vị trí sau các hoạt động đó. – LeSam

+0

Vui lòng cập nhật liên kết – therealprashant

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