そんな管理人の備忘録
前回に記事【ゲーム開発】外部テキストを構文解析してみよう【unity】では、テキストを「人物」と「台詞」をそれぞれリストに分けて格納しました。
この会話を実現してみる。
今回は「人物」のリストを利用して、メッセージと連動させたキャラクター表示をしてみましょう。
こんな感じにキャラクターを表示させてみる。キャラクターの表示にはSprite Renderer、名前とメッセージにはGUITextを2つ利用している。
スペースキーを押すとメッセージが進む。今回の登場人物は"赤犬"、"白ひげ船員"、"エース"の3人。前回はスクアードやイゾウと分けていたが、白ひげ船員でまとめた。
駄コラ感満載ですが動くと嬉しいものですね。
今回行う処理は以下の通り。
・人物を表示するための空のSpriteを作成する(今回は左右に一つずつ作成)。
・前回分けた「人物」のリストに応じて、誰のメッセージかswitch文で判定する。
・空のSpriteに「人物」を表示させる。
1.人物を表示するための空のSpriteを作成する(今回は左右に一つずつ作成)
人物を表示させるスクリプトCharacter.csを空のSprite Rendererに格納。(抜粋)
public class Character : MonoBehaviour {
SpriteRenderer renderer;
public Sprite[] image;
void Start () {
renderer = GetComponent<SpriteRenderer>();
}
public void Change (int i){
renderer.sprite = image [i];
}
}
このスクリプトでは、imageに格納した画像をChange()関数で呼びだします。
2.前回分けた「人物」のリストに応じて、誰のメッセージかswitch文で判定する(抜粋)
public Character characterLeft;
public Character characterRight;
public GameObject nameText;
private void CharaText(ArrayList array){
switch((string)array[messageNum]){
case "赤犬":
characterRight.GetComponent
nameText.guiText.text = "赤犬";
break;
case "エース":
characterLeft.GetComponent
nameText.guiText.text = "エース";
break;
default :
characterLeft.GetComponent
nameText.guiText.text = "白ひげ船員";
break;
}
}
子オブジェクトのCharacterクラスのChange()関数を呼び出して、キャラクターの画像を表示させています。
characterRight.GetComponent
ここでChange()の引数は0だと赤犬の画像、1だとエースの画像、2だと白ひげ船員の画像にしてあります。
子オブジェクトの関数を呼び出すこともできましたし、一気に出来ることが増えますね!ここまで出来れば単純なノベルゲームが作成できるかも。
RPGに必要最低限の会話シーンはこれで一応大丈夫かな?よりゲームらしくするなら、画像のフェードインや跳ねるアクションも追加すると面白いですね。
---------------------------------------------------
個人ブログもよろしく!
動物園てくの
喫茶店てくの
漫画喫茶てくの