忍者ブログ
windowsやブラウザ のゲーム作ったりとか。
この記事は、ツクールフォーラムアドベントカレンダー2021に向けて書いたよ。

「踏むとダメージを受ける罠」
あれです、床からトゲが出たり入ったりするやつ。

上にのってるのにダメージを受けなくてどうしよう?
っていう質問を時々見かけるので
作例を公開しようと思います。

<用意するもの>
スイッチ・・・1つ(並列処理用)
変数6個・・・プレイヤーX座標取得用
       プレイヤーY座標取得用
       リージョンID取得用
       歩数の取得用
       前回の歩数を覚えておく用
       ループ回数カウント用
リージョン・・・1つ
       (マップ変種画面のタイルセット表示枠の
        ABC…RのRがリージョンタイルです。
        リージョンとは、敵の出現エリアを
        設定するのが主な役割ですが
        とても幅広く活用できる便利なタイルなのだ!)

<ざっくりとした制作の流れ>
罠の絵を表示するだけのイベントと、ダメージを制御するイベントを作り
足元のリージョンと罠の絵の状態を判断してダメージを与えます。

<制作の手順>
①罠を置きたい場所をリージョンタイルで塗る。
 何番でもいいのですが、とりあえず、8番にしておきます。

②罠のアニメーションを表示するだけのイベントを作成する。
 アニメーションは、自律移動のカスタムで行います。
 大体こんな内容です。
-----------------
:        :◇左を向く
:        :◇ウェイト:3フレーム
:        :◇スイッチON:0002(ダメージ診断開始)
:        :◇右を向く
:        :◇ウェイト:3フレーム
:        :◇上を向く
:        :◇ウェイト:60フレーム(とげが出た状態で長めに停止)
:        :◇右を向く
:        :◇ウェイト:3フレーム
:        :◇スイッチOFF:0002(ダメージ診断終了)
:        :◇左を向く
:        :◇ウェイト:3フレーム
:        :◇下を向く
:        :◇ウェイト:60フレーム(とげが出てない状態で長めに停止)
-----------------

③上記の罠をコピペして、リージョンタイルの上に配置。

④ダメージ制御用のイベントを作成。邪魔にならなくて忘れ去られない場所に設置。

⑤制御用イベントは、ダメージ診断開始用のスイッチがONになったら
 起動する並列処理です。
 大体こんな内容です。
-----------------
◆変数の操作:#0008 プレイヤーX = プレイヤーのマップX
◆変数の操作:#0009 プレイヤーY = プレイヤーのマップY
 ↓上記で取得した座標のリージョンIDを調べます↓
◆指定位置の情報取得:リージョンID, リージョンID, ({プレイヤーX},{プレイヤーY})
◆条件分岐:リージョンID = 8
 ↓リージョンの上にプレイヤーがいる場合の処理です↓
 ↓自由にダメージを演出してください       ↓
  ◆画面のフラッシュ:(255,0,0,102), 20フレーム
  ◆SEの演奏:Bite (90, 100, 0)
  ◆HPの増減:パーティ全体, - 10 (戦闘不能を許可)
  ◆ウェイト:10フレーム
 ↓上に乗り続けていたらダメージを受けたいけど        ↓
 ↓このままだとダメージが入りすぎるのでウェイト処理を作ります↓
  ◆変数の操作:#0011 カウント = 0(ループ回数を数える)
  ◆変数の操作:#0007 前の歩数 = 歩数(基準となる歩数を取得)
  ◆ループ
    ◆変数の操作:#0011 カウント += 1
    ◆変数の操作:#0001 歩数 = 歩数(現在の歩数を取得)
    ◆条件分岐:歩数 ≠ 前の歩数
   ↓プレイヤーが移動していたら、ループを終了↓
      ◆ラベル:中断
      ◆ループの中断
      ◆
    :分岐終了
    ◆条件分岐:カウント = 6
  ↓60フレーム経過しても、ループを終了↓
      ◆ラベルジャンプ:中断
      ◆
    :分岐終了
  ↓ループ終了のフラグがたってなかったらウエイトを追加↓
    ◆ウェイト:10フレーム
    ◆
  :以上繰り返し
  ◆
:分岐終了
-----------------

以上です。簡単だね!     

トゲ以外でも、例えば「毒の沼地」でも触れている間はダメージを受けたい
っていう時に使えるよ。

やり方は千差万別、他にもいろいろあると思うから考えてみてね!
おしまい!

ちなみに2000の頃は、罠に乗るとダメージを受けた後ノックバックするのが
多かったように思います。
ずーっとノックバックしていって、最終的に罠の外に追い出されます。
そういう昔ながらの罠も良いんじゃないかしらと思ったり。

