Jumat, 01 Agustus 2014

LibGdx[2] => OrthographicCamera

Melanjutkan post terdahulu, kita akan belajar tentang OrthograhpicCamera.

1. Masukkan objek OrthographicCamera pada bagian antara class dan create seperti berikut. Dan berikut tambahkan objek baru pada method create.

    public class MyGdxGame implements ApplicationListener {
 SpriteBatch spriteBatch;
 BitmapFont font;
 OrthographicCamera camera;
 
 
 @Override
 public void create () {
  spriteBatch = new SpriteBatch();
  font = new BitmapFont();
  
  camera = new OrthographicCamera();
  camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
  
 }

Untuk diketahui, orthographic secara sederhana adalah ketika kita melihat sebuah objek pada proyeksi 2D dari atas, kita tidak akan melihat sisi-sisi lainnya dari objek yang sedang kita lihat. Begitu juga ketika kita melihat pada bagian samping. Atau dalam gambar teknik, kita sedang menggambar objek dalam bidang 2D.

Penjelasan kode:
camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); //kode kita
camera.setToOrtho(yDown, viewportWidth, viewportHeight); //kode variabel yang dilewatkan

Variabel yDown adalah boolean. Secara default, point (0,0) berada pada kiri bawah layar, dan ketika kita memberikan nilai true, maka point (0,0) akan berada pada kiri atas layar.
Sementara viewportWidth dan viewportHeight pasti Anda tau apa maksudnya.

2. Setelah penambahan OrthographicCamera, Anda tidak perlu menambahkan method dispose untuk kamera tersebut.

3. Kamera Orthographic belum akan 'menghasilkan' apa-apa pada proyek ketika dirender. Anda harus memasukkan pengaturan kamera 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.end();
 }

Perlu diperhatikan method setProjectionMatrix pada spriteBatch berikut seperti terlihat pada gambar;

4. Render project tersebut, maka Anda akan melihat tulisan terbalik sepeti berikut

5. Untuk membalikkan tulisan tersebut, Anda harus melewatkan boolean kedalam konstruktor BitmapFont.

font = new BitmapFont(true);

6. Hasil akhir akan terlihat seperti berikut






Keseluruhan code terlihat seperti berikut;
package com.mygdx.game;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class MyGdxGame implements ApplicationListener {
 SpriteBatch spriteBatch;
 BitmapFont font;
 OrthographicCamera camera;
 
 
 @Override
 public void create () {
  spriteBatch = new SpriteBatch();
  font = new BitmapFont(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.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();
 }
}