忍者ブログ
はじかきれんしゅうちょう いろいろ
Admin  +   Write
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


※立ち絵については・26 ☆立ち絵差分表示(決定版)
を見たほうがいいです
(この記事は過去にいろいろ試してたやつの名残なので)


まとめです。
立ち絵差分……えっと、先に定義をするか

・①立ち絵フルファイル式
……差分を個別ファイルで全部まるごと用意するタイプ。
 →image ●●を使うといいと思う(やったことないけど)。

・②立ち絵差分顔面セット式
……表情の差分を、ベースと顔のセットで用意するタイプ。
  →image ●●を使う(横幅そのままで差分を切り出すことが必要)
  →im.Compositeを使う 

・③立ち絵差分ふくわらい式
……表情の差分を、べースとそれぞれ顔パーツで用意するタイプ。
  →im.Compositeを使う 


で、私は主に②でやっているのでそれを踏まえたお話というか
メモ書きになりますがというのを前提に、まとめ。

あといつも通り青がラベル外で、赤がラベル中の記述です。

image ●●を使うとき 
(試行錯誤
記事)→
差分チェンジ」 「立ち絵位置、拡大率

#名前と色と一緒にimageで指定します。「aa」で指定。
define k = Character('給仕', color="#c8ffc8", image="aa")

#キャラクター拡大率(必須ではない)1が現サイズ。
#立ち絵フルファイル式なら恩恵あるかも。差分やるときはわかんない。
image aa big = im.FactorScale("/stand/aa000.png", width=1)
image aa sm = im.FactorScale("/stand/aa000.png", width=0.4)


#立ち絵スムーズ表示スクリプト(必須ではない)
#alpchaは透明度で、linearは速さ?(小さくすると移り変わりが短くなる)
transform smooth:
    on show:
        alpha 0.0
        linear 0.5 alpha 1.0
    on hide:
        alpha 1.0
        linear 0.5 alpha 0.0

#表示します。(スクリプト)
#at topをつけると上からベースになっていい具合の位置に表示されるぜよ。

show aa sm at top

#立ち絵スムーズ表示スクリプトの恩恵を得たい場合は、「, smooth」をつけます。
show aa sm at top, smooth
________________

インデントはコピペするときに狂っちゃったから(ごめん)自分で直してね。
で、これでさらに②差分顔面セット方式で差分を変えるやり方。
差分は切り出すとき横幅と上からの距離をべース画像から変えないように。
具体的には試行錯誤記事参照です。
差分を表示するには↓


define ai = Character("アイリーン", image="ee") #タグ用ee とします。
image h00 = "/st_aa/aa000.png"  #eeではない指定外にべース画像を用意して定義します。
image ee h01 = "/st_aa/aa001.png" #eeの顔、その1としてh01
image ee h02 = "/st_aa/aa002.png" #eeの顔、その2としてh02で設定。
 
    show h00 at top #ベースを普通の画像として表示。
    show ee h01 at top   #差分画像を表示。座標はここがもとになるっぽいです。
    ai "「こんにちは!」"#eeの顔がh01でしゃべる。
 
  
    ai h02 "「……」"   #セリフを言わせながら差分をチェンジ。h02になる。




im.Compositeを使うとき
(試行錯誤記事)→
「顔差分VS私」「別のrpyで定義できる+高さ調節」
 「立ち絵を消したい」、「1シーン中に同じ顔が出せない?」

過去記事抜粋コピペします。こっちは座標が必要なのが特徴。
切り出しをベースと同じ大きさにするなら座標不要だけど、
どっちにしろなんでかベース画像の縦横サイズの記入が必要。
また、1個ずつ指定するのでコピペがめんどいかも?
(例だとtest1、test2となるような、青の塊をひたすら増やして定義が必要なので)

■② im.Compositeを使う+顔セット+座標指定あり
場所:身体→/images/test/body/b1.png

   顔→/images/face/te_ff.png

image test1 = im.Composite(
    (316, 600), #最終的なサイズ(身体パーツというかベースになる画像の縦横サイズです)
    (0, 0), "/test/body/b1.png", #身体パーツ
    (114, 54), "/test/face/te_ff.png") #顔セットパーツ   

    show test1 
_______________________

■③、 im.Compositeを使う+(顔パーツ複数構成+特殊パーツも)+座標指定あり
 →②を応用してパーツを細かくしてみた版です。
場所:身体→/images/test/body/b1.png
   目→/images/face/te_m1.png
   口→/images/face/te_k1.png
   特殊→/images/face/te_oko.png (怒りマークをつけてみます)

image test1 = im.Composite(
    (316, 600), #最終的なサイズ
    (0, 0), "/test/body/b1.png", #身体パーツ
    (111, 63), "/test/me/te_m1.png", #目パーツ
    (122, 106), "/test/kuchi/te_k1.png", #口パーツ
    (153, 27), "/test/parts/te_oko.png") #表情パーツ

    show test1