拍手[0回]

PR
この記事は、ツクールフォーラムアドベントカレンダー2021に向けて書いたよ。

脱出ゲームにもいろいろありますが、代表的なのは2種類かな。
まず、どっちの形式のゲームを作るかを考えます。

A、クリックタイプ(例:Welcome to the secret house!

B、見下ろしタイプ(例:サンタの脱出


RPGツクールで作るなら、Bタイプが作りやすいですね。


①物語は後付けでいい。

物語の合間に脱出したい、というのでなければ
脱出ゲームには基本的に物語は必要ないとです。
ただ、最初に理由と結果を考えておくと
仕掛けのバリエーションや方向性が安定するので
考えておくと良いです。


②アイテムの使用は、自動で行うか、アイテムウインドウを表示して
 選択するかを決める。

 Ace以降には、アイテム選択という便利なイベントコマンドがあるので
 これを活用すると良い。


③何をしたら脱出できるかを考える。

例えば、最後のカギを入手したら出口を開けることができる。
と目標を決めます。


④目標を達成するためにする事を考える。

最後のカギを手に入れるためには、2つに割れたカギを修復する必要がある。
等です。


⑤④を必要なだけ繰り返す。

鍵の断片を入手するために、小さな鍵が必要とか。
ミニゲームをクリアしたり、クイズに答えたりとか。
箱を所定の位置に動かしたり、ミニゲームのための駒を集めたり
隠されたヒントを全部見つけると、答えがわかったり。
どんな仕掛けを作るかは、アイデア次第。


⑥アイデアをまとめる。

後で考えた仕掛けの方が、前に考えた仕掛けより難しい場合があるので
最初の方がやや見つけやすく、徐々に難度が上がっていくよう
出題のバランスを調整する。


⑦考えた仕掛けやアイテムを配置するために必要なマップを作ったり
 必要なアイテムをデータベースで作成する。

仕掛けに必要な素材なども用意する。
メニュー画面とかも考える。
MV以降は、メニューコマンドのどれを表示するかを
選択できるので、活用する。
デフォルトのメニューをOFFにして
選択肢でメニューを表示する方法もおススメ!


⑧イベントを配置し、テストプレイをして完成。

余裕があれば、本筋に関係ない遊び要素を入れると楽しいよ!
手に入れたかどうかでエンディングが替わるアイテムがあるとか
コレクションアイテムがあるとか。
作者の恥ずかしい秘密が暴露されるメモがあるとか。


⑨物語と脱出を絡める一般的な手法。

あちこちに、手記の切れ端などが落ちていて
徐々に物語の背景が明らかになっていくとか。

キーアイテムを入手するごとにイベントが起きるとか。
お化けが追いかけてくるとか。

これらは、脱出パート完成後にいくらでも追加できるので
余裕があれば、付けるとよいよ!


おしまい!

Aタイプの作り方も基本はBタイプと同じだよ!
画面のデザインをどうするかとかを考えなきゃいけないだけだよ!
それでは良い脱出ライフを!!

拍手[6回]

このレポートは、ツクールフォーラムアドベントカレンダー2021向けに作成しました。

RPGツクールMZには、キャラクタージェネレータが付いています。
男性、女性、子供の3種類が作成でき、それぞれ専用の素材が入っています。
でも、子供用の装飾品を男性や女性にも使いたいなーって思うこともある。
その逆も然り。
その時に、どうやって目的の素材を目的のフォルダにコピペするかを調べてみました。

実はそれ系の講座はすでにムノクラさんが書いてくれてるので
そちらを観覧するだけで十分なんですけど・・・
RPGツクールMZのキャラクター生成(キャラクタージェネレーター)素材の追加方法
RPGツクールMVの以下同文

まあ、実際やってみるっていうことで。
この先へ進む前に一通り目を通しておいてね。
今日使用するのは、RPGツクールMZの方なのでご注意ください。

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

では、今回子供用素材から大人用素材にコピペするのはこちら!
MZのこの眼帯素材をコピペするよ!

①まず、ムノクラさんの講座を見て、ジェネレータ素材の入ったフォルダを
丸ごとバックアップ取ります。
これは絶対やってね! 失敗すると再インストールになるからね)

②眼帯素材を探しましょう。
「Face」フォルダの中の「Kid」フォルダを開きます。
 エクスプローラの表示方法を「大アイコン」とかにしておくと探しやすいよ。
FG_AccA_p08_c1_m013.pngってファイル名のようです。

②とりあえず、これを同じフォルダの中か、作業用フォルダを作成してコピペします。
 コピペしたFG_AccA_p08_c1_m013.pngの「p08」の部分を「kid08」に変更します。
 別に他に自分が分かりやすい名前でも構いません。
 これ以降の素材ファイルも、同様に「p08」の部分を同じ名前に変更しますので
 置き換える名前を忘れないようメモってね。
このファイル名の変更方法は、RPGツクールMVでは使えないので気を付けて
 MVの場合は、「p08」を「p108」とか数字だけ変更します)


