Meiryo’s blog

やってみて詰まったことを備忘録として残すブログ

【Unity】Anima2Dを使ってアニメーション作ってつっかかったところ

先週、Anima2Dを使用してアニメーションを作りました。
【Unity】初めてAnima2Dを使った時にお世話になったサイトのまとめとざっくり手順 - meimaru’s blog

↑がその時のことをまとめた記事です。
この時作品を一応完成させてyoutubeに動画を投稿しているのですが、
実は何か所もうまくいっていない部分を隠していたりしてます。
今回はそんなうまくいっていなかった部分の原因と解消法をまとめます。


まっすぐ歩いてくる敵キャラが途中で止まる

ただまっすぐ歩いてくるだけの敵キャラがいるのですが
そいつがなぜか歩いている途中で止まる問題がありました。
これの一時対策としてはRigitbodyのkinematicを使いました。
この対応はたぶんよくないんだろうなぁと思って調べたところ、
下記の記事を発見。 qiita.com

どうやらオブジェクトのコライダ―がマップの継ぎ目に引っかかることが
あるようです。
記事の通りにEdge Colliderを使用したところ、止まらず歩くようになりました。

歩くとこける

矢印キーの←→を押すと移動するPlayerを
歩かせるとこける問題がありました。
これもマップの継ぎ目につっかかってるのかなと思いきや別問題でした。
この時も一時対応としてkinematicを使ってました。

なにが問題なのかいろいろ触っていると
移動するとZ軸に回転していることを発見
2Dなのになんでや。
なんかZ軸に回転してるパーツがあるのかと思い、
Playerのオブジェクトを一つずつ見て行くと
アニメーションを作るときに使ったAnima2DのBoneのRotationのZ軸が
とんでもない数値が入っていることを発見する
f:id:meimaru:20190111110148p:plain
これのせいなのかどうかはまだ試してないので不明です。

解決策は2つ出ました。
1つ目はRigidbodyのFreezeRotation zにチェックを入れて固定すること。
これで一応どうにかなりました。
が、たぶんもっとちゃんとした方法あるんだろうなと思って
また考えました。
そして「これ重心が前に行ってるんじゃないか?」ということを思いつきました。
さっそく調べ下記の記事を発見
procongame.hatenablog.com
記事通りに進め、重心を下半身の方にするとPlayerがこけなくなりました。
これが解決策の2つ目です。