LoginSignup
12
11

More than 5 years have passed since last update.

libGDXの基礎の基礎2 ~ 画像を表示する

Posted at

libGDXの基礎の基礎の続きです。

前回はクロスプラットフォームで動かすところまでとライフサイクルメソッドの説明だけをしました。

今回は画像を表示します。

ここではenemy.pngという画像ファイルを用意しています。256x256のサイズです。

画像を置く場所

画像を置く場所ですが、PC版はカレントディレクトリからの相対パスとなります。
NetBeansならばプロジェクトのルートにおいてください。タブをファイルに切り替えるとファイルシステムそのままの表示になりますので、ここでプロジェクトのルートに配置します。

libgdx-project.png

AndroidはAssetsへ、robovmならばdata(設定による)ディレクトリへ配置してください。

ディレクトリを作って階層化してもよいでしょう。今回はわかりやすくするためにルートに配置します。

ソースコード

windows/linux/mac版は以下のようになります。そのほかのプラットフォームではmain部分を消して差し替えてください。

package test.libgdx;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;


public class MainListener2 implements ApplicationListener{
    SpriteBatch batch;
    Texture texture;

    @Override
    public void create() {
        batch = new SpriteBatch();
        texture = new Texture("enemy.png");
    }

    @Override
    public void resize(int w, int h) {
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0.2f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


        batch.begin();
        batch.draw(texture, 0, 0);
        batch.end();
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }

    @Override
    public void dispose() {
    }


    public static void main(String[] args) {
        new LwjglApplication(new MainListener2(), "libGdxTest", 512, 512);
    }

}

windows/mac/linuxで実行

Netbeansならばmainクラスを選択してシフト+F6で実行可能です。

libgdx2.png

Android実行

NBAndroidプラグインをいれたNetbeansならばF6で即実機へ転送、実行できます。mainクラス単位での実行ではなく、プロジェクト単位の実行となります。

Screenshot_2014-06-29-21-41-12.png

解説

まずPC版のみにあるmainメソッドですが、描画エリアを512x512でウインドウ生成しています。ウインドウのタイトルも指定しています。今回はしていませんが、アイコン指定も可能です。Androidでは横320ピクセル、高さはそれに合わせた比率になっています。



createメソッドでテクスチャをロードしています。先ほどおいた画像ファイルを指定してください。



renderメソッドが描画の本体となります。

SpriteBatchというものを使って描画します。SpriteBatchはbeginメソッドとendメソッドの間に描画命令を実行することで描画されます。

ここで先ほど生成したTextureのインスタンスを渡します。drawメソッドの引数の0,0はXとY座標です。画面の左下が原点となります。これらの数値を変更してみてください。また、複数のdrawメソッドを記述してみてください。重ね合わせなども確認するとよいでしょう。

今回利用したdrawメソッドはもっとも単純なものですが、SpriteBatch#drawメソッドは複数あります。拡大縮小、上下左右反転だけならこれだけで実現できます。



これで最も基本な画像描画はできました。キーボードやマウス、タッチイベントなどをかけばもうゲームは作れそうです。


ちなみにこのキャラクターはマモノバスター/マモノバスター2に登場するミミックです。2はAndroid/iOSともに配信中ですのでよかったらどうぞ。バージョンアップの予定もあります。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11