③名前を変更したら、「Face」フォルダの中の
 「Female」と「Male」フォルダにそれぞれコピペします。


④「SV」フォルダの中の「Kid」フォルダを開きます。
 AccA_p08って名前が入ったpngファイルを探します。
ファイルが2つありますね。

 「_c」がついてる方は、色を変更するためのファイルです。

 では、両方ともコピーして
 Faceの時と同じように、「p08」の部分を「kid08」に変更し
 「SV」フォルダの中の
 「Female」と「Male」フォルダにそれぞれコピペします。


⑤「TV」フォルダの以下同文。
これも2つありますね。
 両方コピーして以下同文。


⑥「TVD」フォルダの以下同文。

 はい、これも二つともコピーして以下同文。


⑦最後は、「Variation」フォルダの以下同文。

 はい、以下同文ですよ。


⑧RPGツクールMZを起動し、キャラクタージェネレータを開きます。
 
 大人用の「装身具1」に眼帯が増えてるのを確認します。
 わーい、増えたね!

 でも、ちょっと待って? なんか変じゃない?
 フェイスはいいけど、歩行グラやバトラーの眼帯、位置ずれてるよ?
 そりゃそうだ、子供用だから位置が低いんだ!
 というわけで、何かグラフィックを編集するソフトを使うよ。


⑨グラフィック編集ソフトを使って、SVとTVのファイルを開き
 ちょっとだけ、上にずらすよ。
 
 TV用は2つとも、上に4ドットくらいずらすといいよ。
 SV用は2つとも、以下のような感じに位置を調整するよ。


他のフォルダの眼帯は、位置をずらさなくてOK。
これで、子供用の眼帯を大人用に移植できました。
おしまい。

やり方を覚えたら、装身具系は、大人用から子供用へも
流用できるから便利だよ!


実際に素材を追加してみて感じたこと。

追加素材は、「Variation」のファイルに名義か印をつけてくれたら
デフォルトかどこかの素材か、一目でわかっていいなーと思いました。
今回は子供用のをコピペしたので身長差で追加素材とわかります。


オマケ

女性用装身具2の09番をヘアバンドだけにした素材と
今回のレポートで作成した子供の眼帯の改名素材を配布します。
参考にしてみてね。
尚、この素材はRPGツクールMZの正規ユーザーさんのみご利用いただけます。
 ★オマケ素材のダウンロード
※エクスプローラを2重起動して
 片方はコピー元、片方はコピー先を開いて
 コピペ作業をすると多少は楽ですよ。
 一応、一括コピペ対応フォルダ形式のも入れてありますけど。

拍手[5回]

前回までのあらすじ。

アツマールのバカゲーコンテストに、ニコ生ゲーム賞なるものが登場したので
ニコ生ゲームについて、調べてみた。
なお、ニコニコ自作ゲームフェス2021にもニコ生ゲーム賞があるそうだ。
Akashic Engineというものを使って作るそうだ。

サンプルに毛が生えただけの処女作がこちら

そしてついに、オリジナルのミニゲーム作ったよ!
15秒間に動くハートに何回タッチできたかを
ランキングで競うゲームだよ!

ハートにタッチ」遊んでね!

ユーフルカさんの各種素材をお借りました。
ありがとうございます。

処女作でできなかったタイトルの演出は、結局自力では無理と判断して
公式さんに教えてもらったので、ばっちりです!

方法はとても簡単だったけど、私は可能性から除外していた方法だったので
目からうろこが落ちました。

定期的に処理を実行する、を使えばよかったのでした。

一応、機能確認で命令文自体は試していましたが、使い方が違っていたのでした。
321とカウントしてゲームを開始する具体的な作例は、以下の通り。

scene.setInterval(function () {
   if (残り秒数が 0) {
     // 繰り返し解除
     // ゲーム本編の処理(エンティティ生成など)
   } else {
     // 残り秒数を表示
     // 残り秒数を1減らす
   }
}, 1000); // 1000ミリ秒(1秒)おきに繰り返し処理

とのことで。

クリックしてからカウントを始めるには、もうちょっとひとひねり必要なのですが
私は以下の方法でつくりました。

クリックできるエンティティを作成
上記の秒数をカウントする変数を操作して、カウントを始めるようにする。
else の内容である、秒を減らす処理もif文で制御。

