ドボンと飛び込めザブザブ歩け、そのまま帰って風邪をひけ

休日出勤帰りのかげろうです。
まずはろぜんげに物申していく。


かげろう先輩の再三の催促

妖刀伝の次に作る予定のゲームの曲をろぜんげに頼んでるんですけどね。
催促したことなんかないぞ。
気が変わったらいつでもやめていいし、やりたいなら10年でも待つぞ。

あ、違うか、ブログの記事の話か。
そっちも別に催促したつもりはないぞ。
ただ、僕が連続投稿しまくると個人ブログみたいになるのでろぜんげがちょいちょい書いてくれた方が楽だというのはあるが。


本当に作りたい気があれば関係ない

関係あるわ。

なんで僕はそんなにストイックなイメージなのか?
(カナコさんにも似たようなこと言われた)


週二日あるかないかの休日をゲーム制作に割くとか無茶すぎるわ。
僕だって最初の1年はゲーム作る余裕なんてなかったし、学生の時だったらももは2,3か月あれば完成していただろう。今だってたかが妖刀伝のリメイクに1年も2年もかかっている。もともと3週間で作ったゲームなのに。

時間がないだけじゃない。仕事で疲れた後の休日、ゲーム作る気が起きずにゲームしたり動画見たりしていつのまにか月曜がやってくることなんてザラだ。よほど作ってて楽しいゲームじゃないと週末にコツコツ作るのは精神的に無理だ。

そんなこんなで、僕の制作ペースは確実に学生時代の5分の1、もしかしたら10分の1になっている。それでも僕が仕事しながらゲーム制作できるストイックな奴に見えるなら、それはきっともともと僕が人の5倍速でゲーム作ってたからかな、うん。

たとえ僕がストイックな奴だとしても、他人に自分のペースを強要したことはないはずだよ。
あと、ろぜんげはそんなことより自分が捌ける量を越えた仕事を引き受けるのが問題なのでは。ゲームも。



さて、ではRGSS2講座第7回、水中判定始めます。


水中判定。

それはツクラーなら誰しも一度は考えたのではないだろうか。
浜辺の町。
半分水没してるダンジョン。
どこかで見たような温泉イベント。

つまり、水の上を歩いたら水に浸かってるような演出はできんのか。
そんなことを誰しも考えるはずだ。

少なくともここに一人いる。(Yahoo知恵袋)
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1478803709

ちなみに解答。
「タイルセットの設定で、水のチップに茂み属性を追加する」


え?茂み属性って何?


という人はここを見るしかない。(ツクールWeb)
https://tkool.jp/products/rpgvx/material


要するに、タイルセットの「TileA2」の上の方の、デフォで草むらに設定されているところを水にすれば、自動的に茂み属性が適用されて、キャラクターの下半身が半透明になるのである。

やってみた。

水がアニメーションしなくなりました。

そりゃそうだ。
勝手にアニメーションするのは「TileA1」の上の方だけだからだ。

じゃあいつも通りアニメーションする水に
茂み属性は設定できないのかよ!!

さあ俺の出番だ。

まずGame_Mapのここ。
水中判定1

#--------------------------------------------------------------------------
# ● 茂み判定
# x : X 座標
# y : Y 座標
#--------------------------------------------------------------------------
def bush?(x, y)
  return false unless valid?(x, y)
  return @passages[@map.data[x, y, 1]] & 0x40 == 0x40
end

青字の箇所が「マップチップがTileA2の上の方だったら茂み属性とみなす」という処理です。
ここに、「水の上なら」を追加してやればいいのです。

#--------------------------------------------------------------------------
# ● 茂み判定
# x : X 座標
# y : Y 座標
#--------------------------------------------------------------------------
def bush?(x, y)
  return false unless valid?(x, y)
  return @passages[@map.data[x, y, 1]] & 0x40 == 0x40
  return ship_passable?(x, y) #大型船が動ける範囲
end

青字が追加箇所。
水の上って、つまり大型船が動ける範囲なのです。
発想の勝利。

ちなみに「ship_passable」を「boat_passable」にすれば小型船になります。



これで完璧だと思っていた時期が私にもありました。


