空腹度が0になった時にHPが減るコモン【ウディタ】

2021/10/27

ウディタ ゲーム制作

  オリジナルのステータス『空腹度』を使用したコモンイベントを過去に作っていたので、実際にどう作ってみていたのかをメモしていきたいと思います。

 このコモンイベントは、完全初期化データを使ってつくったので基本システムデータを使った場合とデータベース(DB)の項目名や登録番号など色々と違います。また、色々なサイト様やコモンイベントを参考にさせて頂いています!

自作の空腹度・HPインターフェイスコモンイベント表示画像
このコモンイベントを使用して出来ること

 以下の方を参考にさせていただきました!
 【なんか作って載せます】様:歩数のカウント方法について参考にしました 
 【Laineus】様(注意:このリンクはニコニコ動画に飛びます):インターフェイスについて参考にしました

 おにぎりアイコンはお借りした素材になっています!
 【尾羽の小屋】様:おにぎりアイコン

実際に組んでみたコモンイベント

 このコモンイベントは、5歩進むたび満腹度が1減っていき、満腹度0になると1歩ごとにHPが1づつ減るという内容です!

 コマンド文?コード?はこんな感じです↓

▼ ピクチャ番号 ウインドウ 3000
▼          文字    3001~3004
■条件分岐(変数): 【1】CSelf16[HP] が CSelf31[HP残量]以下
-◇分岐: 【1】 [ CSelf16[HP] が CSelf31[HP残量]以下 ]の場合↓
 |■ピクチャエフェクト:3001 [色調整] R100/G-100/B-100  (0)フレーム
 |■
-◇上記以外
 |■ピクチャエフェクト:3001 [色調整] R100/G100/B100  (0)フレーム
 |■
◇分岐終了◇
■条件分岐(変数): 【1】CSelf15[満腹度] が CSelf30[満腹度残量]以下
-◇分岐: 【1】 [ CSelf15[満腹度] が CSelf30[満腹度残量]以下 ]の場合↓
 |■ピクチャエフェクト:3003 [色調整] R100/G-100/B-100  (0)フレーム
 |■
-◇上記以外
 |■ピクチャエフェクト:3003 [色調整] R100/G100/B100  (0)フレーム
 |■
◇分岐終了◇
■条件分岐(変数): 【1】V1[メニューフラグ] が 1以上
-◇分岐: 【1】 [ V1[メニューフラグ] が 1以上 ]の場合↓
 |■ピクチャ消去:3000 ~ 3004  / 0(0)フレーム
 |■