これで、クリック待ちのウエイトや、開始のカウントダウンのウェイトができました。
公式さんありがとうございました。

スクリプトの勉強せずに作れるのはここまでかな。
基本的な命令文だけでもアイデア次第で色々作れそうなので
もし興味を持ったら、とりあえずチャレンジしてみてね。

拍手[0回]

前回までのあらすじ。

アツマールのバカゲーコンテストに、ニコ生ゲーム賞なるものが登場したので
ニコ生ゲームについて、調べてみた。
なお、ニコニコ自作ゲームフェス2021にもニコ生ゲーム賞があるそうだ。
Akashic Engineというものを使って作るそうだ。

とりあえず、スコアボード機能付きで「Hello World」を新規作成して
プレイヤーの画像を変更してみたよ。

じゃあ、今日は「Shot」の画像をハートに変更して
ランダムな方向に発射するようにしてみるよ。
とりあえず、8方向でいいかな。

まず、ランダムな数値を取得する命令を探します。

var wawa = Math.floor(g.game.random.generate() * 8);//0以上8未満の整数を変数wawaに取得

となるらしい、これを(変数名のwawaは適当に自分でつけたやで)
// 弾の初期座標を、プレイヤーの少し右に設定します
のとこに配置。
理由はよくわからないけど
// 弾を右に動かし、弾の動きを表現します
のとこに配置すると飛んでいかずにわらわらする。
まあそれも悪くない気がしたけど、今回は飛んでってもらいたい。

で、// 弾を右に動かし、弾の動きを表現しますのとこは
if文で、8通りの方向へ飛ばす。

if (wawa == 3) {
shot.y += -10;//変数wawaが3の弾は上へ移動
}
if (wawa == 4) {
shot.y += -10;//変数wawaが4の弾は右上へ移動
shot.x += 10;
}

上記は一部だけど、8方向分書いたで。
まあ、いわゆる恥ずかしいコードっていうやつなんだと思うけど
基本のif文使ってるだけだから、何をしているのか後で見てもわかりやすいで?
と、開き直っておこう。(関数とか方程式苦手なんよ)

これで完成としてもいいんだけど、ゲームが終わったことがわかりにくいので
タイマーが0になったら、「リロードしてね」って表示したいよ。

逆引きリファレンス「文字列を表示する」を読んでみよう。
まるっとこぴっぺして

// カウントダウンを止めるためにこのイベントハンドラを削除します
の、次の行ぐらいに放り込めばよさそうだ。

さて、後は、ゲーム開始のタイミングを、画面をクリックしたらにしたいんだけど
クリック・タップできるようにする」等で変数を変更し、
ゲーム部分をifで囲めばいいかと思ったけど、これはダメのようです。
他にそれらしいサンプルを探してみます。

うーん、ダウンロードできるサンプルは軒並み複雑で
私には読み解けそうにありません。

Hopping Witch」も難しいなあ。
シーンを切り替える」あたりかなと思ったけど
私にはちょっと読み解けなかったです。

逆引きじゃないリファレンスで、g.game.pushScene()を検索するもヒットせず。
このリファレンスはどう使うものなのかな。
クリックでゲーム開始とか、ウェイトを入れてとか
わかりやすいサンプルが欲しいよね・・・
単体のサンプルじゃなくて
Hello World」にスタートボタンをを追加するとか
スタートのカウントダウンを追加する、みたいなサンプルが欲しいですね。

あと、クイズゲームのサンプルとか欲しいっすね。

今日から始めるニコ生ゲーとかいう配信を見つけたので、見てみる。
サンプルカタログなるページがあるらしい。
が、欲しいパーツは見つからなかった。

まあ気が向いたら、もうちょっと調べてみるか公式さんに聞いてみることにして
とりあえず完成にしとく。
公式さんに教えてもらって、作れるようになりました!
 詳しくはこちら

念頭に「わからない」が真っ先に来るようになったら
どんなに頑張っても「わからない」のループだからね。

というわけで、アツマールに投稿してテスト。
よしよし、動てる動いてる。
しかしどうやら、連打してると、スコアボードが開いても
見る前にクリックで閉じてしまう事案が発生w
スコアを表示するボタンくらいは配置しておこう。
さすがにこれは「クリック・タップできるようにする」でできるやろ。

・・・できた。(良かった)
このボタンは、最初から設置しておいてもよさそうだけど
一応、タイマーが止まってから表示することにしよう。


拍手[0回]

広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


ソフトウェア制作講座





Copyright ©   YUWAKA'S SOFT   All Rights Reserved
Design by MMIT / TemplateB3  Powered by NINJA TOOLS
忍者ブログ [PR]