PR
※立ち絵については・26 ☆立ち絵差分表示(決定版)
を見たほうがいいです
(この記事は過去にいろいろ試してたやつの名残なので)


●やっぱり名残惜しいんで考えてみた差分チェンジ方式。
用意してあるのはベース画像と、座標指定で使う用に切り抜いた顔差分。

①公式のここを見ます。→ 立ち絵の表情を切り替える

組んでみます。
define ai = Character("アイリーン", image="ee") #タグ用ee とします。
image h00 = "/st_aa/aa000.png"  #eeではない指定外にべース画像を用意して定義します。
image ee h01 = "/st_aa/aa001.png" #eeの顔、その1としてh01
image ee h02 = "/st_aa/aa002.png" #eeの顔、その2としてh02で設定。
 
    ns "京尭31年、農村部ーー"
    show h00 at top #ベースを普通の画像として表示。
    show ee h01 at top   #差分画像を表示。座標はここがもとになるっぽいです。
    ai "「こんにちは!」"
 
    # 立ち絵を eileen concerned に切り替える
    # e には eileen イメージタグが関連づけられているので、ここで eileen concerned が表示される
    ai h02 "「……」"   #セリフを言わせながら差分をチェンジ。


はいズレます (画像は一例)




ということで小さいほうの(切り替える)画像について位置指定を作って
ちみちみ揃えていきます。


transform top2:  
#transform ●●で show at●● と位置が対応するよ。
    ypos 0.1   #上下位置
    xpos 0.5     #左右位置

と思ったけど無理!!
せめて左上ぞろえで書き出しておかないと無理!!!

揃えてもダメでした。
→じゃーとおもって左上+横幅をそろえたらこれはいけました。

つまり、立ち絵の切り替えは
①ひたすらshowとかhideする (以前の記事、立ち絵バトル1~3)
②切り出し差分チェンジキャラ指定(今回の記事)
の方法があり(いや他にもあるかもだが)

②の場合は差分切り出しを横幅そのままで切ること。
つまり、こういうベースに対して



 ←これは×(ずれる)

 ←これは〇
(上からの距離と横幅をベース画像と同じにする)

そんな感じです。

こっちの方法のほうがすっきりはするけどスクリプトがどうかな。
名前指定の部分は置換でタグにしてるから、あまりいじりたくないんだよね。
変な半角とか入ると途端にエラーがでちゃうので、なるべく機械的に
サクっと置換で終わらせたいのだ。
顔差分を指定するとなると手でポチポチしないといけないじゃん??
(ゲーム画面見ないとイメージがわかないタイプなのでシナリオ書きながら指定する気はない)

置換について>
シナリオ中に例えばキャラ名「クマ」なら
クマ「セリフ~~~」ってシナリオに書いたとして、スクリプトにするとき
    ai "「セリフ~~~」"
にする必要があるから、
クマ「 →    ai "
」 →
みたいに変換しているのです。説明難しい


ちょっとまたこんど加筆かも。


※立ち絵については・26 ☆立ち絵差分表示(決定版)
を見たほうがいいです
(この記事は過去にいろいろ試してたやつの名残なので)



立ち絵を出すのが
    show ●●  at migi2, smooth   
という一文。
で、顔の差分指定(●●)は別のところでやってるので省くとして、
立ち絵の変更もよくわからないので同じ位置に出している。

    show ●●  at migi2, smooth   
キャラ「セリフ1」
    show ●◇  at migi2, smooth   
↑こう。するとセリフ1のあとに別の顔に(●●→●◇)なってくれる。


のだが、この後同じシーン(背景が変わるまでを1シーンとする)で
もう一度●●を使おうとすると、うまく出ない。

    show ●●  at migi2, smooth   
キャラ「セリフ1」
    show ●◇  at migi2, smooth   
キャラ「セリフ2」
    show ●●  at migi2, smooth    ←出ない!!!

そん時はいったん●●をhideしてからもっかい出すようにすると出る。
(略)
キャラ「セリフ2」
    hide ●●  at migi2, smooth    ←消す
    show ●●  at migi2, smooth    ←出す

以下の例だと、aa4をもっかい出すためにhideしてからshowしています。


   
    gk "ニオ。"
    show aa4  at migi2, smooth   
    ns "途方にくれるニオの前に現れたのは、幼馴染のライでした。"
    show ng5  at left2, smooth
    gk "見たか?  この間のお触れ。"
    show aa5  at migi2, smooth 
    ar "年貢のことでしょ? 正直もうこれ以上はお手上げだよ……。"
    show ng1  at left2, smooth
    gk "それだけじゃない。見ろ、そこに立て札があるだろ。"
    hide aa4  at migi2, smooth 
    show aa4  at migi2, smooth 
    ar "……?"