-◇上記以外
 |▼ ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
 |▼ 表示処理
 |▼ ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
 |■DB読込(可変): CSelf18[キャラ] = 可変DB[タイプパーティ情報 項目主人公の項目番号]
 |▼  
 |▼ 可変ステータス(0)データ(主人公)満腹度(60)
 |■ピクチャ表示:3000 [左上]ウィンドウ「自作ウィンドウベース」サイズ[90,50] X:0 Y:0 / 0(0)フレーム  / パターン 1 / 透 200 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
 |■DB読込(可変): CSelf15[満腹度] = 可変DB[ステータス:CSelf18[キャラ]:満腹度]
 |■DB読込(可変): CSelf25[Max満腹度] = 可変DB[ステータス:CSelf18[キャラ]:最大満腹度]
 |■DB読込(可変): CSelf16[HP] = 可変DB[ステータス:CSelf18[キャラ]:HP]
 |■DB読込(可変): CSelf26[MaxHP] = 可変DB[ステータス:CSelf18[キャラ]:最大HP]
 |■ピクチャ表示:3001 [左上]文字列[\cself[16] / \cse] X:28 Y:5 / 0(0)フレーム  / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
 |■ピクチャ表示:3002 [左上]文字列[\i[60]] X:8 Y:5 / 0(0)フレーム  / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
 |■ピクチャ表示:3003 [左上]文字列[\cself[15] / \cse] X:28 Y:18 / 0(0)フレーム  / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
 |■ピクチャ表示:3004 [左上]文字列[\i[61]] X:8 Y:18 / 0(0)フレーム  / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
 |▼ 直前の主人公座標と異なる場合だけエンカウント値を加算 座標が同じなら即終了
 |■変数操作+: CSelf10[現在X] = 主人公 の X座標(精密)
 |■変数操作+: CSelf11[現在Y] = 主人公 の Y座標(精密)
 |■条件分岐(変数): 【1】CSelf10[現在X] が CSelf12[旧X]と同じ
 |-◇分岐: 【1】 [ CSelf10[現在X] が CSelf12[旧X]と同じ ]の場合↓
 | |■条件分岐(変数): 【1】CSelf11[現在Y] が CSelf13[旧Y]と同じ
 | |-◇分岐: 【1】 [ CSelf11[現在Y] が CSelf13[旧Y]と同じ ]の場合↓
 | | |■イベント処理中断
 | | |■
 | |◇分岐終了◇
 | |■
 |-◇上記以外
 | |■
 |◇分岐終了◇
 |▼ セルフ12、13に直前の座標を格納しておく
 |■変数操作: CSelf12[旧X] = CSelf10[現在X] + 0 
 |■変数操作: CSelf13[旧Y] = CSelf11[現在Y] + 0 
 |▼ 歩数カウント +1
 |▼ 予備変数V9-4使用
 |■変数操作: V9-4[歩数] += 1 + 0 
 |▼  
 |▼ 移動したときにリセフラカウント
 |■条件分岐(変数): 【1】V9-4[歩数] が 0と同じ
 |-◇分岐: 【1】 [ V9-4[歩数] が 0と同じ ]の場合↓
 | |■変数操作: CSelf20[歩数リセフラグ] = 0 + 0 
 | |■
 |-◇上記以外
 | |■変数操作: CSelf20[歩数リセフラグ] += 1 + 0 
 | |■
 |◇分岐終了◇
 |▼  
 |■回数付きループ [ 1 ]回
 | |▼ 5歩ごとに満腹度-1
 | |▼ (スタート位置で1歩カウントされる)
 | |■条件分岐(変数): 【1】CSelf20[歩数リセフラグ] が 5と同じ
 | |-◇分岐: 【1】 [ CSelf20[歩数リセフラグ] が 5と同じ ]の場合↓
 | | |■変数操作: CSelf15[満腹度] -= 1 + 0 
 | | |■変数操作: CSelf30[満腹度残量] = CSelf25[Max満腹度] / 3 
 | | |■条件分岐(変数): 【1】CSelf15[満腹度] が 0以下
 | | |-◇分岐: 【1】 [ CSelf15[満腹度] が 0以下 ]の場合↓
 | | | |■変数操作: CSelf15[満腹度] = 0 + 0 
 | | | |■
 | | |◇分岐終了◇
 | | |■可変DB書込:DB[ステータス:CSelf18[キャラ]:満腹度]  =  CSelf15[満腹度]
 | | |▼  
 | | |■変数操作: CSelf20[歩数リセフラグ] = 0 + 0 
 | | |■
 | |◇分岐終了◇
 | |▼ 満腹度が0のときHPが-1づつ減る
 | |■条件分岐(変数): 【1】CSelf15[満腹度] が 0と同じ
 | |-◇分岐: 【1】 [ CSelf15[満腹度] が 0と同じ ]の場合↓
 | | |■ウェイト:20 フレーム
 | | |■変数操作: CSelf16[HP] -= 1 + 0 
 | | |■変数操作: CSelf31[HP残量] = CSelf26[MaxHP] / 3 
 | | |■条件分岐(変数): 【1】CSelf16[HP] が 0未満
 | | |-◇分岐: 【1】 [ CSelf16[HP] が 0未満 ]の場合↓
 | | | |■変数操作: CSelf16[HP] = 0 + 0 
 | | | |▼ HP=0で GAMEOVER
 | | | |■
 | | |◇分岐終了◇
 | | |■可変DB書込:DB[ステータス:CSelf18[キャラ]:HP]  =  CSelf16[HP]
 | | |■
 | |◇分岐終了◇
 | |■
 |◇ループここまで◇◇
 |■
