
マイケル
どうもみなさんこんにちは!
マイケルです!
マイケルです!

エレキベア
こんにちはクマ〜〜〜

マイケル
前回、オリジナルゲームを作成しているとの記事を書いたのですが、
その中でもセリフ機能の実装について今回は紹介します!
その中でもセリフ機能の実装について今回は紹介します!

エレキベア
このセリフの部分のことクマね

マイケル
その通り!
Fungusというアセットを使って実装しているんだ
Fungusというアセットを使って実装しているんだ

マイケル
今回はFungusを使った実装方法について解説するよ!
Fungusの導入方法

マイケル
導入はAssetStoreで「Fungus」を検索してインポートすれば完了です。

エレキベア
簡単クマ〜〜〜
Fungusを使った実装方法

マイケル
導入が完了したら以下の手順で会話機能を作成していきます。
1. Flowchartの作成
2. Characterオブジェクトの作成
3. メッセージの作成
Flowchartの作成

マイケル
会話の内容はフローチャートで作成していくのですが、そのためにFlowchartスクリプトを持つオブジェクトが最低一つは必要になります。

マイケル
Tools -> Fungus -> Create -> Flowchart
より、オブジェクトを作成しましょう。
より、オブジェクトを作成しましょう。

エレキベア
きのこマークがついてかわいいクマ
Characterオブジェクトの作成

マイケル
次に、会話させるキャラクターのオブジェクトを作成します。
Flowchartと同じく
Tools -> Fungus -> Create -> Character
から作成しましょう!
Flowchartと同じく
Tools -> Fungus -> Create -> Character
から作成しましょう!

マイケル
キャラクターオブジェクトには、名前とキャラクターの画像を設定します。
メッセージの作成

マイケル
ここまでで準備は完了で、あとはメッセージを作っていきます。
・ゲーム開始時の出力

マイケル
まずは手始めにゲーム開始時のセリフを作成してみましょう!
Tools -> Fungus -> Flowchart Window
を選択するとフローチャートのウィンドウが開きます
Tools -> Fungus -> Flowchart Window
を選択するとフローチャートのウィンドウが開きます

マイケル
ブロックにはそれぞれ誰が何のセリフをいうか、等の情報を記述していきます
ブロックは右クリック -> AddBrockから追加できます。
ブロックは右クリック -> AddBrockから追加できます。

エレキベア
セリフの呼び出しや選択パターンをここで分けるクマね

マイケル
その通りだよ
ブロック内のExecute On Eventには呼び出されるタイミングを設定し、
初期値の「Game Started」はゲーム開始時の出力処理になります。
ブロック内のExecute On Eventには呼び出されるタイミングを設定し、
初期値の「Game Started」はゲーム開始時の出力処理になります。

マイケル
Commands欄にはSayコマンドでセリフを設定して、Callコマンドで呼びだすブロックを指定して会話の流れを作るのが基本となります!

マイケル
上記のように設定した状態でゲームをスタートするとセリフが出てきます。

エレキベア
ゲームっぽいクマ〜〜〜!!

マイケル
セリフのUIも黒でおしゃれでいいよね
・キャラクターに話しかけた時

マイケル
次に自分で指定したタイミングで呼び出したい場合の設定方法です!
ここでは例としてキャラクターに話しかけた時の設定とします
ここでは例としてキャラクターに話しかけた時の設定とします

マイケル
フローチャート上はExecute On Event にMessage Receiveを指定し、メッセージに任意の値を設定してください。
スクリプトからの呼び出しでメッセージの値を指定することで呼び出すことができるようになります!
スクリプトからの呼び出しでメッセージの値を指定することで呼び出すことができるようになります!

マイケル
スクリプト側の設定としては、まずキャラクターの会話範囲を指定するためコライダを設定し、そこにスクリプトを作成してアタッチします。
(下記では、「TalkArea」の箇所になります)
(下記では、「TalkArea」の箇所になります)

マイケル
会話範囲にプレイヤーが入っている時にボタンが押されるとプレイヤーのスクリプトの処理を呼び出すようにしています。
プレイヤー側のスクリプト処理は以下の様に記述しています。
プレイヤー側のスクリプト処理は以下の様に記述しています。

マイケル
トリガーからの呼び出しで会話情報が設定された後、TalkStart()の部分でメッセージの呼び出しを行なっています。
flowchart.SendFungusMessage()にメッセージを渡すことで呼び出すことができます。
flowchart.SendFungusMessage()にメッセージを渡すことで呼び出すことができます。

エレキベア
これで会話ができる様になったクマ!

マイケル
一旦できるようになったね
でも、この状態だと会話している最中に他の処理が行われてしまうことがもありえるため、
もう一歩、会話中の状態を取得して判定できるようにしていきます!
でも、この状態だと会話している最中に他の処理が行われてしまうことがもありえるため、
もう一歩、会話中の状態を取得して判定できるようにしていきます!

マイケル
フローチャート上で、下記の様に会話の始めと終わりでboolean型の変数を変更する様にします。
変数は、フローチャート左下の+マークから追加できます!
変数は、フローチャート左下の+マークから追加できます!

マイケル
こうすることで追加したboolean型の変数で会話中かどうかを判定できるようになりました。
スクリプトを下記の様に修正します。
スクリプトを下記の様に修正します。

マイケル
上記のようにFlowchartで設定した変数を取得することで、会話中は処理を行わないなど判定を入れることができます!
これで会話の処理は完成です!
これで会話の処理は完成です!

エレキベア
いい感じに会話できてるクマ〜〜〜!!
おわりに

マイケル
会話機能アセットFungusの使い方を見ていきましたが、いかがだったでしょうか。

エレキベア
ゲームっぽくなって楽しかったクマ〜〜〜〜

マイケル
Fungusには上記で紹介した処理以外にも機能がありますし、会話のアセット自体もFungus以外にたくさんあります。
是非他の機能も調べてみてください!
是非他の機能も調べてみてください!

マイケル
それでは今回はこの辺で!
アデュー!!
アデュー!!
【Unity】Fungusを使ってセリフ機能を実装する 〜完〜