Unityの機能にどこまで頼るか

未だに結構なやんでるアニメーション制御
正直、Mecanimでアクションシーンを成立させられる自信がない。
確かに、画面上で遷移状態をがりがり弄れるのはすごいし、簡単なNPCの動作とかならこれで十分OKだと思う。

でも、一言に攻撃といっても・・

立ち状態→通常攻撃1
走り状態→ダッシュ攻撃
通常攻撃1→通常攻撃2→通常攻撃3
さらに各通常攻撃からいくつもあるスキルへキャンセル
特定スキルは追加入力でフィニッシュあり
アーマーがない攻撃は途中でのけぞり中断もあって・・

なんてのをまともに遷移図で書こうとすると、私の脳は何度考えてもカオスなレギオンができあがる未来しか導き出しませんでした。
さらにいうと、問題はアニメーションの遷移というよりは、アニメーション毎に様々なアニメーション以外の動作をしなければならないということ。
最初に考えたのはsetIntegerで遷移先のスキルを判別して~だったのだけど、すべてのモーションが値が変わった瞬間に遷移していいわけじゃない。
例えば、スキル攻撃の入力は検知してるけど、遷移するのは剣を振り終わってから~みたいな。
そうなると、プログラム側はいつ遷移が起きるか、遷移先が当初想定していたスキルか(遷移までに被弾で中断がないか等)~
と色々見てあげないといけない。
正直ちょっとしんどい。

だったらいっそ・・
state.jpg
Mecanimの遷移機能をスルーして、アニメーション置き場にしてやる

もちろん置いただけじゃまったく役に立たないので、スクリプト側から
・遷移先設定
・アニメーション終了の検知
・アニメーション割り込みの可不可
・フェードの時間指定
・遷移先がない場合アイドル状態に戻す
等々をできるようにしてあげた。
まぁつまり・・Legacyの時のような制御になるでしょう。
(Legacy時代にUnity触ってないから情報からだけど)

さすがにアニメーションのイベント機能までは捨ててないけど、これも使い方によっては足音SEやエフェクト再生だけでなく遷移の代替案になったりする。

一応、簡単な追加入力でフィニッシュが出るような技はtriggerで制御しちゃってもいいかもしれない。後は適当にイベントで攻撃判定を発生させたりね。
ただやっぱり割り込まれた場合が怖いから、プレイヤーがどういう状態なのかだけは常にしっかり監視しないとだめそう。
→遷移先で遷移前のアニメーションのイベントも発生するから、攻撃後即ダメージをうけて、のけぞりモーションへの遷移中に攻撃イベント発生とかありえる。

鉄拳7・・だっけかな
UE4を使ってるそうですが、記事を読んだ限りだとロジック的な部分はがっつりこっち側で作って、見えてる部分でエンジンを使ってるような感じです。
正直、ゲームエンジンというものを勘違いしてたのかもなーと思ったり。と同時に、元かある機能で完結させるべきか否かの悩みが少し晴れた気もします。



拍手3件ありがとうございます!

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

comments

comment form

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

trackback


この記事にトラックバックする(FC2ブログユーザー)

リンク
報告
20150405 新カテゴリ追加
月別アーカイブ