4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

Fungusでスクリプトから会話イベントを発生させる方法

デモ

今回作ったサンプルはこんな感じです。

ユニティちゃんがウニに触れると会話イベントが発生します。

環境

Windows10
Unity 2017.3.1f1
Fungus 3.9.1
ユニティちゃん2D

分からなかったこと

FungusのFlowchartのブロックが始まるイベント(Execute On Event)をCollision2Dに指定したとき、
どういう条件で呼ばれるのか公式ドキュメントを見てもよく分からなかった...

なので今回の方法は接触したとき以外でも幅広く使えるだろうサンプルを作ってみました。

解説

画像1E.png

Flowchartの最初のブロックのExecute On EventをMessage Receivedに設定します。
今回はサンプルなのでMessage名は"test"に設定しておきます。

次にスクリプトです。
今回は接触したときに会話イベントを発生させるため、UnityChan2DControllerの中に直接記述しました。

UnityChan2DController.cs
    private void OnCollisionEnter2D(UnityEngine.Collision2D collision)
    {
        //Uniタグがつけられたオブジェクトと接触したとき
        if(collision.collider.CompareTag("Uni"))
        {
            //シーン中のFlowchartのExecuteOnEventに設定されたMessageReceivedを取得する
            MessageReceived[] receivers = GameObject.FindObjectsOfType<Fungus.MessageReceived>();
            //取得できた場合
            if (receivers != null)
            {
                //すべてのMessageReceivedに"test"イベントを送信する
                foreach (var receiver in receivers)
                {
                    receiver.OnSendFungusMessage("test");
                }
            }
        }
    }

こんな感じにFlowchartにメッセージを送信して会話イベントを発生させました。
FungusのSendMessage.csにメッセージを送る処理が書かれていたのでそこを参考にしました。

最後に

Fungusを知ったとき、こんな便利なアセットがあるんだなと思いました。
ゲームジャムでノベルゲームなどを作る機会があったら使ってみたいなと感じました。
Fungusの詳しい使い方はまだよくわかっていないので、ほかの方の記事を参考にしてみてください。

宣伝になりますがAppStoreにCocos2d-x,Unity,OpenGLESで作ったゲームをリリースしているのでぜひ遊んでみてください!
AppStore

ライセンス

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
4
Help us understand the problem. What are the problem?