[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart10 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
321
(1): 名前は開発中のものです。 [sage] 2023/05/20(土) 13:19:36.78 ID:haP0wd4+(1/4) AAS
>>320
320(1): 名前は開発中のものです。 [sage] 2023/05/20(土) 12:42:17.11 ID:YRmdPJjZ(3/7) AAS
ステートマシンってswitch caseみたいなものだと思うけど、if分岐とは何が違うんでしょうか?
本式で作ると全くの別次元、ステートでclass間を行き来するから
class化の最大の利点のカプセル化と隠蔽が効く

そうでないものは唯のまがい物でバグの温床にしかならないから
if文やswitch文と大差ない
323: 名前は開発中のものです。 [sage] 2023/05/20(土) 14:47:52.39 ID:haP0wd4+(2/4) AAS
そうなるかな
デザインパターンのステートパターンを使う。
例えばIStateインターフェイスを定義して、idleState、moveState、jumpState
を派生させたらメソッドの中身を書く

例えばJump中に横移動させたくないならメソッドの中身に横移動する処理自体なかったら
ステートを変えてclassが変わると横に移動しなくなる。if文やswitch文だとフラグによるから
自分が意識してない想定外のフラグの立ち方が計算式的に成立してしまうとそれがバグになる。
そういう可能性が完全になくなる。
326: 名前は開発中のものです。 [sage] 2023/05/20(土) 17:39:51.82 ID:haP0wd4+(3/4) AAS
まぁ普通は自分で書いたんだから規定通りに動くに決まってんだろって思うじゃん?
デバッガで追ってみて初めてまさかそんなことが起きるのかよって事が起きるからバグるんだよ

外部リンク:d.ku★ku.lu/pgkt7ukuu (ngワードになるので★入れたけど、ホント面倒くさいな)
インターフェイスを使ったシンプルなfsmを適当に作ってみた
赤は1、青は2、緑は3しかキーが効かないようになってる
メソッドがないから他の動作はしない

敵のAIに使って例えば、patrol、serch、chase、attack、escapeのように
stateを分解してしまえば、最初からstateで既定した動作以外しなくなる
複雑怪奇なif文を書くより遥かにスッキリするよ
329: 名前は開発中のものです。 [sage] 2023/05/20(土) 20:22:17.10 ID:haP0wd4+(4/4) AAS
だね。
まばたきの制御をフラグ管理でやったら目を閉じかけた途中でキャンセルされて
目が全開になるからじゃあフラグ増やすとかやってたらどんどんフラグが増えていくとか
intが1→2→3→4と1つづつ増える筈なのに、2→4になったりして頭抱えるとかね
2時間位デバッガでガチャガチャやってた事あるから流石に懲りた
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s