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

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

■サイドイメージ=メッセージボックス上に出る顔グラ
に挑戦しました。


〇できた
・普通に表示する
 →まあ、マニュアルの通りやれば・・・

image side aa 01 = "aa/aa001.png"
#↑image side ★★で定義して、

define tr = Character('トラヴィス', color="#f7b9b7", image="aa")#キャラ名定義

 シナリオ内で記述、ホイ

     tr 01 "セリフここに"# 


・位置の調整(screens.rpyのここ)

    ## サイドイメージ(テキストボックス横に表示するイメージ)があれば、テキスト
    ## の上に表示します。ただし variant(画面のタイプ)が phone の場合は、スペー
    ## スが足りないので表示しません。
    if not renpy.variant("small"):
        add SideImage() xalign -0.06 yalign 1.0

 ちょっと右に来すぎていたのでXを0.0→-0.06にしています。



〇できなかった
 ・通常の立ち絵みたく、「im.Composite(」で差分を切って
  ベースにのせて表示させるやり方
  side とかつけてもダメでした、あきらめて1枚1枚ファイルつくります・・・
PR


選択肢枠用画像を別途用意したものに差し替えたとき困ったことのメモ。

gui.rpy
・(最初の2行のところ)用意した画像の高さと幅の値を指定しないとイカン
・Boders=ボタンの上に乗っかる文字の距離 
 →2こめをいじったら文字の高さが変わったので、上からの距離?
 (yalignではかわらなかった・・・・)
・アイドル中、ホバー中の文字の色を変えるのもここ。
◆最近優勝って言葉をよく聞くけど意味が分かっていません!!!
スクリーンについてちょっとだけ前より理解したので書いていきます。

スクリーンって呼び出すものらしいですよ。
チュートリアルをコピペしても出ないなあって苦しんでたんですが
そもそもscreen.rpyを見ろやという話でした。

screen.rpyにこういうスクリーンがありますわ~と書いておいて
screen rerult_screen():#→screen ●●_screen():ダヨ
実際のスクリプト(ラベルの中)では呼び出して表示させたり隠したりする。
show screen rerult_screen #呼び出し!
    $ renpy.pause()  #ポーズがないとだめみたい。  ウェイトに変えられるか試す   ?   
    hide screen rerult_screen #呼び出し
みたいな使い方をするっぽいです。

現状のレベルだと隠し方の挙動がちょっと意味不明でノーコンなんですが
(変数の内容を表示させたくて、でも数字を代入すると勝手にshowされちゃう?)
そこは(今後も頑張れば)未来に解き明かされることでしょう。
以下に例をば。


#◆screen.rpyに足す。
##ほかのスクリーンを参考にボタンとかテキストとかを載せたが正直何もわかってない。
screen rerult_screen():
    frame:
        xpos 20 ypos 10
        vbox:
            text "リザルト" size 25
            text "探索場所:[tans_starna] " size 23#※「tans_starna」は変数の名前です。
            textbutton "もう一度同じ場所を探索" action Jump("retry") xpos 0.1 ypos 1.5 background "#EEE"

#◆こっちはscript.rpyとかのシナリオ中のラベルの中に。
label next:        
  
    show screen rerult_screen #呼び出し!
    $ renpy.pause()  #ポーズがないとだめみたい?  ウェイトに変えられるか試す      
#    e"リザルトよびだした かいめing!"#なんかセリフとか 
    hide screen rerult_screen #消し消し!
    
    
label retry: 
#    e"リザルトよびだした かいめing!"#なんかセリフとか    

なお、screen.rpyでボタンの出る出ないを変数で管理するにはこんな風↓
※action Jumpは飛び先ラベルを表しているので作らないとエラーになるとおもう

        vbox:
            if first == True:#変数「first」がtrueのときとそうでないとき
                textbutton "◆戻る◆" action Jump("makeenda") xpos 0.53 ypos 4.9 background "#300"
            else:
                textbutton "◆説明◆" action Jump("makeabout") xpos 0.53 ypos 4.9 background "#300"
            if kata_rr > 0::#変数「kata_rr」が0より大きいときとそうでないとき
                textbutton "赤のかたまり………所持:[kata_rr]" action Jump("rrkt") xpos 2.3 ypos -1.5 background "#900"
            else:
                textbutton "赤のかたまり………所持:[kata_rr]" action Jump("none") xpos 2.3 ypos -1.5 background "#900"

なんで表示させないんじゃなくて代わりのボタンを出す風にしているかというと、
表示させないようにすると上や横に勝手に詰められて座標がずれちゃうからです!!!
なんでかわかんなくてですね………応急措置みたいですね……

xposとかyposが座標、backgroundが文字の背景色です。sizeが文字の大きさ。
action Jump("none")がジャンプするラベル。

↓ところでこのフレームってやつはguiフォルダに入ってる画像が使われるっぽく
文字色によっては画像を差し替えちゃうと見づらくなったりするので注意。
いやどっかで設定ができるとは思うんだが、やり方が分からない!(恒例)

    frame:
        xpos 20 ypos 10
◆イメージマップ発展版。(基本版は以前の記事参照))
画像選択のボタンの出現する・しないを変数でコントロールしたい!
そんなお悩みに答えてくれるのがこちら、海外フォーラム!(地球が爆発するらしい)

