中身を理解しよう。(中級 1)

## 4.中身を理解しよう。(中級\_1)

前回紹介したフォルダの中を開いてがっつり見ていきましょう。

今回は長めです。

「Audio」は説明以外、何も入ってません。

「Lua」を飛ばして「Sounds」も何もありません。

「Sprites」には"2.起動してみよう。"の時に遊んだ際のボスの画像などが入っています。

この３つはすべて素材を置く場所で、一番重要なのが「Lua」です。

では「Lua」を開きましょう。
各フォルダは前回紹介しましたね。

まずは「Encounters」を見ましょう。

「encounter.lua」というものが入っています。

メモ帳などのテキストビューアーで開きましょう。

(右クリック→プログラムから開く→メモ帳)

ずらーっと英語が書かれているので少しずつ和訳していきましょう。

基本的なエンカウンターのスクリプトです。ご自由にお使いください。

と書かれています。

ちなみに先頭の --(ハイフン2つ)は「ここからコメントです」の意味で、エンカウンターの設定には関係ありませんね。

戦闘BGMの設定です。OGGファイルを想定しているので、拡張子を書く必要はありません。

今はコメントになっているのでデフォルトのBGMになっています。

music = "「Audio」の中に入れたファイルの名前"

と書くとその音楽が流れます。

エンカウントした際のテキストを設定する場所です。

戦闘が始まって最初に出てくる文ですね。

Poseur strikes a pose!のところがそうです。

wavetimer = 4.0

戦闘が始まって最初の攻撃を設定する場所です。

nextwaves は攻撃手段「waves」フォルダの中のファイルの名前ですね。

wavetimerが攻撃の時間。

arenasizeはプレイヤーが動ける範囲です。

(areasizeだと思うんですけど誤字か何かですかね？areasizeだとバグが起きて攻撃しません。)

"poseur"
}

enemypositions = {
{0,0}

出てくる敵を設定する場所です。

enemiesに入れるものは「Monsters」フォルダの中のファイルの名前です。

複数の敵を出す場合、

"poseur", "poseur"といった感じで、コンマで区切ってください。

enemypositionsに入れるのは座標(x,y)です。

真ん中が0,0。

右にずらしたければ{100,0}のように最初のほうの値を増やしてください。

こちらもコンマで区切ることで複数の敵の配置が可能です。

敵が使用する攻撃手段を設定する場所です。

Wavesの中から使いたい攻撃を書きます。

ここから先は割と本格的にC言語などのプログラムで使われる「関数」を解説していきます。

-- If you want to change the game state immediately, this is the place.

エンカウントしてから初めに呼ばれる関数です。

簡単に言うと

function EncounterStarting()からendの間に書いたことが最初に起こります。

-- Good location for setting monster dialogue depending on how the battle is going.
enemies[1].SetVar('currentdialogue', {"It's\nworking."})

敵がしゃべる言葉を設定する場所です。

enemies[1]というのは一人目の敵を指定しています。

.は中身を表示するためのものです。

SetVarは値を設定するものです。

今回は'currentdialogue'に"It's\nworking."を設定しています。

「敵１の中のcurrentdialogueに"It's\nworking."を設定します。」

さらに砕くと「敵１に"It's\nworking."としゃべらせます。」

という意味です。

この場合、敵がしゃべるのは

です。つまり"\n"を打つと改行することができます。

ちなみに\tはTabキーと同じ役割をしてくれます。

一応改行コードと調べればそれの意味が分かりますが、主に使うのは\nと\tぐらいなのでそこまで調べる必要はないでしょう。

※　\はキーボードの右上にある「￥」を押せば出ます。

-- Good location to fill the 'nextwaves' table with the attacks you want to have simultaneously.
-- This example line below takes a random attack from 'possible\_attacks'.
nextwaves = { possible\_attacks[math.random(#possible\_attacks)] }

敵がしゃべるのをやめた後に呼ばれる関数です。

ここで書くべきものは敵の攻撃手段です。

"nextwaves = "で次の攻撃の設定。

"possible\_attacks"は先ほど指定しましたね。

"math.random()"はUnityの関数で、ランダムの数字に変化します。

()の中に数値を入れると、0~その数値までの数値をランダムで返します。

そして"#possible\_attacks"はpossible\_attacksの中に入っている要素の数に変化します。

つまり、「次の敵の攻撃はpossible\_attacksの中からランダムで攻撃します。」ということですね。

encountertext = RandomEncounterText() --This built-in function gets a random encounter text from a random enemy.

ここは敵の攻撃が終わったときの設定です。

今回は次のターンに表示されるコメントを設定していますね。

"encountertext ="でコメントの指定。

"RandomEncounterText()"というのは後に説明する「Monsters」フォルダのposeur.luaの中にあるcommentsという所からランダムで取得する関数です。

State("ENEMYDIALOGUE")

プレイヤーがSpareを選んだ時の設定です。

今回はState("ENEMYDIALOGUE")ということで

敵がしゃべる状態に設定しています。

BattleDialog({"Selected item " .. ItemID .. "."})

プレイヤーがアイテムを選択した時の設定です。

今回は"Selected item 選択したアイテム"と表示されるように設定してあります。

ここでC言語の関数の勉強なのですが、

いままであったfunction

これが関数の目印です。

その横の今見ているところでいうと「HandleItem」がこの関数の名前となります。

そして、名前の後の()これは今まで何も書いてませんでしたが、"引数"と言って今回の"ItemID"というのは選択したアイテムがどのアイテムかを表すものになっています。これを

" .. ItemID .. "と書くことによってそのItemIDの名前が表示できるようになっているようです。

とても長くなりました。

今回はようやく終了です。

後付け説明などがあってわかりづらいので、この後わかりやすく書き換えるつもりです。

ご了承ください。

## 作ってみよう

1. ダウンロードしよう。
2. 起動してみよう。
3. 中身を理解しよう。(初級)
4. **中身を理解しよう。(中級\_1)**