上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
戦闘レイアウトをドラクエ風にした兼ね合いで、戦闘コマンドを一体誰が選択しているのか分からなくなってしまったのでそこを下図のように、ちょっとだけレイアウトを変えてみました。

無題

ウィンドウをたった1個追加しただけ。

1日どころか、数十分あればこの程度の変更は余裕。そんな風に作る前は思ってたんですけどね。
たったこんだけの変更で、まさかこれほど苦労させられると思いませんでした。

ニッチもサッチも行かなくなったので、ここは最終手段。
力技でスクリプトを書くことにしました。

5つの疑問と3つの力技、1つの放置プレイ。
とんでもないです。 いきなり疑問。

ウィンドウって、ウィンドウのサイズが変わる毎にクラス定義しないといけないの?
helpウィンドウ流用して上の図のようなウィンドウ生成できないの?

実はコレに非常に多大な時間を消費しました。
ウィンドウ自体のサイズや場所は自由に変えられるんですが、描画領域が上手く変更できなくって(width弄るだけじゃダメなのだろうか??)、常にカーソルが出てしまって鬱陶しい。
このカーソルがどうやっても消えなくって。
どうやってもうまくいかんかったので、仕方ないので新たにウィンドウクラスを定義することで逃げを図りました。(力技)


次の疑問。

ウィンドウの余白(16pxらしい)って狭く出来ないの?
つーか邪魔なんだけど。

結局分からずじまい。
仕方ないので、空のウィンドウにスプライトを乗っけて、スプライトのほうに文字を書くことによって擬似的にウィンドウ内の余白を無視して文字が書けるようになりました。(力技)


クラスの中に定義したスプライトを、外のクラスから可視状態を変更することは出来ないの?

これは出来そうな気がするけれど、馬鹿なextrierには出来ませんでした。
クラスの中に関数定義して無理矢理可視状態をいじることにしました。(力技)


最後、可視状態と名前をウィンドウに表示する処理は「Scene_Battle」の何処に入れればいいの?

コマンド選択と同期を取ればよいはずなので、@actor_command_window.activeのtrue/falseと仲良く並べることで上手くいきました。


あと、余談だけど、上の図でよーく見えるとキャラの名前のウィンドウと行動のウィンドウで、ウィンドウを囲ってる線の太さが違くね?
わかりませんでした。
Window_BaseとWindow_Selectableの違い?
同じWindow_Baseクラスから派生したものだから、なんで違うかはわかりませんが…


と、等々の疑問を力技で解決して出来たソースが下記。

#==============================================================================
# ■ Window_BtActerName
#------------------------------------------------------------------------------
#  戦闘中行動者を表示する。
#==============================================================================

class Window_BtActerName < Window_Base
 #--------------------------------------------------------------------------
 # ● オブジェクト初期化
 #--------------------------------------------------------------------------
 def initialize
  wx = 20
  wy = 264
  
  width = 120
  
  super(wx, wy, width, WLH2 + 17)
  self.opacity = 240
  self.back_opacity = 240
    @textarea = Sprite.new
   @textarea.bitmap = Bitmap.new(width - 10, WLH2 + 19)
   @textarea.x = wx + 15
   @textarea.y = wy + 10
   @textarea.z = self.z + 1 
 end
 #--------------------------------------------------------------------------
 # ● テキスト設定
 #   text : ウィンドウに表示する文字列
 #   align : アラインメント (0..左揃え、1..中央揃え、2..右揃え)
 #--------------------------------------------------------------------------
 def set_text(text, align = 0)
  if text != @text or align != @align

   @textarea.bitmap.clear
   @textarea.bitmap.font.size = 18
   @textarea.bitmap.draw_text(0, 0, self.width - 40, WLH2, text, align)
   @text = text
   @align = align
  end
 end
 
 def text_visible
  @textarea.visible = true
 end
 
 def text_unvisible
  @textarea.visible = false
 end
 
end


汚い・・・。
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメントの投稿

URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
powered by
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。