とりあえずそんな感じの内容を自分用にした例を載せます。
変数は事前に指定しとかないとエラーになるのでどこかで先に書いておくとして、

init python:
    fav = 1#事前に指定

#普通のホットスポットのやつをですね
            hotspot (1011, 38, 55, 42) clicked Return("favrr")#帰るべ^ス

#ifの下にくぐらせます。
##→favという変数が1のときだけホットスポットが出ます。
        if fav == 1:#破壊されていなければ以下が出る?
            hotspot (1011, 38, 55, 42) clicked Return("favrr")#帰るべ^ス

あと、 imagemap:の直下の画像指定は最低限groundとhoverでもできるけど、
idleなるものを挟むと小回りが利きます。
・ground=ベース画像
・idle=ボタンが有効な時のみ出現&押していないとき状態
・hover=ボタンが有効な時&押しているとき状態

なお、多分方法はあるんだろうけど、イメージマップ+通常のshow(画像表示命令)
だとイメージマップが手前に来るのでshowで出した画像は隠れちゃいます。
何らかの方法でプライオリティをどうにかするか、(挫折しました※)
イメージマップ部分を透明にさせとくかで対応。

※zorderとかレイヤーユーザー指定(↓の2行)とかがあやしいと
思ったけどわかりませんでした。「zorderは整数を取ります。」そ、それで……???
define config.layers = [ 'master', 'transient', 'screens', 'overlay' ]
show moon onlayer user_layer


###メッチャコードきたなくてすみませんが以下抜粋です###
##参考です。このまま使うと存在しないラベルとかがいっぱいあるのでムリだろう###

label tanspart3:#探索パートナー結果いれ 
screen example_imagemapqq():
    imagemap:
        ground "b1_base.png"
        idle "b1_off.png"
        hover "b1_on.png"
        
        hotspot (700, 524, 103, 55) clicked Return("go home")#帰るべ^ス
        hotspot (814, 520, 103, 55) clicked Return("make")#帰るせいせい
        hotspot (927, 520, 103, 55) clicked Return("talk")#帰るかんない
        hotspot (5, 465, 521, 135) clicked Return("tuto")
        
        if fav == 1:#破壊されていなければ以下が出る?
            hotspot (1011, 38, 55, 42) clicked Return("favrr")#帰るべ^ス
        if fav == 2:#破壊されていなければ以下が出る?
            hotspot (1011, 87, 55, 42) clicked Return("favyy")#帰るせいせい
        if fav == 3:#破壊されていなければ以下が出る?
            hotspot (1011, 127, 55, 42) clicked Return("favgg")#帰るかんない
        if fav == 4:#破壊されていなければ以下が出る?
            hotspot (1011, 176, 55, 44) clicked Return("favbb")#帰るべ^ス
            
        if fav == 5:#破壊されていなければ以下が出る?
            hotspot (1011, 240, 55, 46) clicked Return("favoo")#帰るせいせい
        if fav == 6:#破壊されていなければ以下が出る?
            hotspot (1011, 290, 59, 46) clicked Return("favkk")#帰るかんない
        if fav == 7:#破壊されていなければ以下が出る?
            hotspot (1011, 339, 55, 42) clicked Return("favmm")#帰るせいせい
        if fav == 8:#破壊されていなければ以下が出る?
            hotspot (1011, 385, 55, 42) clicked Return("favpp")#帰るかんない
        
