Apricotのキャラクターに指定の台詞を喋らせる方法

メールでキャラクターに指定の台詞を喋らせる方法を聞かれたので、こちらの方にまとめてみました。

キャラクターに指定の台詞を喋らせる方法は、Pythonで書かれたスクリプト経由で、キャラクターが定義されているXMLファイルのsequenceで記述されていることを呼び出すことで実現します。

特に、指定のタイミングで台詞を喋らせる場合には、新しいsequenceを定義する必要があるかと思います。新しいseqnenceを定義するには、まだ使われていない名前を、XMLファイルのsequenceのname属性に設定してください。

実際に任意の台詞を喋らせる場合には、下記のScriptクラスのメソッドを使うと実現できます。尚、Scriptクラスはスレッドセーフなシングルトンです。

  • GetSequences
  • Prepare
  • TryEnqueue

最初にGetSequencesメソッドを呼びだします。下記の例では、XMLで定義されているFooという名前のsequenceを取得しています。GetSequencesメソッドの第一引数は、sequenceの名前、第二引数は同じ名前のsequenceがあった場合に重複を許すかを示す論理値です。
次に、Prepareメソッドを呼び出し実際に実行可能なsequenceにします。第一引数にsequenceの列挙可能なコレクション(IEnumerable)、第二引数に実際に実行するsequenceの条件をPredicateデリゲートで指定します。全てのsequenceを実行するには、第二引数をNULL(PythonではNone)を指定します。
最後に実行可能なsequenceを、TryEnqueueでキューに入れることで指定のSequenceを実行できます。

Script.TryEnqueue(Script.Prepare(Script.GetSequences("Foo", True), None))


参考:

Apricot 解説サイト
http://apricot8bit.hp.infoseek.co.jp/

Apricotとは
Apricot FAQ
Apricot Wiki
キャラクター作成ガイド
mixiコミュニティ「Apricot開発室」