えんぴつのブログ

えんぴつのブログ

プログラミングを書いたり、ゲームをしたり
夢は安定した老後

Amebaでブログを始めよう!
 -UnityでRPGを作りたい...!!

 そんな管理人の備忘録


 前回に記事【ゲーム開発】外部テキストを構文解析してみよう【unity】では、テキストを「人物」と「台詞」をそれぞれリストに分けて格納しました。

text3
 この会話を実現してみる。

 今回は「人物」のリストを利用して、メッセージと連動させたキャラクター表示をしてみましょう。
chara1
 こんな感じにキャラクターを表示させてみる。キャラクターの表示にはSprite Renderer、名前とメッセージにはGUITextを2つ利用している。

chara3
 スペースキーを押すとメッセージが進む。今回の登場人物は"赤犬"、"白ひげ船員"、"エース"の3人。前回はスクアードやイゾウと分けていたが、白ひげ船員でまとめた。

chara2
 駄コラ感満載ですが動くと嬉しいものですね。


 今回行う処理は以下の通り。
 ・人物を表示するための空の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().Change(0);
    nameText.guiText.text = "赤犬";
    break;
   case "エース":
    characterLeft.GetComponent().Change(1);
    nameText.guiText.text = "エース";
    break;
   default :
    characterLeft.GetComponent().Change(2);
    nameText.guiText.text = "白ひげ船員";
    break;
  }
 }

 子オブジェクトのCharacterクラスのChange()関数を呼び出して、キャラクターの画像を表示させています。
 characterRight.GetComponent().Change(0);
 ここでChange()の引数は0だと赤犬の画像、1だとエースの画像、2だと白ひげ船員の画像にしてあります。

 子オブジェクトの関数を呼び出すこともできましたし、一気に出来ることが増えますね!ここまで出来れば単純なノベルゲームが作成できるかも。

 RPGに必要最低限の会話シーンはこれで一応大丈夫かな?よりゲームらしくするなら、画像のフェードインや跳ねるアクションも追加すると面白いですね。

 ---------------------------------------------------
個人ブログもよろしく!
 動物園てくの
 喫茶店てくの
 漫画喫茶てくの