Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What is going on with this article?
@shinsan68k

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

More than 5 years have passed since last update.

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ともに配信中ですのでよかったらどうぞ。バージョンアップの予定もあります。

11
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
shinsan68k
MSX, X68000, C, Java, Android, libGDX, C#, Unity

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
11
Help us understand the problem. What is going on with this article?