Berikut langkah-langkah memasukkan gambar pada game;
1. Buat aplikasi libgdx
2. Untuk diketahui, gambar harus ditempatkan pada folder asset pada project Android sehingga Anda harus membuat project Android untuk setiap project LibGdx. Aset-aset pada project Android ini akan didistribusikan oleh 'LibGdx core' pada project-project lainnya; Desktop, IOS, Web.
3. Masukkan variabel yang akan kita gunakan diantara class dan create
SpriteBatch spriteBatch; BitmapFont font; OrthographicCamera camera;
4. Buat objek tersebut
@Override public void create () { spriteBatch = new SpriteBatch(); font = new BitmapFont(true); texture = new Texture(Gdx.files.internal("badlogic.jpg")); camera = new OrthographicCamera(); camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); }
5. Jangan lupa membuang resource yang ada pada memori atau method dispose.
@Override public void dispose() { spriteBatch.dispose(); font.dispose(); texture.dispose(); }
6. Menempatkan gambar pada method render
@Override public void render () { camera.update(); spriteBatch.setProjectionMatrix(camera.combined); Gdx.gl.glClearColor(0, 0, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriteBatch.begin(); font.draw(spriteBatch, "Ini adalah tulisan", 100, 100); spriteBatch.draw(texture, 0, 0); spriteBatch.end(); }
7. Sama seperti render tulisan terdahulu, Anda akan mendapati bahwa gambar mempunyai posisi terbalik sehingga kita harus memberikan flip pada gambar tersebut.
Untuk membuat gambar tersebut flip, pada LibGdx, sebaiknya gambar tersebut dibungkus dulu dengan TextureRegion dan baru setelah itu di flip. Cara ini nantinya akan efektif karena kita akan menggunakan TextureRegion untuk mendeteksi area teksture terutama nantinya berhubungan dengan benturan (colision).
Berikut caranya; tambahkan objek TextureRegion pada bagian variabel, buat TextureRegion pada create dan tempatkan TextureRegion pada render.
Bagian Variabel
Texture texture; TextureRegion textureRegion;
Bagian create method, jangan lupa tambahkan flip sumbu y untuk membuat gambar berdiri;
spriteBatch = new SpriteBatch(); font = new BitmapFont(true); texture = new Texture(Gdx.files.internal("badlogic.jpg")); textureRegion = new TextureRegion(texture); textureRegion.flip(false, true); camera = new OrthographicCamera(); camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Bagian render method;
camera.update(); spriteBatch.setProjectionMatrix(camera.combined); Gdx.gl.glClearColor(0, 0, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriteBatch.begin(); font.draw(spriteBatch, "Ini adalah tulisan", 100, 100); spriteBatch.draw(textureRegion, 0, 0); spriteBatch.end();
8. Dispose
spriteBatch.dispose();
font.dispose();
texture.dispose();
Untuk dispose, Anda tidak perlu men-dispose TextureRegion karena TextureRegion tidak memerlukan resource memori. Jika ingin men-dispose TextureRegion, Anda bisa menggunakan kode berikut;
textureRegion.getTexture().dispose();
Yang artinya sama dengan
texture.dispose();
9. Jalankan aplikasi
Anda akan melihat seperti gambar berikut
--------------------------------
Kode komplitnya terlihat seperti ini;
package com.mygdx.game; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; public class MyGdxGame implements ApplicationListener { SpriteBatch spriteBatch; BitmapFont font; OrthographicCamera camera; Texture texture; TextureRegion textureRegion; @Override public void create () { spriteBatch = new SpriteBatch(); font = new BitmapFont(true); texture = new Texture(Gdx.files.internal("badlogic.jpg")); textureRegion = new TextureRegion(texture); textureRegion.flip(false, true); camera = new OrthographicCamera(); camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); } @Override public void render () { camera.update(); spriteBatch.setProjectionMatrix(camera.combined); Gdx.gl.glClearColor(0, 0, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriteBatch.begin(); font.draw(spriteBatch, "Ini adalah tulisan", 100, 100); spriteBatch.draw(textureRegion, 0, 0); spriteBatch.end(); } @Override public void resize(int width, int height) { // TODO Auto-generated method stub } @Override public void pause() { // TODO Auto-generated method stub } @Override public void resume() { // TODO Auto-generated method stub } @Override public void dispose() { spriteBatch.dispose(); font.dispose(); texture.dispose(); } }
Tidak ada komentar:
Posting Komentar