変数呼び出し値から主人公を動かす

15/01/05改稿

TIPSの方では、ローグライク作成に不可欠とまでは言えないものの、あると便利な技術やシステムの作り方を載せていきたいと思います。
ということで第一弾、変数呼び出し値から主人公を動かす。
ウディタの話なので、ウディタ利用者以外は読んでも意味がないかと思うけども。

さて、ウディタでは主人公を動かす方法がいくつかあります。
一番ポピュラーなのが普通の方向キー入力による移動。ただのRPGだったらこれだけで十分です。
また、イベント中などでは「動作指定」から主人公を動作させることも考えられます。自動キー入力などでも代用可能ですね。
そして最後に、あまり知られていない裏技があって、今回はそれの使い方や特徴を紹介します。

すなわち、「変数呼び出し値」から主人公を動かす。

変数呼び出し値というのは1600000+Xでコモンセルフ呼び出しとかいう例のアレのことです。CDBやUDBの指定タイプ・指定データ・指定項目の数値を引っ張ってきたりすることもでき、とても便利なので、この使い方はマスターしておくといいと思います。

さて、実はこの変数呼び出し値には、主人公や指定イベントの現在座標を呼び出す数値が存在します。
主人公のX座標(標準)呼び出しが9180000、Y座標(標準)呼び出しが9180001です。どんどん+1していくと、精密座標呼び出しや高さ呼び出しなんかもできることが分かります。
また、マップイベントについては9100000+(イベント番号)×10で呼び出すことができます。
この変数呼び出し値を以下のように使うと、主人公を移動させることができます。

1.データを呼ばないにチェックを入れた状態で変数に変数呼び出し値を入力。
2.さっき入力した変数(9180000などが保管されている状態)に、X番の変数呼び出しにチェックを入れた状態で主人公を移動させたいXY座標を代入。

こうすることで、主人公が勝手に指定XY座標まで移動してくれます。もちろんマップイベントにも応用可能です。
が、どうしてこんな面倒な手順を踏んで主人公を移動させる必要があるのか。

言うまでもなく、ターン処理を行うタイミングを監視するためですね。
主人公の移動をコモンイベントで制御しておいて、一歩移動させるごとにターン処理を行うので、これはローグライクでは必須の技術なんではないかと思います。

注意点。
変数呼び出し値から主人公を動かした場合は、移動速度は反映されますが、向いている方向は変わらず、主人公はすり抜け状態になります。なので、上に動くときは上を向くなど方向を反映させる必要があるほか、移動方向に壁があるときは移動できないようにするなどの注意が必要です。
また、キー入力受付は異常に感度が高く、ちょっと方向キーを入力しただけでも滑るようにどこまでも移動してしまいます。なので、入力を実行するまでのキー押し時間や、入力受付間のウェイトなどを使って、移動を常識的な感度に設定する必要があります。

14/7/29
補足。書き忘れてましたが、ウディタキー入力で矢印キーの入力を受け付ける際、斜め方向の入力判定がやたらシビアです。特に右下方向は入力してもほとんど右か下かにしか入力判定がいかず、ここは自分もコモンを作るときに苦労しました。ぱっと見た感じでも、他のウディタ製ローグライクでも斜め移動がやりづらい作品はけっこう多いみたいです。
なので、コモンの組み方としては、斜め方向を単体で受け付けるのではなく、右が押されてから下が押されていたら右下と判断するとか(下の後に右も同じ)、そういう工夫が必要になると思われます。
ここらへんは他のゲームではまず手を加えないような部分なので、誰しも苦労するでしょう。しかし、ローグライク(特にターン制の不思議のダンジョン)である以上、移動の操作性は何をおいても重視すべきなので、ここはシビアに作っていければと思いますね。

15/01/05
さらに補足。↑でこんなこと書いてますが、自分のキーボードがイカれているだけかも。ゲームパッドだったら全然問題なかった。
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

No title

こんちわ!
自分もウディタでローグライク作っている最中なので
興味深く読ませてもらってます。

ところで、「斜め方向の入力判定がやたらシビア」という部分なのですが
自分の環境ではあまり感じたことがありません。

自分の場合、ダンジョン内に入るときにターン制切り替えを行い
|■キー入力禁止/許可: 決定 キャンセル サブ ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
と、移動キー禁止して
ターン処理ループ中で、普通に
| |■キー入力:このコモンEvセルフ変数10 / 8方向 決定(10) キャンセル(11)
でキー入力を受けていますが、
斜め方向も問題なく取得できています。

何か環境による挙動の違い等があるのでしょうか?
ちなみに自分は(WolfRPGEditor V2.10、Windows7)という環境です。

Re: No title

こんにちは。コメントありがとうございます。

> こんちわ!
> 自分もウディタでローグライク作っている最中なので
> 興味深く読ませてもらってます。

お、ローグライクの製作者さんですか。
需要ありそうななさそうな講座ですが、読んでくれる人もいるんですねぇ。

> ところで、「斜め方向の入力判定がやたらシビア」という部分なのですが
> 自分の環境ではあまり感じたことがありません。
>
> 自分の場合、ダンジョン内に入るときにターン制切り替えを行い
> |■キー入力禁止/許可: 決定 キャンセル サブ ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
> と、移動キー禁止して
> ターン処理ループ中で、普通に
> | |■キー入力:このコモンEvセルフ変数10 / 8方向 決定(10) キャンセル(11)
> でキー入力を受けていますが、
> 斜め方向も問題なく取得できています。
>
> 何か環境による挙動の違い等があるのでしょうか?
> ちなみに自分は(WolfRPGEditor V2.10、Windows7)という環境です。

あら、そうなんですか?
自分も環境は似たようなものなので、環境による挙動の違いとは考えにくいですが…。
作ってからやや時間が経ってるので詳細は忘れてますが、確か「キー1回で斜め移動する」という挙動をつくるのに手間取った記憶があります。なんとなく斜め方向に押していると、たとえば「ちょっとだけ右に歩く→右上に歩く」みたいな挙動になったと思います。普通のRPGなら問題ないですが、ローグライクで斜め移動したいときに「ちょっとだけ右に歩く」のは何が何でも修正しなければならなかったので、いろいろ試行錯誤してました。また、方向転換ではまったく反応してくれなくて困った記憶もありますね…。
そういえば自分はテストプレイをキーボードでやっていたので、ゲームパッドと比べて斜め入力がしづらかったということもあるかもしれません。
Twitter
カテゴリ
最新コメント
月別アーカイブ
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR