忍者ブログ

たうのゲームブログ

ウディタ等で制作したゲームやツイッターに書ききれないことや備忘録など書き連ねていきます.

【ウディタ】マウス操作の選択肢を自作しよう

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【ウディタ】マウス操作の選択肢を自作しよう

はじめに
この記事では「マウス操作ゲームにおける自作選択肢イベント」を作っていきます.
最終的な目標はこんな感じです.



ブログの説明用に作ったものなので随分と簡素なものですが,要はこんな感じのマウス操作前提の選択肢だと思ってください.ただし,今回はあくまで「自作選択肢」かつ「マウス操作可能」なイベントの作り方のご紹介となっているため,以下のような方のお力にはなれなさそうです.ごめんなさい.

・ウディタにもともと備わっている選択肢処理をマウス操作可能にしたい人
・キー操作可能な自作選択肢を作りたい人
(前者はシステム変数を弄ればできます.後者は今回の記事では割愛させていただきます.)

今回のイベントは(いろいろと横着した結果ではありますが)UDB一つとコモンイベント2つ程度で作ることができます.
なお、この記事で紹介する方法は最適なものとは限りませんのでご容赦ください.
長くなりそうなので読みたい方は続きからどうぞ.

全体の流れを考える

ウディタにおけるイベントの作り方は人それぞれとは思いますが,ここではまず,選択肢イベントでプレイヤーが行うことを動画を参考にまとめてみましょう.



こんな感じでしょうか.少なくともこの流れを無視することは出来なさそうです.そもそも選択肢が確認できなかったり,クリックししても何の反応もなかったりするようなものは作りたくないですもんね.この流れに沿う形で,やりたいことをコモンイベントやデータベースに落とし込んでいきましょう.


コモンイベント・データベースの作成
まず,提示された選択肢を確認するためにはそもそも表示させる選択肢を設定し,それを表示する処理が必要となるはずです.クリックして選択する際にも,クリックされた選択肢はどれなのかを判定する必要がありますし,「判定された選択肢が何か」という情報も受け渡さなければ選択肢に応じたイベントを見ることもかないません.すなわち,上記の図はこんな感じに書き換えることができるのではないでしょうか.

 
黒枠で囲まれているところを「選択肢コモン」として一つのコモンイベントにしてしまいます.つまり右の図のように,このコモンイベントは入力として選択肢を与え,出力として選ばれた選択肢の番号を返すということです.ちなみに入力と出力はこのウィンドウから設定できますよ.





  • ピクチャ番号管理データベース
さて,前置きが長くなりましたがここからは実際にイベントを作っていきたいと思います.
...とその前に,何も考えずにこのようなデータベースを作っておきましょう.



このデータベースはピクチャ番号管理DBという名前の通り,処理に用いるピクチャ番号を管理するものです.このようなDBを利用する理由はとても単純で,後からピクチャ番号の変更を容易に行えるようにするためです.後から作ったコモンイベントのピクチャ表示のせいで,以前に作ったイベントのピクチャが隠れてしまった!とか,複数のイベントで同じピクチャ番号使ってるけど全部一括で別な番号に変えたい!なんてときに,当該コモンイベントをわざわざ開いて番号を修正するよりも,データベースで管理できた方が楽だよね?って感じですかね.

ちなみに僕は「データIDを最初の文字列データと同じ」にすることが好きな人間なので,わざわざID用の文字列データをとってます(不要なら省いてください).また使い方によっては初めと終わりの番号ではなく,初めの番号とそこから何枚使うかという情報を格納してもいいと思います.そこはお好みで.

少なくともここで設定しなければならないのは,選択肢の枠のピクチャ番号と選択肢の文字列のピクチャ番号です.枠と文字列のピクチャ番号群を分けている理由は後程しますが,枠の番号<文字列の番号になるようにしてください(枠の下に文字を置きたい場合は別ですが)


  • 選択肢の表示
DBの設定をしたところで,選択肢表示のコモンイベントを作っていきましょう.ということで完成したものがこちらになります.



[やっていること]
・選択肢枠・文字列のピクチャ番号呼び出し
・選択肢表示座標(画面座標)の設定
・ループで選択肢の表示

ループでの選択肢表示ですが,今回は表示したい選択肢をコモンセルフ変数5~8へ直接入力しているため,4回ループを使ってコモンセルフ変数5から順に表示していっています.文字列が空欄となったタイミングでもループが中断するため,使いたい選択肢の数ぶん入力を与えてあげてください.4つ以上の選択肢を一気に表示したい場合は,選択肢の項目を格納するDBを別に作って読みだせばいいと思います.その時はループの回数も変えてくださいね.


  • 選択部と重なりピクチャ判定
次はクリックによる選択部です.例によって完成したものをどうぞ



[やっていること]
・常にマウスの状態を監視
・新たに左クリックされたタイミングで,マウスと重なっているピクチャ番号を算出
・重なっているピクチャ番号を1~3の値へ変換

このイベント中で呼び出されている,「重なっているピクチャ番号」というコモンイベントは以下の通りです.



