क्या तुम यहाँ प्राप्त करने के लिए कोशिश कर रहे हैं libGdx में थोड़ा जटिल है -
यह मैं कैसे text--
batch = new SpriteBatch();
batch.setProjectionMatrix(camera.combined);
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("font/Lato-Bold.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 30;
parameter.color = com.badlogic.gdx.graphics.Color.WHITE;
parameter.magFilter = Texture.TextureFilter.Linear; // used for resizing quality
parameter.minFilter = Texture.TextureFilter.Linear;
generator.scaleForPixelHeight(3);
BitmapFont aFont = generator.generateFont(parameter);
aFont.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
aFont.draw(batch, options.get(i), aBound.getCenterX(), aBound.getCenterY() + textHeight/2);
कहाँ लाजिमी ड्राइंग कर रहा हूँ। आपका दृष्टिकोण, हालांकि गलत है क्योंकि आप टेक्स्ट को अपनी गेंद के शीर्ष पर एक अलग स्प्राइट ऑब्जेक्ट के रूप में चित्रित कर रहे हैं।
यह प्राप्त करने के लिए सही प्रक्रिया पाठ को एक बनावट पर खींचना है और फिर मानचित्र को बनावट को बांधना और बांधना है।
प्रक्रिया 4 भागों में विभाजित किया जा सकता है -
- फ़ॉन्ट पीढ़ी और फ्रेमबफर वस्तु
- स्प्राइट बैच
- की स्थापना पाठ आकर्षित स्थापना, मॉडल के लिए बनावट मानचित्रण
- मॉडल
एक नोट के रूप में, मैं यह उल्लेख करना चाहता हूं कि किसी भी अन्य बनावट का उपयोग किया जा सकता है और यदि आप रीयल-टाइम में टेक्स्ट को अपडेट नहीं करना चाहते हैं, तो आप आसानी से प्री-मेड बनावट का उपयोग कर सकते हैं जो भी आप चाहते हैं।
स्प्राइट बैच
//Set the correct resolution for drawing to the framebuffer
lFb.begin();
Gdx.gl.glViewport(0,0,128,128);
Gdx.gl.glClearColor(1f, 1f, 1f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Matrix4 lm = new Matrix4();
//Set the correct projection for the sprite batch
lm.setToOrtho2D(0,0,128,128);
batch.setProjectionMatrix(lm);
की स्थापना अंत पर पाठ आकर्षित फ़ॉन्ट पीढ़ी और फ्रेमबफर वस्तु
//Create a new SpriteBatch object
batch = new SpriteBatch();
//Generate font
FreeTypeFontGenerator generator = new
FreeTypeFontGenerator(Gdx.files.internal("font/Lato-Bold.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new
FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 30;
parameter.color = com.badlogic.gdx.graphics.Color.WHITE;
parameter.magFilter = Texture.TextureFilter.Linear; // used for resizing quality
parameter.minFilter = Texture.TextureFilter.Linear;
generator.scaleForPixelHeight(10);
//Get bitmap font
BitmapFont aFont = generator.generateFont(parameter);
aFont.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear,
Texture.TextureFilter.Linear);
//Generate new framebuffer object of 128x128 px. This will be our texture
FrameBuffer lFb = new FrameBuffer(Pixmap.Format.RGBA4444,128,128,false);
की स्थापना -
कोड इस प्रकार है बनावट
batch.begin();
aFont.draw(batch,"Goal!",64,64);
batch.end();
lFb.end();
बनावट नक्शा मॉडल
//Generate the material to be applied to the ball
//Notice here how we use the FBO's texture as the material base
Material lMaterial = new Material(TextureAttribute.createDiffuse(lFb.getColorBufferTexture()));
//Since I do not have a sphere model, I'll just create one with the newly
//generated material
ballModel = mb.createSphere(1.0f,1.0f,1.0f,8,8,lMaterial,
VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal | VertexAttributes.Usage.TextureCoordinates);
//Finally instantiate an object of the model
ballInstance = new ModelInstance(ballModel);
को प्रस्तुत मॉडल
mBatch.begin(mCamera);
mBatch.render(ballInstance);
mBatch.end();
//Rotate the ball along the y-axis
ballInstance.transform.rotate(0.0f,1.0f,0.0f,0.5f);
परिणाम -
आप टेक्स्ट को एक ही मैट्रिक्स पर एक अलग इकाई के रूप में चित्रित कर रहे हैं।एक तरह से आप इसे बनावट बिटमैप पर टेक्स्ट खींचने के लिए प्राप्त कर सकते हैं जिसका उपयोग आप टोकरीबॉल आदि के लिए कर रहे हैं। यह गोलाकार आकार लेगा। – Qamar