label exampleqq:
    
    call screen example_imagemapqq
    
    $ result = _return
    if result == "favrr":
#        e "You went homはなすe!"   
        jump favj
    elif result == "favyy":
#        e "You went homはなすe!"   
        jump favj
    elif result == "favgg":
#        e "You went homはなすe!"   
        jump favj
    elif result == "favbb":
#        e "You went homはなすe!"   
        jump favj       
        
    elif result == "favoo":
#        e "You went homはなすe!"   
        jump favj
    elif result == "favkk":
#        e "You went homはなすe!"   
        jump favj
    elif result == "favmm":
#        e "You went homはなすe!"   
        jump favj
    elif result == "favpp":
#        e "You went homはなすe!"   
        jump favj
    elif result == "go home":#ベースへ帰る
#        e "You went home!"
        jump fcbase
        
    elif result == "make":
#        e "You picked ちゅしゅるart!"
        jump startmake
#       jump start3
        
    elif result == "talk":
#        e "You went homはなすe!"  
        jump talk
        
       # jump start3
    elif result == "tuto":
        $ renpy.pause()
        jump tanken
        
    return
    
■チュートリアルに書いてあるやつをちょっと改造。
(なお、これのほかのスクリーンはエラーが出てできませんでしたヒエー
チュートリアルをコピペしてもダメなのはなんか
どこかで事前の指定が抜けてるとかなのかなあ)

※「rr」のステータスという体で行きます。


#数値を事前に指定
default rr_hp = 15
default rr_hp_max = 100
default rr_lv = 1
default rr_pt = 0

##rrのステータス名前が「screen single_statrr?
screen single_statrr(name, hp, hp_max, lv, pt, xalign, yalign):
    frame:
        xalign xalign
        yalign yalign
        
        vbox:
            spacing 5
            hbox:
                text "[name!t]" min_width 160 color "#ab2121"
                text _(" Lv. [lv]")
            hbox:
                text "友好度" min_width 160
                text _(" [pt]")
                
            hbox:
                text _("EXP "):
                    min_width 30
                    yalign 0.5
                bar:
                    value AnimatedValue(hp, hp_max, 1.0)
                    xmaximum 130
                    ysize 26
                    
                text " [hp]/[hp_max]":
                    yalign 0.5
# This screen uses single_stat to display two stats at once.
screen statsrr():#←ラベル内で呼び出すときはこの名前。「statsrr
    use single_statrr(_("仮rr"), rr_hp, rr_hp_max, rr_lv, rr_pt, 0.55, 0.1)
#↑このuse~の行を増やすと何個かいっぺんに表示させられる。後ろ2つの数字がxy座標。
#「default rr_hp = 15」のような「事前に指定」の四行を別キャラの分も用意してコピペすると増やせる。指定していないものを呼び出すとエラーるので注意。

##rrここまで。↓実際のラベル内で


label start:
    show screen statsrr ##←rrステータスを表示
    with dissolve

    $ rr_hp = 15 #←数字を変えたり
    hide screen statsrr##←rrステータスを消す


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

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

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