この記事は3Dホラーゲームを作る際、どのように機能を実装したのかをザックリまとめたものです。
出来るもの
目次
準備
Fungusをインポート
※現在FungusはUnityAssetStoreからDL出来ない為、GitHubからDLします
スクリプト追加
前回 作成したSelectRayOutlineの派生先として「ClickStartTalk」スクリプトを作ってオブジェクトに追加する。
これによりアウトライン表示中(HitNow()内)にてStartTalk()の処理が走るので、クリックすると会話シーンを発生させる処理が追加される。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Select中に左クリックするとチャットが出るスクリプト
/// </summary>
public class ClickStartTalk : SelectRayOutline.cs
{
[SerializeField]
private Fungus.Flowchart flowchart = null;
[SerializeField]
private string strMessage = null;
private bool isTalkNow = false;
public override void HitNow()
{
if(Input.GetMouseButtonDown(0) && !isTalkNow)
{
StartTalk();
}
}
private void StartTalk()
{
// 準備
isTalkNow = true; // 会話中、再度会話を開始させない
// 会話開始
flowchart.SendFungusMessage(strMessage);
}
public void FinishTalk()
{
isTalkNow = false; // 再度会話可能
}
}
Flowchart作成
[Tools]→[Fungus]→[Create]→[Flowchart]でFlowchartを作成
1.作ったFlowchartから「Open FlowChart Window」をクリック
2.Execute On Event →「Message Received」に変更
3.Message → 任意の名称(今回私はClipboardとしました)
4.右下の+ボタンを押して「Narrative/say」を追加
6.右下の+ボタンを押して「Scripting/Invoke Method」を追加
7.TargetObjectに「ClickStartTalkスクリプトを追加したオブジェクト」を指定
8.TargetComponentに「ClickStartTalk」を指定
9.Target Methodに「FinishTalk()」を指定
Hierarchyウィンドウに戻ってClickStartTalkスクリプトを見る
10.先ほど追加したFlowchartオブジェクトをClickStartTalkのFlowChartに指定
11.3で書いたMessageの「任意の名称」をStr Messageに書く