如雨露の日記

学んだことを書いていくサイトです。もし誤りがあれば指摘していただけると嬉しいです。

Photon Unity Networkingを試してみる(Animation)

原因がわかりました。

それは後述するとして、さっそくやり方を書いていきます。

今回はアニメーションを使うので前回と違ってアニメーションをしてくれるキャラクターが必要です。

 ここからSDユニティちゃんをダウンロードしましょう。

インポートした後にPrefabsのSD_unitychan_humanoidをHierarchyにD&Dした後にアタッチされているスクリプトを全てRemove Componentしてください。

今回はmecanimのアニメーションはシンプルにしました。

新しくAnimatorを作成してアニメーションを2つ追加しましょう。

f:id:ninataka_japan:20150717190446j:plain

 float型のRunSpeedをParametersに作成して

遷移条件を0.1でそれぞれGreater,Lessに設定してください。

f:id:ninataka_japan:20150717190448j:plain

f:id:ninataka_japan:20150717190449j:plain

作成したAnimatorをSD_unitychanのAnimatorのControllerにアタッチ。

これでmecanimは作成完了。

さて、UnityChanControllerのスクリプトはこちら

RunSpeedに値を流し込んでアニメーションが遷移するようになっています。

 後はこのようにコンポーネントを追加して

f:id:ninataka_japan:20150717190902j:plain

中身はこの様に設定してください。

f:id:ninataka_japan:20150717191135j:plain

これで完成!!、のはず

これをResourcesフォルダに新しくPrefabを作成してこれまで設定をしたSD_unitychanをプレハブ化してください。(私はUnityChanとしてプレハブ化しました)

あとはNetworkManagerの中のPhotonNetwork.Instantiateで生成するオブジェクトをプレハブ化したSD_unitychanに変更してビルド、実行してみてください。

このようになりましたか?


uploaded by ninataka_japan on GIFMAGAZINE

なっていれば完成です。お疲れ様でした。

なお、私が時間がかかっていた部分は同期オブジェクトが静止しているにもかかわらず、同期先でオブジェクトが動いていたことです。原因はPhoton Transform ViewのSynchronize PositionのExtrapolate Optionの設定ミスでした。

Extrapolateは、速度と最後の更新から経過した時間と位置を元にオブジェクトの今の位置を推定します。そのため、速度があまり変わらないオブジェクトに適していますが今回のようにユーザーが走らせたり止まらせたりできるものでは使わないほうがいいでしょう。

私はこちらもSynchronize Valuesにしていたので同期オブジェクトが動いてしまっていたんですね。

基本Disableにしたほうがいいかもしれません。

今回は以上です。

 

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています