【コピペで作る】表情の変化を実装する。【伺か・yaya】

ukagaka

前回

【コピペで作る】撫で反応を実装する【伺か・YAYA】

今回すること

  • 表情差分を変更できるようにする。
  • 差分の別名を登録して管理しやすくする。

必要なもの

  • 差分画像(適量)
  • やる気 大さじ一杯

表情差分を用意する。

適当な表情差分を用意してsurfaceN.pngにリネームしてsurface0.pngと同じフォルダに入れて下さい。

こちらの例では曜日Tシャツ的な差分を用意してsurface1.pngからsurface7.pngまでを作成してみました。
それから、surface0.pngをコピーしてsurface501.pngを作成しておいてください。
ukagaka_Kesigomu02.png
…いい加減な画像ですが、わかりやすくていいでしょう?

追加後のファイル構成

└─shell 
    └─master 
            descript.txt 
            menu_background.png 
            menu_foreground.png 
            menu_sidebar.png 
            surface0.png 
            surface1.png 
            surface2.png 
            surface3.png 
            surface4.png 
            surface5.png 
            surface6.png 
            surface7.png 
            surface501.png 
            surfaces.txt 

実際に表情に変化をさせる。

今回は撫で反応でsurface1.pngに変化するようにしてみましょう。
dic_MouseStroke.ukaを開きMouseStroke_0Head関数の中身をこのように変更します。

//頭部撫で 
MouseStroke_0Head { 
    "\s[1]えへへ" 
} 

環境によりバックスラッシュだったり円マークだったり変わりますがどちらも同じです。
保存したらゴーストを呼び直して撫でてみてください。
表情の変化の実装はここまで

先ほど実装した501を呼び出す。

下記のようにして何度か撫でると、501が呼ばれるでしょう。

//頭部撫で 
MouseStroke_0Head { 
    "\s[1]えへへ" 
    "\s[501]501だよー" 
} 

501が表示されると、撫でられなくなったんじゃないでしょうか?
現状501には頭部判定がありません。
surfaces.txtを修正して問題を解決します。

surfaces.txtを確認する。

以前下記のように実装しました。
これは、surfaceの0から500番までこの当たり判定で実装する。という内容です。

surface0-500 { 
    //優先度:座標が被っても低いほど優先される。 
    //collision優先度,座標横,座標縦,座標横,座標縦 
    collision300,47,17,175,79,Head 
} 

修正案としてこのように書き換えてみてください。

surface0-500 { 
    collision300,47,17,175,79,Head 
} 
surface501 { 
    collision300,47,17,175,79,Head 
} 

もしくはこのようにしても大丈夫です

surface0-501 { 
    collision300,47,17,175,79,Head 
} 

もし追加した画像が、0-500番までとポーズが違ったりするなら適切な座標を指定してください。
これで当たり判定の修正は完了です。

ファイル管理を少しだけ簡単にする

surfaceを呼び出す際、番号の頭についた連続した0は無視されます。
なので、下記のようにファイル名を変えても今まで通り呼び出すことができます。
名前順でファイルをソートする際はこちらの方が快適です。

└─shell 
    └─master 
            descript.txt 
            menu_background.png 
            menu_foreground.png 
            menu_sidebar.png 
            surface000.png 
            surface001.png 
            surface002.png 
            surface003.png 
            surface004.png 
            surface005.png 
            surface006.png 
            surface007.png 
            surface501.png 
            surfaces.txt 

surfaceを番号以外で管理する。

表情の変化を実装できるようになりましたが、このままでは非常に管理がしにくいです。
いつだって下記の表を手元に置いておくのは面倒でしょう。

surface番号 内容
0 何もなし
1 月曜
2 火曜

別名・エイリアスを登録する。

surfaceに別名を付けて呼び出せるようにします。
surfaces.txtをこのように書き換えてみます。
GetuyouなどはEgaoやWaraiなどわかりやすいように適時変更してください。

charset,UTF-8 

descript { 
    version,1 
} 

//別名の登録 
sakura.surface.alias { 
    //別名,[surface番号] 
    Getuyou,[1] 
    Kayou,[2] 
} 

surface0-500 { 
    //優先度:座標が被っても低いほど優先される。 
    //collision優先度,座標横,座標縦,座標横,座標縦 
    collision300,47,17,175,79,Head 
} 
surface501 { 
    collision300,47,17,175,79,Head 
} 

dic_MouseStroke.ukaを編集し、MouseStroke_0Headをこのように書き換えてみます。

MouseStroke_0Head { 
    "\s[Getuyou]月曜だよ" 
    "\s[Kayou]火曜だよ" 
} 

問題なく動作しましたか?
これで快適に表情の変化管理できるようになりましたね。

次回

今回は画像そのものの差し替えで変化をさせましたが、
次回ではパーツごとの追加や乗せ換えができるように変更する予定です。
【コピペで作る】伺か・ゴーストの差分画像を福笑い形式で変更する。【YAYA】