遊泳・ダイビング システム (人魚等)

ツキミ

ユーザー
11/23再々更新:パラメータ「歩行画像変更」を水面と水中に分けました
11/23再更新:パラメータ詳細設定に「水面下部分の高さ」を追加しました
11/23更新:ダイビングする前に、隊列メンバーの集合をするようにしました


--------------------------

遊泳・ダイビングのプラグインを作ってみました。

解説をご覧頂く前に、是非先にデモを遊んでみてください!:
https://game.nicovideo.jp/atsumaru/games/gm5154
タッチ操作もできますので、是非マウスで試してください。

五分ほどのゲームで、このプラグインのできることを簡単に紹介します。
メモ等の説明、設置方法も書いてありますので、まず遊んで頂くことをオススメします~


では、説明に入ります。
このプラグインは、簡単に遊泳、ダイビングを実装できるべく作ったプラグインです。
発想は、ポケ○ンの ルビーサファイア から来ています。

 ・ゲームに遊泳を実装したい!という方:
  このプラグインを入れるだけで、他のこと一切しなくても、デモのように水辺で決定キーを
  押すと遊泳できます。

 ・イベントの移動範囲を水域に制限したい!という方:
  イベントのメモ欄に<Swimming>を入れれば達成できます。

 ・デモのようにダイビング・浮上をしたい!という方:
  マップのメモ欄にダイビング出来るリージョンID、ダイビング場所移動先を記入すれば簡単にできます。
  また、ダイビング先は普通のマップにしてください。(水域じゃないところ)
  
 ・デモのようにゆらゆら水中エフェクトを実装したい!という方:
  KMS_WaterMapEffect を使ってください。TOMY様の素晴らしいプラグインです。
  DLページ: http://ytomy.sakura.ne.jp/tkool/rpgtech/tech_mv/map/water_map_effect.html


以下は、詳しいプラグインの使い方です。

遊泳の通行可タイルは基本的に乗り物の船と同じですが、
マップ設計の自由度を増やすために、強制通行リージョンを敷くと
無理矢理通れます。ただし、イベントの衝突判定は行われています。

ダイビングしたら普通の通行可タイルになります。
ダイビング先に普通の都市を作って、画像の色調変更で青を掛ければ、水底都市みたいになります。


潜る/浮上の転送先の指定方法

 マップのメモに
 <Dive"リージョンID":"マップID","マップX","マップY"(,"向き")>
 <Surface"リージョンID":"マップID","マップX","マップY"(,"向き")>
 を置く。向きを指定しない場合は元の向きになります。

   例:
   <Dive23:16,34,25>
    - リージョン23で決定キーを押すと、ダイビングで マップ16の(34,25) に転送する

   <Surface21:5,15,23,2>
    - リージョン21で決定キーを押すと、浮上で マップ5の(15,23) に転送する。向きは下


水上イベント
 イベントの移動範囲を水上に制限する(陸上に上がれない)
 イベントのメモに<Swimming>を置く
   例:
    <Swimming>



プラグインコマンド:

 testSwim
  このコマンドを実行すると、「水の中に入れるか/水から出れるか」の判定を行い、
  できる場合はその行動を実行します。
   例:testSwim


 testDive
  このコマンドを実行すると、「この位置で潜れるか/浮上できるか」の判定を行い、
  できる場合はその行動を実行します。
   例:testDive


 testSwimDive
  上述の両者を同時に判定し、実行可能の行動が片方だけの場合、その片方
  の行動を実行します。
  両方実行可能の場合は選択肢を出します。
   例:testSwimDive


 askSwimDive
  上のコマンドとほぼ同じですが、行動する前に必ず選択肢を出します。
   例:askSwimDive


 forceWaterLayer [数字]
  水の深度を強制に設定します。
  water Layer:地面は0,水面は1、潜る度に1増えます
  テレポートなどの時に使用してください。
   例:forceWaterLayer 0

testSwim~ 等のプラグインコマンドは、基本的に ピクチャボタン化プラグイン と併用することをオススメします。



・パラメータ
多そうに見えますが、基本的に変えなくてもいいです。


選択肢自動表示
水辺、或いは潜られるところで決定キーを押すと、行動の判定をするかどうか。
デモのように、「最初は泳げなかったが、後から出来るようになる」ようにしたい場合は、
スイッチの番号を入れてください。

水中減速
水中で自動的に減速します。
キャラのデフォ移動速度は4で,shiftを押すと+1ですので、0.3~0.5がオススメです。

