Rust – Bevyでノベルゲームを作る 文字の表示

Rust

今回もBevyに関する記事です。前回はBevyを触ってみてどんな感じで動くのかを確認しました。

以前、TypeScriptとC#(WPF)でノベルゲームとノベルゲームメーカーを作りました

今回はもう少し簡単なノベルゲームをBevyで作成していきます。

テキストを表示する

プロジェクトを作成して、最小単位のBevyアプリのコードを定義します。

use bevy::prelude::*;

fn main() {
    App::new()
    .run();
}

ここにテキストの表示処理を実装していきます。

フォントの用意

フォントを用意するですが、サンプルにあるフォントを利用します

bevy/assets/fonts at main · bevyengine/bevy
A refreshingly simple data-driven game engine built in Rust - bevy/assets/fonts at main · bevyengine/bevy

この「FiraMono-Medium.ttf」をassets/fontsフォルダに格納しておきます。

テキストの生成

以下のコードを記載します

use bevy::prelude::*;

fn main() {
    App::new()
    .add_plugins(DefaultPlugins)
    .add_startup_system(setup)
    .run();
}


// Systemは関数で定義する
// 引数として受け取れる特別なパラメータ
//   - Res ResMut
//   - Query
//   - Commands
//   - EventWriter EventReader
fn setup(
    mut command: Commands,
    asset_server: Res<AssetServer>
){
    // フォントの取得
    let font = asset_server.load("fonts/FiraMono-Medium.ttf");
    // カメラの生成
    command.spawn_bundle(Camera2dBundle::default());
    // テキストの生成
    command.spawn_bundle(TextBundle::from_section(
        "Hello Wolrd",
        TextStyle {
            font: font.clone(), //取得したフォント
            font_size: 60.0,
            color: Color::rgb(0.9, 0.9, 0.9)
        })
        .with_style(Style{
            margin: UiRect::all(Val::Px(50.0)), // ウインドウの左下を起点に(50.0)のマージンを取る
            ..default()
        }),
    );
}

実行すると以下のようにBevy | Rustという文字が表示されます。

テキストの表示にTextBundleを利用しました。

用語と機能

System

自分で関数を定義してゲームロジックを実装します。この時に引数としてコメントに書いたような特別なパラメータを受け取ることができます。

アプリビルダーを経由してBevyに登録します

Commands

エンティティの生成や削除、またエンティティに対してコンポーネントの追加削除、リソース管理を行います。

Res

リソースの共有借用。ファイルからアセットを読み込むにはAssetServerリソースを利用します

エンティティ

ゲームの内のオブジェクトを表します。シンプルな識別子くらいのものにしか持っていません。spawnを利用して生成します

コンポーネント

エンティティに関連するデータ。   #[derive(Component)]を利用して、構造体またはenumを定義して利用します

シリーズ記事

◆Rust – Bevyでノベルゲームを作る 文字の表示

◆Rust – Bevyでノベルゲームを作る 枠の表示

◆Rust – Bevyでノベルゲームを作る 次の文字を表示

◆Rust – Bevyでノベルゲームを作る キャラクターを表示する

コメント

タイトルとURLをコピーしました