[やっていること」
・指定された,「ピクチャ番号管理DB」のデータ群についてマウスと重なっているピクチャがあるか判定(枠ピクチャについて調べるときは,文字ピクチャとマウスが重なっていても反応しないということ)
・重なっているピクチャがあった場合,マウスがただ乗っているだけなら少し明るくフラッシュ,クリックされているなら明るくフラッシュ

各選択肢がクリックで選ばれたか否かを判定するだけならクリック後にこのコモンを呼び出すだけでいいのですが,横着してボタンのフラッシュ動作も中に組み込んでしまったので,選択部のループ毎に呼び出しています.また今回は枠のピクチャ番号を0~99の範囲に設定したため,「重なっているピクチャ番号」を呼び出すと0~99までで重なっているピクチャ番号があるか否かを判定することになります.また枠のピクチャ番号はDBに登録した番号の先頭から順に使われていくはずなので,マウスと重なっていたピクチャ番号とDBの数字から何番目に表示した選択肢なのかは容易に特定することができます.

[今回のコモンイベントたち参考にどうぞ(Wodipadを利用させていただきました)]
重なっているピクチャ番号判定
選択肢コモン

以上のコモンイベント・データベースを用いることで,冒頭の動画のような選択肢処理を行うことができると思います.それでは最後に少しまとめて終わりたいと思います.


今回のイベントの問題点について
問題点というより,このイベントではできないことや注意点についてまとめます.本当は強みと弱みをいくつか挙げようと思ったんですけど,目立った強みが見当たらなかったのでこのタイトルに...強いて言うならキー操作よりも多少実装が楽な点?
  • 複数選択できない
今回のコモンイベントでは,マウスと重なっているピクチャ判定時に重なっているピクチャが存在した時点でそれを出力しイベントを終了してしまいます.ですので提示された選択肢から複数選択可能にするためにはコモンイベントを改造するか同様の選択肢をループで何度も答えさせるかしかありません.平にご容赦ください.

  • 選択肢同士が重なっている状態にめっぽう弱い
こもれ重なりピクチャ判定の話なのですが,基本的にピクチャ番号の小さい順に判定を行うため選択肢が画面上を自在に移動するような演出を行った場合初めに表示した選択肢が微妙に選ばれやすくなると思います(多分).これを解決するなら,重なった時点でループを中断するのではなく,指定されたピクチャ番号群についてすべて判定を行い,結果を可変データベース等に記録するなどすればよいと思います.やりませんでしたが.

  • 選択肢は4つまで
これは選択肢の表示処理の部分でも軽く触れましたが,今回の選択肢イベントはコモンイベントへの入力をそのまま選択肢として使用しているため,仕様上4つまでしか一度に判定することができません.もしそれ以上表示させたいならデータベース等を用いましょう.ちなみに表示さえさせることができれば選択部の処理は特に問題なく動作するはずです.
(本来なら横着せずにコモンイベントを分けるべき.そうすれば表示部だけ細かく仕様変更が可能になると思います.記事用のコモンなので許してください)


さいごに

ここまで自作選択肢イベントを制作してきたわけですが...そもそも選択肢って作る必要あるんでしょうか.選択肢,と聞くとこういうの思い浮かべますよね?(限りなく抽象化された何か)

ウディタにはもともと選択肢を行うためのコマンドが存在しています.mobとの会話,あるいはノベルゲーのルート分岐まで,この選択肢を使えばよいのではないでしょうか.

なんて思ってた時代がありました.

もう一度ここでこの図を見てみましょう.

提示された選択肢から何かを選んで,選んだものに応じた処理を行うという何の変哲もない流れですが,これってそもそも上に示したような一般的な「選択肢」に限った話なんでしょうか.「なにか選べるものが提示されて,選んだものによって違うものが見られる」ことって,ゲームだといくらでもありませんか?あまり意識はしないかもしれませんが,メニュー画面を開いてキャラクターのステータスを見たりアイテム欄を確認したり装備品を確認したり...これもれっきとした選択肢ですよね.それにこういうのはどうでしょう.

これは(結局使うことのなかった)パズルゲームです.パズルと選択肢とどういう関係があるのかって?このパズルも画面いっぱいに選択可能なドロップが提示され,選択されると,選択されたドロップに応じて異なる挙動を示す.という流れで見れば選択肢と何ら変わりありません.それにここでも今回用いたような重なりピクチャ判定のイベントを用いてますしね.

というわけで次の記事ではこのパズルゲームの作り方をご紹介したいと思います.自作選択肢もこうやって応用できるんだぞ~みとけよみとけよ~って感じです.それではまた.
------------------------------------------------------------------------------------------------
◆お問い合わせはこちらまで◆
メール(tau.accs@gmail.com)
ツイッター(@Labyrith_Hyde
------------------------------------------------------------------------------------------------
PR

コメント

1. ליווי בתל אביב

"I must thank you for the efforts you have put in writing this blog. I really hope to see the same high-grade blog posts by you in the future as well. In truth, your creative writing abilities has encouraged me to get my own, personal website now ;)"
<a href="https://www.israelxclub.co.il/נערות-ליווי-ברחובות/">נערות ליווי ברחובות</a>
gder4563

プロフィール

HN:
たう
性別:
男性
自己紹介:

ウディタ・Unity(勉強中)を使って
ゲーム作りしてます.主な進捗はTwitterに.
Twitterに書ききれない進捗や,
備忘録を不定期で記録していきます.
よろしくどうぞ.

◆お問い合わせはこちらまで◆
メール(tau.accs@gmail.com)
ツイッター(@Labyrith_Hyde

P R