なんでか知りませんが、
乗り物と主人公の初期位置を同じマップにするとエラーで落ちます。

ひえっ、エラーこわい(カナコさん風)


これを防ぐために以下の一行を追加します。
#--------------------------------------------------------------------------
# ● 茂み判定
# x : X 座標
# y : Y 座標
#--------------------------------------------------------------------------
def bush?(x, y)
  return false if $game_map.events == nil #エラーを防ぐ
  return false unless valid?(x, y)
  return @passages[@map.data[x, y, 1]] & 0x40 == 0x40
  return ship_passable?(x, y) #大型船が動ける範囲
end

エラー内容から想定して直しましたが、正直なんで乗り物と主人公の初期位置を同じマップにしたときだけエラーになるのかは不明です。たぶん初期位置のマップ読み込みより茂み判定が先に来てるみたいなことだとは思うが。

いいのさ。仕事でも原因がよくわからんまま直したエラーは数知れず。自慢にならん。
・・・想定外の場所でエラーが出ても責任は持ちません。
(指摘されたら直しますが)


さて、せっかくだから茂み判定の深さを変える方法も書いておきます。
先ほどのYahoo知恵袋で「肩までとはいきません」と書いてあったので対抗。

Game_Characterのここ。
水中判定2

#--------------------------------------------------------------------------
# ● 茂み深さの更新
#--------------------------------------------------------------------------
def update_bush_depth
  if object? or @priority_type != 1 or @jump_count > 0
    @bush_depth = 0
  else
    bush = $game_map.bush?(@x, @y)
    if bush and not moving?
      @bush_depth = 8
    elsif not bush
      @bush_depth = 0
    end
  end
end

この青文字の箇所の数字を大きくすればするほど深く浸かります。
個人的には12くらいにすると肩まで浸かってるように見えます。
32にすると水没します。



さて、これで水中判定の説明は終わりですが、今回のスクリプトはあんまり似たものがググっても発見できず、しかもシンプルにまとまって個人的にお気に入りなので、別テキストとしてスクリプト化しました。

水中判定スクリプト

茂み/浅瀬/海 によって茂み判定の深さを変えたり、
プライオリティによって茂み判定の深さを変えたり、
乗り物に茂み属性を適用しない機能があったり、
なにかと便利な機能や無駄な機能をいっぱいつけました。

このスクリプトを使えば、以下のような場面が作れます!!

垣間見する
どこかで見たようなイベント。
ポイントはラルフの茂み属性が8、女性陣が12になっていること。
あと、湯気のプライオリティが通常キャラより上なので茂み属性が適用されていません。


ガチめ水路ダンジョン
ガチめのダンジョン。
今回はちょっと優しいウルリカ。
階段とスイッチはプライオリティが通常キャラの下なので完全に水没してます。


ちなみに利用規約はありません。勝手に使ってください。
・・・想定外の場所でエラーが出ても責任は持ちません。
(指摘されたら直しますが)

まあDLした人のコメントとかあったら嬉しいですけど!
嬉しいですけど!


※2015/10/4追記
このスクリプトを使うことで、水中でも茂み判定が適用され、水中でエンカウント率が2倍になることが発覚しました。
修正&詳細は以下の記事をご参照ください。
http://cgpoldpersonteam.blog.fc2.com/blog-entry-75.html
(2016/9/11 URLが間違っていたので修正しました)



さて、次回のテーマは何にしようかな。
妖刀伝で「名前入力をいろはにほへとにする」スクリプト作ったけど絶対需要無いよな・・・
スクリプトじゃないけどもものASDショートカットキーとかのほうが需要あるだろうか?
リクエストお願いしまーす。

あ、でも来週は土日休日出勤フラグが立ちそうなので次の講座は連休くらいになるかも。
来週のブログはきっとどうでもいい記事になる。
たぶんしまっちゃうおじさんの話とかする。

かげろうでした。


RGSS2講座目次

RGSS2講座第8回
スポンサーサイト

コメントの投稿

非公開コメント

Index

ブログ趣旨
メンバー紹介
制作ゲーム紹介
RGSS2講座

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR