Page 1 of 1

マウスドラッグやフリック操作などの作法

Posted: 2017/11/13 01:03
by hildsoft
入力の検知方法について、arbor2を使用した場合の作法を確認したいので質問します。

1.マウスでのドラッグ&ドロップや、タッチパネル系でのフリック操作など、
プレイヤーの操作を監視する複雑な処理は自前のスクリプトに記述して、
FSMではそのON/OFFを切り替えるのが推奨される作法でしょうか?

2.ドラッグ&ドロップやフリックなどの操作をサポートしたbehaviourの作成予定はありますでしょうか?

お手すきの際に回答頂ければ助かります。

Re: マウスドラッグやフリック操作などの作法

Posted: 2017/11/13 02:14
by caitsithware
hildsoft wrote:1.マウスでのドラッグ&ドロップや、タッチパネル系でのフリック操作など、
プレイヤーの操作を監視する複雑な処理は自前のスクリプトに記述して、
FSMではそのON/OFFを切り替えるのが推奨される作法でしょうか?
判定方法や何をしたいかにもよりますので、最終的には自前のスクリプトを記述していただくのが良いかと思っています。
操作監視スクリプトについては、MonoBehaviourかStateBehaviourのどちらに記述するかは使用頻度やステートとの関連性によりますので、まずはステートマシンで完結できる内容かどうかを検証してみてください。
設定項目が多い代わりにステートごとにまでは変える必要がないようであればMonoBehaviourで、というのももちろんアリです。
hildsoft wrote:2.ドラッグ&ドロップやフリックなどの操作をサポートしたbehaviourの作成予定はありますでしょうか?
前述のとおり、内容が複雑でゲームロジックに依存する部分については、各自用意していただいたほうが最終的な使い勝手はよくなるかと思います。
ただ、汎用的に使えそうな案が出ましたら追加することもあるかもしれません。

現状ではOnPointEnterTransitionのように他のIEventSystemHandler系のTransition一式追加するかもしれない、という感じです。
実際の使い勝手なども考えると、細かな挙動まですべてステートマシンに書くのは得策ではないため、これについても実際どこまでサポートするかは未定となっています。

また、あくまで誰が用意しても同じような造りで汎用的に使える挙動のみをサポートしていく方針となっております。
その点はご了承ください。

Re: マウスドラッグやフリック操作などの作法

Posted: 2017/11/13 03:38
by hildsoft
回答ありがとうございます。

StateBehaviourをステートごとに個別に書いていく事が基本という感じですね。

ゲーム中のタッチパネルコントローラーでの使用を考えていました。
ポーズや会話イベント中などを除いて、操作についてはステートを移動させずに一つのStateBehaviourで管理する方が良さそうです。

操作に応じた挙動という感じでステートを分割しようと思っていましたが、それだと少々分割しすぎですね。

ステート粒度へ意識が間違っていたことに気づきました。解説ありがとうございました。

Re: マウスドラッグやフリック操作などの作法

Posted: 2018/02/23 04:03
by caitsithware
hildsoft wrote:StateBehaviourをステートごとに個別に書いていく事が基本という感じですね。
そうですね。
あくまで理想としてですが、なるべく仕様に合わせてステートごとに挙動を書き、繰り返し使えそうなレベルにStateBehaviourを分割できるなら分割する。
という感じがいいと思います。

極端な例ですが1ステート1メソッドになるとステートマシンである必要性もなくなってしまうので、ステート粒度が細かくなりすぎないようにステートそのものの挙動はまるまるスクリプトで書く感覚でいたほうが良いかもしれません。

(ただ、組み込み挙動については、ユーザーさんの求める仕様が不確定な点もあり粒度が細かいものばかりの提供となってしまっていますが……)
hildsoft wrote:ステート粒度へ意識が間違っていたことに気づきました。解説ありがとうございました。
ドキュメント不足でもありますので、申し訳ありませんでした。
今後はこういった概念的な部分も含めてできる限り文章化していこうと思います。