FC2ブログ

銀日記

このブログはマビノギ&ウディタ制作のブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

オリジナルな選択肢 その2

どーも、瀬戸です(・ω・ノノ

配布データの更新ー!

ここからダウンロード
test_ver0.004.ZIP 23.4MB

なお、画像・音声素材についてお借りした制作者が定められた利用規約上、サンプルデータに同梱していない・別の素材に差し替えを行っている場合があります。講座自体には全く影響がない部分ですが、あらかじめご了承ください。

利用規約っぽい何か(素材元リンク有)



はい。
では、さっそく Game.exe で見てみよう。

udhita

4羽にふえました。
左から順に

キーボード操作のみ対応①
キーボード操作のみ対応②
キーボード&マウス操作対応①
キーボード&マウス操作対応②


となっています。
それぞれのコモンイベントは、

[test]選択肢type1
[test]選択肢type2
[test]選択肢type3
[test]選択肢type4


となっています。
数字がふえるごとにレベルアップしていっているので、順をおって説明します。

まず、[test]選択肢type2 を見てみる。
[test]選択肢type1 と比較すると前準備の部分とループの中身が若干違いますね。
[test]選択肢type2 は言うなれば、マウス操作を実装する前の下準備状態です。

[test]選択肢type1 と大きく違う点としては type1でのキー入力は「キーが押されるまで待つ」にチェックが入っていたのに対し、今回はチェックが入っていません。
また、ループの一番最初に1ウェイトが追加されています。

ここで前回もだしていたこの図を思い出してみる。
udhita

前回中身を紹介した[test]選択肢type1コモンの場合は「キーが押されるまで待つ」にチェックをいれていたため、アップデートのくだりがあまり意味がないという話をしたと思います、え、覚えていない? したはずです、思い出して(汗

キー入力のコマンドで「キーが押されるまで待つ」にチェックがいれられている場合、キーが押されるまでコモンコード自体がその部分で停滞します。
だからどうした、というようなことですが、停滞している最中は並列イベント・自動イベントしか動かせない、という状況になります。
これはマウス操作を考えた場合、問題になります。
なんで? だったら並列イベントにマウス操作を記述すればいいんじゃないの?
と思うかもしれませんが、残念ながら違います。
というのは、並列イベントは、「並列」という名称がついてはいますが、実際には完全にほかのイベントと並列してイベントが実行されているわけではありません。
2~3個でやるお手玉をイメージしてみてください。
ぽんぽん玉が右手左手空中を移動しますよね。
このお手玉の1個1個をコモンイベントだとし、右手にある間だけそのイベントが実行されると考えてください。
並列イベント処理のイメージはこんな感じです。
コンピュータの処理速度は人間のそれよりも非常に早いので、一見同時に行われている処理も、超超超スローモーションで観察してみると、実際はこのお手玉のイメージのように一つずつ順々に処理が行われているのです。

ここで、並列イベントで「Yse/No 選択肢」のマウス操作を行った場合どうなるかに話を戻します。
結論としては、動きます。
しかし、同時に処理されているわけではないので完全に同期するわけではなく、若干ラグったり、ほかの並列イベントの影響から入力を認識しなかったりと、思わぬバグが発現したりします。
そのあたりのバグが起きないように完璧な管理の上で並列イベントで実装すれば問題ないのですが、私はかなり大雑把なのでそういった芸当は苦手です(おぃ

並列イベントで書く内容も大した長さでもないし、まとめられるなら一つにまとめたほうがいいんじゃね? 

と、瀬戸は考えます。

んじゃ、ひとつのイベント内にまとめよう。
となったときに、コードの流れを止めないために「キーが押されるまで待つ」にチェックが入っていないほうが良い、という結論になるのです。
同じイベントコード内で、毎フレームにキー入力判定を行いながら、ループをぐるぐる回したほうが良いのです。
それに伴い、1フレーム内の処理数オーバーエラーを起こさないためにループの冒頭のウェイトは設置されている、と、そういうわけです。

また、変数についてCself30 直前キー押Cself31 キーウェイト用という変数が追加されています。

これは何に使うのかというと、疑似的にキーリピート機能&誤認防止を行うために使用しています。
今回は、キー入力コマンドの「キーが押されるまで待つ」からチェックをはずしました。
その結果、毎フレームごとにループが行われるため、例えば決定キーを押しっぱなしにしていると1フレームごとに決定キーが押されている判定になります。
ということは、もしCself30[直前キー押]が絡んだ処理なしでコードを組んだ場合、話しかけた瞬間に 決定キー判定→選択終了→会話終了 というバグが発現することになるのです。

Cself30[直前キー押] の役割は、キーが押されているときに現在のCself30[直前キー押] の中身を確認し、中に代入されている値によって処理を変えるというものです。
例えば、決定キーやキャンセルキーの場合は、Cself30[直前キー押] の中身が0の場合のみ、キーが押された判定がなされるようになっています。
方向キーの場合は、Cself30[直前キー押] の中身が1の場合のみ、20フレームウェイトを置くようにしています。これは何なのかというと、キーリピート初ウェイトです(ボタンを押しっぱなしにしたときのカッカカカカカカ…「ッ」の部分のウェイト)。
また、Cself30[直前キー押] の中身が2以上の場合は、5フレームウェイトを置くようにしています(キーリピート次ウェイト;ボタンを押しっぱなしにしたときのカッカカカカカカ…「カカカカ…」の間のウェイト)
これらのウェイトは表示状態のアップデート処理の中に置くようにします

udhita

また、キーリピート初ウェイトの処理を回数指定ループで1フレームずつ行っています。
これは、方向キーを連打した場合にきちんと反応してカーソル移動ができるようにするためです
キーリピート初ウェイトの処理中でも毎フレーム方向キーの入力判定を行うことで、問題なくキーの連打に反応できるわけです

また、Cself30[直前キー押] は、ループの一番最後まで辿り着く(何もキーが押されていない)と、中身が0に書き換えられます。
udhita
それと、キー入力時の処理の最後が「ループ開始へ」になっていることも重要です。
これらの処理は重要で、この処理があるからこそキー連打や入力誤認防止などが正常に動作してくれます。

今回はキーボード操作のみの「Yes/No 選択肢」のオリジナル選択肢の作り方を説明しました。
ポイントとしては

キー判定は毎フレーム
最初に1フレームウェイト
キー操作時のウェイトは画面表示変更の処理と同じ場所
キー押判定用の変数と「ループ開始へ」をうまく使う

といったところでしょうか。

次回は、type3 type4 のコードについてちゃちゃっと説明したいと思います。

前の講座     講座目次     次の講座


テーマ:同人ゲーム - ジャンル:ゲーム

  1. 2012/11/14(水) 21:25:50|
  2. ウディタ講座
  3. | トラックバック:0
  4. | コメント:0
<<変身マスタリでみんな遊んでいるようです | ホーム | アンドラスの顔・・・。>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ginyoku892.blog69.fc2.com/tb.php/136-b56b5a83
この記事にトラックバックする(FC2ブログユーザー)

検索フォーム


blogramのブログランキング
↑ブログが面白かったらクリック!

アフィリエイト


プロフィール

silvertorch

Author:silvertorch

キャラ名:銀燈
タルラークサーバ
10CHに住むジャイアント
自称壁職(笑)

キャラ名:パドさん
タルラークサーバ
格闘メイド

ウディタペンネーム:瀬戸星人
凡才な初心者
スキルアップしたい(願望)



Edit

かうんたー

スキル状況

銀燈 2012年10月29日現在

提供:Ababill/聖典群のブログ

ひまつぶし

クリックでエサをあげられます


最新記事

最新コメント

カテゴリ

アフィリエイト (1)
ぐだぐだな日記 (89)
スキル (7)
プレイ動画 (4)
戦術指南? (7)
イベント (15)
MML (6)
演奏動画 (1)
ネタ (2)
装備関係 (8)
無駄レポート (12)
ウディタ (16)
ウディタ関連ソフト (1)
ウディタ講座 (29)
ウディタ素材 (1)
ウディタ講座まとめ (1)
ウディタでSRPG目次 (1)
ウディタでベースシステムを自作する系目次 (1)
ウディタ創作物まとめ (1)
ゲーム制作あれこれ (2)
今日の映画 (1)

リンク

カレンダー

10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

月別アーカイブ

QRコード

QR

ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。