◇分岐終了◇

 歩いたかどうかを監視するため起動条件は「並列実行(常時)」で、左上にインターフェイスとして表示させる処理も一緒に記述しています。

 まず、可変DBのキャラクター(主人公)の項目にHPやらを設定する箇所に、満腹度とMax満腹度の2つを設定しておきます。

 通常変数の[メニューフラグ]は、自作のメニュー表示コモンに使用している通常変数で…このメニューフラグが1以上の時にメニュー画面が表示されている判定になっています。なので、メニューが表示されているとき(メニューフラグが1以上)はインターフェイスをピクチャ消去で非表示にするようにします。

 cself16に満腹度、cself25にMax満腹度を可変DB読込を使って保存し、これを文字列ピクチャで「¥cself[16]/¥cself[25]」と記入し「現在の満腹度/満腹度の最大値」をインターフェイス内に表示しています。HPについても同じ様に表示しています。このステータスを表示するピクチャもインターフェイスを消す時に一緒に消えてもらいたいので、ピクチャ消去のときに「番号〜番号」を使ってまとめて消しています。

 歩数は主人公が移動したかどうか?なので現在の位置と直前までいた位置が同じかどうかを調べます。そして条件分岐で「同じだった時」と「同じでなかった時」で分岐します。

 同じだった(動いていない)時は、その後の歩数を数えたり、ステータスを変更する処理をしなくていいので「イベント処理中断」しています。イベント処理中断をするとそれ以下の処理を行わないみたいです。

 同じでなかった時が主人公が移動している(歩いている)時なので、この条件分岐以降の処理へ進みます。

 予備変数に[歩数]を設定。この中に主人公の歩数が保存します!主人公が移動している時だけ、歩数を「変数操作: V9-4[歩数] += 1 + 0」でカウントして…5歩進んだとき、満腹度が1以上あるとき満腹度を削ります。そしてカウントを一度0にリセットして、また1・2・3・・・とカウントします。満腹度が1未満の時はHPがあるかを確かめて、HPが1以上あるときHPを減らします。

 五歩進んだか?を調べているのが「CSelf20[歩数リセフラグ]」になっています!これが=5になった時主人公が5歩進んだことになり、条件分岐で行いたい処理を書きます!今回は満腹度・HP関係を減らしたりする処理を書いています。

 満腹度やHPを減らすときの計算式の「〇〇=△△/3」は正直なんでこうなるのか分かってないです…。

 コモンの説明は以上です・・・あまり上手に説明できないですいません😭

(追記:2022/2/20)

 五歩進んだら~って書いていましたが、よく見たらコレ4歩進んだ時に満腹度・HPを減らす処理になっていました。なぜそうなっていたのか?というと…ゲームスタート時に主人公が画面に降り立った瞬間を一歩としてカウントしてしまうためです。そのせいで実際の操作した一歩とシステム内の一歩と差が生まれてしまうからです。(0(画面に主人公登場),1,2,3…というカウントを行っている)

 本当の5歩進んだらの処理にするには「条件分岐(変数): 【1】CSelf20[歩数リセフラグ] が 5と同じ」の箇所が何歩でステータス減少処理行う…という分岐になっているので、5を6に変更すればOKです!

 最後まで読んでいただき、ありがとうございます


profile


MNEET
ゲーム制作を亀並みですがやってます
MNEET(@ごみ)の自創作置き場です
ゲーム制作以外にも自創作関係を投稿していこうと思っています
幅広に創作活動をしていきたい気持ち
よろしくお願いします👐

ゲーム制作や創作以外。日常系という名の自我👇
生活LOG+

MNEETのTwitter👇
垢名【ごみ】  Twitter

作ったゲーム

初完走!第一作目 徘徊者の館
第二作目 ぼく

カテゴリー

このブログを検索

QooQ