中身を変えてみよう。

## 4.中身を変えてみよう。

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

今回は長めです。

「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が攻撃の時間。「4.0」なので4秒間です。

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

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

arenaはアリーナ(決闘場)ですね。

ご指摘ありがとうございます。

"poseur"
}

enemypositions = {
{0,0}

出てくる敵ですね。

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

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. **中身を変えてみよう。**