水面画像変更
水面にいる時に、自動的に 「元画像名_swim.png」に変えます。
例:Acter1.png → Acter1_swim.png

水中画像変更
水中にいる時に、自動的に 「元画像名_swim.png」に変えます。
例:Acter1.png → Acter1_swim.png

選択肢の文字列
選択肢の文字列設定。

SE設定
水に入る、出る、潜る時のSEです。

リージョン設定
使う予定のリージョンを設定します。 (5~7個くらいで足りるかと!)

水面強制通行リージョンID:
前述の通り、基本 船の行けるところと同じですが、
どうしても行かせたいところがあればこれを使用してください。
水面限定ですので、地面にいる、或いはダイビングしている時は特に効果がありません。
(「,」区切りで複数指定も可能)

水面下の透明度:
水面にいる時、下半身の透明度を設定します。
水面(waterLayer = 1)限定です。

水面下部分の高さ
水面にいる時、半透明になる部分の高さを設定します。
水面(waterLayer = 1)限定です。


※上級者向け
$gamePlayer.isSwimming() で水に入ってるかどうかを取得可能
$gamePlayer._waterLayer で水深を取得可能(地面は0,水面は1、潜る度に1増えます)
$gameMap.event(1).isSwimming() も可能

質問などはお気軽にしてください!
バグがありましたら、お手数お掛けしますがご報告をお願いします><

権利表記テンプレート
  • 製作者: ツキミ
  • 非商用利用: 自由/ 報告、クレジット不要(してくれたら嬉しい!)
  • 商用利用: 自由/ 報告、クレジット不要(してくれたら嬉しい!)
  • 再配布: OK(ただし自作宣言はNG)
  • 加工: OK
  • 加工後の再配布: OK、でも説明のところにこのページのリンクを書いてください><
  • シリーズ: ツクールMV
 

Attachments

  • Swimming&Diving.js
    32.5 KB · 閲覧: 105
最後に編集:
ツキミさん、初めまして。デモをプレイしてみました。
深海のゆらゆらしたエフェクト、良いですね。ルビサファ世代なので懐かしくなりました。
このプラグインを導入したら水辺のダンジョンがもっと楽しくなりそうですね。
素敵なプラグインをありがとうございました:kaoluv:
 
おもしろいプラグインですね。
水辺で水の部分だけ半透明になるのはよいですが、どう見たって歩いてます。
その部分を補って、泳いでいるように見えるようにキャラチップ(泳ぎ専用)に切り替わる仕組みの方を組み込んだら、水上戦や水中戦が楽しくなりそうですね。
ただ、隊列行動だと、変な感じになりそうだけど・・・。
 

ツキミ

ユーザー
ツキミさん、初めまして。デモをプレイしてみました。……
ありがとうございます!
まさに自分のゲームの水辺ダンジョンを作ってる最中です><
「橋に通せんぼがいるけど、水泳を習得して、川から渡れば……」 という謎解きもできそうですね!

ただ、隊列行動だと、変な感じになりそうだけど・・・。
ありがとうございます!

プラグインを更新しました。
ダイビングする前に、隊列メンバーの集合をするようにしましたが、これで少しマシになりましたか……? (デモも更新しました)

泳ぎ専用のキャラチップ切り替えは、パラメータの「水中歩行画像変更」をONにすればできます!
(説明が伝わりづらくてすみません……)
泳ぎ用チップがあると、ゲームのリアリティが上がりますね。
 

dragon1upjp

ユーザー
どのようにあなたは水泳のために地域/イベントをセットアップするか、私はプラグインコマンドテスト泳ぎでプラグインとイベントを持っています, 可能であれば、イベントの事前設定とマップ設定を含む小さなデモ。だから私は自分の水泳テストのマッピングを始めることができます。大歓迎です:)
 
素晴らしいプラグインをありがとうございます。

SAN_AnalogMoveというプラグインを使うと、
「水面下部分の透明度」が適応されないみたいです。

この場合はどうすればいいでしょうか?

ちなみに、
SAN_AnalogMoveはキャラを八方向に移動させるプラグインです。
これを使っていると透明度が適応されないようです。

それともう一つ質問があるのですが、
水中移動を出来ないマップにしたい場合はどうしたらいいでしょうか?

お忙しいと思いますので、
お時間があるときにご返信いただけると幸いです。
 
最後に編集:
トップ