Unityのアドベンチャーゲーム制作アセットAdventure Creatorの公式サイトに掲載されている英語のチュートリアル を翻訳しながら進行中。今回も会話を作成する手順を勉強します。
会話を作成する Part3
前回Part2で2階層の会話ツリーを作成しましたが、とても基本的なものでした。他の選択肢を選ぶときに選択肢が有機的に表示されるようにするため、繰り返し選択したときに異なる回答をする選択肢も必要です。これらの機能を両方追加します。
まず最初に、キャラクターが何かを学ぶまで、プレイヤーにカバへの愛情を宣言させたくないので、デフォルトでこの”カバを好きだと伝える”選択肢を無効にしましょう。[Hierarchy]ウィンドウ > _Logic > _Conversations > Hippo base convプレハブを選択。
プレイヤーが質問をしたら、この選択肢”カバを好きだと伝える”を有効にします。つまり最初は、Hippos base convプレハブで作成した2つの質問選択肢のいずれかを選択することになります。
Cutsceneプレハブ”Talk about hippos”に戻り、”カバの生息場所をたずねる”選択肢があるアクションブランチを見つけます。
ウィンドウの空白部で右クリック > Add new Actionを選択して新しいアクションを作成。以下のように設定します。このアクションが実行されると最初の会話で”カバを好きだと伝える”選択肢を表示することができます。
- Action type: [Dialogue] [Toggle option]
- Conversation: [Hippo base conv]
- [2: カバが好きだと伝える]
- Set to: [On]
このアクションが2つの会話アクションに続いて実行されるようにブランチを再配線し、会話アクションに戻ります。
また、”カバのラテン語名をたずねる”選択肢に進んだ場合にも”カバを好きだと伝える”選択肢が有効になるようにブランチを再接続します。
さあ、プレイヤーがカバについて質問をして事実を学ぶと、NPCにカバを愛していると伝えることができます!
しかし、人々は現実の生活で同じ返答を繰り返し始めるとおかしいと気が付きます。だから、プレイヤーがカバの愛情を宣言するたびにNPCが何か違う言葉を伝えるようにしましょう。プレイヤーが”カバを好きだと伝える”選択肢を何回選択したかをゲームで把握できるように、Integer(整数型)変数を作成する必要があります。[AC Game Editor]ウィンドウ
> [Variables]タブ:Variables manager > [Local]ボタンをクリック > [Create new Local variable]ボタンをクリックします。現在のシーンに存在する必要があるだけなのでLocal変数を使用します。
変数の内容を下記の通りに設定します。
- Label: Love declarations
- Type: Integer
- Initial value: 0
Cutsceneプレハブ”Talk about hippos”の編集に戻ります。”カバを好きだと伝える”選択肢があるアクションブランチを見つけます。
ウィンドウの空白部で右クリック > Add new Actionを選択して新しいアクションを作成。以下のように設定します。
- Action type: [Variable] [Run sequence]
- Source: [Local]
- Variable: [Love declarations]
- # of possible values: [3]
- Run on loop?: [✓]
このアクションは、アクションが呼び出される度に異なる3つの出力ソケットを順に繰り返し実行します。これを使用してプレイヤーが”カバを好きだと伝える”選択肢を選ぶたびに異なる回答を出させることができます。
この新しいアクションと、選択肢のブランチを構成する2つのスピーチアクションを空白のスペースにドラッグし、次のように再配線します。
[Dialogue: もちろん僕はカバが大好きですよ!]アクション > [Variable: Run sequence]アクション > [Dialogue: 私もなんです!]アクション
これは、プレイヤーが”カバを好きだと伝える”選択肢を最初に選択したときにNPCが”私もなんです!”と返答するだけであることを意味します。[Variable: Run sequence]アクションで次のように2つの他の出力ソケットの新しいDialogue:Play speechアクションを作成します。
- Action type: [Dialogue] [Play speech]
- Speaker: [My NPC ]
- Line text: [前にもそう言ったわ。]
- Action type: [Dialogue] [Play speech]
- Speaker: [My NPC ]
- Line text: [知ってるわよ!]
“私もなんです!”の応答の場合と同様に、これらの2つの新しいアクションを再配線し、[Dialogue: Start conversation]アクションに戻ります。
シーンを再生して会話をテストします。あらかじめカバについての質問を行い、繰り返してあなたがカバを好きだとNPCに伝えると毎回異なる応答を得るでしょう。
ということで、ここまでの内容をもとに少しセリフを調整したCutsceneプレハブを[ActionList Editor]ウィンドウですべて表示した状態の画像がこちらです。拡大画像
これで完成です。ここまで作成したシーンをWebGLでビルドしてみました。
ちなみに、会話を終了する選択肢”立ち去る”を選ぶと会話のCutsceneアクションが終了してゲームの進行が止まるので、もう一度アクションをスタートさせるためのメニューボタンを画面右下に表示するようにしました。
カバについての話題を題材にして会話の作成方法について3回に分けで勉強しました。表示方法などについてはフェード等の効果が設定できるようなので、またあらためて調べてみたいと思います。