Unity 5がリリースされました
さっそく個人で作成しているゲームのプロジェクトを5.0.0で開いてみることにしました
すると...?
Unity 4.6.1 から Unity 5.0.0 へ Upgrade後にしたこと
4.6.1で作成していたプロジェクトを意気揚々とインストールしたての5.0.0で開こうとすると、こんなウィンドウが。
要するに、「君のコードを5.0.0用にアップグレードしてあげるよ!」ということらしいです。
「〜. Go Ahead!」を押してアップグレード。
この結果、主に二つの出来事が起こりました。
そのことについて軽く書きたいと思います。
既存コードの置き換え
Unity5 betaでは当たり前のようでしたが、
rigidbody2D.velocity = direction * speed;
このような呼び出しは廃止されたようです。
GetComponent<Rigidbody2D>().velocity = direction * speed;
このように、直接rigidbody2Dにアクセスせずに、GetComponentでコンポーネントを取る必要があるそうです。
コンポーネント全般に言えることのようです。
例えば、audioやparticleSystemもGetComponent呼び出しに変わっていました。
この置き換えをUnity5さんが勝手にやってくれていました。
この部分は、既存の動作に全く影響を与えませんでした。
RigidBody2Dが動かなくなった?
インパクトがでかかったのはこっちです。
RigidBody2Dのvelocityを使っている処理の"一部"が動かなくなってしまいました。
ちゃんと該当のvelocityには値が入っているようなのに、止まったままぴくりとも動きません。
未熟な自分は原因にたどり着くことはできませんでしたが、もとの動作に戻すことはできました。
結局やったこととしては、**「全く同じプレハブをもう一度1から作り直す」**でした。
※2015/03/23追記
deyu_noteさんのご指摘より、該当オブジェクトにおけるAnimatorコンポーネントの「Apply Root motion」のチェックが変換時にオンになってしまっていたことが原因であることがわかりました。
バージョンアップ時の変換によって上記のような挙動になってしまった場合、「Apply Root motion」のチェックを外してみましょう。
deyu_noteさん、ご指摘ありがとうございました!
なぜこれで上手くいったのかはさっぱりわかりませんが、同じ問題を抱えている人が一人でもこの記事で救われるとうれしいです。
ちなみに、自分が調べてわかったことを一応残しておきます
* RigidBody2DがアタッチされているプレハブからRigidBody2Dを削除、再びアタッチしてもダメ
* velocityにはちゃんと値が入っている
* ちゃんと動いているものもある(動くのとそうでないもののプレハブの差異はわかりませんでした...)
こんなのに遭遇したのは自分だけなんですかねぇ...
だれかの助けになれば幸いです
では良いUnity5ライフを〜