ていうか変更これでいいのか??
もしかして一回一回消したほうがいいのか!???
わかりません!!

公式の「立ち絵の表情を切り替える」解説は差分じゃなくて一枚一枚用意しているのを
想定しているように見えるんですが・・・どうなんだろう・・・

あと, smoothの指定について、
・alpchaはどうやら透明度。
・linear を小さくすると移り変わりが短くなる。

transform smooth:
    on show:
        alpha 0.0
        linear 0.5 alpha 1.0
■すごい苦しんだ上でやっとできたので大勝利と言わせてほしい
いや、マニュアルの解釈が難しかっただけで、
マニュアル通りにやったらできたぜってだけの話なんですけど・・・
合言葉は、「パーツ画像はいらない」です。

■やったこと
map.rpyというファイルを別に作ってscriptとか入ってるフォルダに入れました。
ごっちゃになりそうだったので・・・



screen example_imagemap(): #initチェックやったら()をつけろと言われた。
    imagemap:
        ground "/images/map/mapbase.png" 
#ベース全体画像。選択前の画像。背景(Bg)の上にのるっぽい。
        hover "/images/map/mapon.png"  
#ホバー画像=選択後の全体画像(※)これが???でつまづいた

 #以下、クリックさせる場所の指定。数字は順にX座標、Y座標、サイズ幅、サイズ高さ。   
#幅と高さがなんかうまいことかみあわないと画像がうまくホバー画像に切り替わらないみたい。
 
        hotspot (239, 256, 106, 135) clicked Return("farm")#農場
        hotspot (343, 238, 98, 135) clicked Return("shop")#市場
        hotspot (422, 205, 100, 155) clicked Return("pare")#宮殿
        hotspot (553, 234, 98, 155) clicked Return("city")#市街地
        hotspot (652, 240, 108, 135) clicked Return("go home") #農村部
 
#以下、画像内での、それぞれクリックさせたい座標のメモ。
#市場:sel2 座標(343,238)
#宮殿:sel3 座標(422.204)
#市街地:sel4 座標(553.234)
#農村部:sel5 座標(652.240)
 
              
label example: 
#こっからがラベル内(普通に目に見えるスクリプトを書くところ)
#マニュアルのコピペなんで説明はいらんともうけどそれぞれresultにとびます!
    call screen example_imagemap
    
    $ result = _return
    #
    if result == "farm":
        io "You picked swのうじょうing!"
        
    elif result == "shop":
        io "You picked scienいちば!"
        
    elif result == "pare":
        io "You picked artきゅうでん!"
        
    elif result == "city":    
        io "You went cotしがいち!"
        
    elif result == "go home":
        io "You went いえhome!"

#ここのメッセージ発話者だけど、(io)別のスクリプトファイルで
#事前に指定した奴じゃないとエラーるから気を付けてね。

サンプルを雑に改変した跡がある。すいません

解説すると、今までの経験から飛びたいとこのパーツのホバー画像を個別に作ってた。
でも、二枚の全体画像があれば別にパーツ画像はいらなかった。
どういうことかというと、

↓1、全体画像選択前(ベース)   



  ↓2、全体画像選択後(ホバー)

必要なのは上の二枚で、(選択しているところが黒くなるという例です)

こういう↓個別パーツ画像

は、必要なかった。
座標を指定すると、勝手にその部分だけ触れたとこがホバー画像になってくれるんです。
す、すごい。ら、らくだー!!!!

某ツールではボタン作ろうとするとそれぞれon,off,over,hoverとか必要だったじゃん!?
だから勝手に騙された。
こんな幸せ(楽にできるという意味)があっていいはずないって・・・!

いや、マニュアル通りなんですけどね。
・修正が必要な箇所が見つかったよ

・スクリプト治すよ
・opt.rpyでverをふりなおすよ

・もっかい書き出すよ(前のこと忘れててここでつまづきかけた)

・データさしかえて
・readme書き換えて

圧縮フォルダつくるよ


≪ 前のページ   *HOME*   次のページ ≫
ブログ内検索
このブログについて
ゲーム作りたい人のメモ。
講座というほどのものでもないおぼえがきです。
何か参考になるところがあればご自由にどうぞ。
ほぼ自分用なので、日本語いきあたりばったりでごめんなまし。

※ここに書いたことは全体的に
「本当はなんとかする方法があるかもしれないけど、私にはわからない」が多く…
あんまり仕組みを理解していないし誤解もあるかもしれません。
というわけで責任は負いません。ごめんなさい!

リンク:ゲーム作ってる本館
material by bee  /  web*citron
忍者ブログ [PR]