2016年5月31日火曜日
2016年5月27日金曜日
MMD4MecanimFaciemの研究
Mebiustos様のブログ
■ノウハウ
細かい部分は上記リンクの通り。出力したアニメーションクリップは、出力元のMMDモデル専用のアニメーションとなっている。なので出力元のGameObjectにアニメーターを持たせ、そのアニメーターに出力したアニメーションクリップを配置する。
今回やりたいことは、弓を引くモーションに合わせて弓のMMDモデルをしならせること。なので、弓を引くアニメーションにアニメーションイベントを持たせ、そこで弓のアニメーターを制御することにした。下図のアニメーションイベントは左から順に、①弓の引き始めのモーション呼び出し、②(弓を放った為)弓の形状を元に戻す、③弾丸プレハブの呼び出し、④弓の形状を杖に戻す(そういう仕様の武器)。
なお、当初はbool代数で管理しようとしていたが、アニメーションイベントはbool代数を引数とする関数は呼出せなかったので、int型で管理することにした。
出来上がりは次のような感じなのだが、今回お借りした弓のMMDモデルには「矢」が同梱されており、モーフ制御では仕様上隠しきれない。
モデルはボーン単位で管理されているので、矢のボーンのscaleを0にすることで対応した。
最終的な結果がこちら。ちゃんとモーションに同期しつつ、矢を隠すことができている。
2016年5月26日木曜日
リリースしたアプリのバグ対応(Android編)
iPhone実機でもUnityでも正常に動くから、Androidでも正常に動くだろうと思っていたが甘かった。Androidを持っている友人に確認してもらったところ、学習を開始すると「時間切れ」でループするとのこと。
かなり前に購入したAndroidのタブレット端末でデバッグできないかトライしてみた。
タブレット用のスクリーンショットはアップロードしてなかったが、Google Playで検索したら普通に出てきた。そして普通にインストール&起動ができた。どうやら特別な対応をしなくてもタブレットで動くらしい。
実機で確認してみた感想としては、SQliteのDBが読み込まれてない気がする。現象から見て真っ先に気になるのは、StreamingAssetsへのアクセス。
とりあえず手元のタブレットで確認出来る事が分かったので、引き続き調査。
かなり前に購入したAndroidのタブレット端末でデバッグできないかトライしてみた。
タブレット用のスクリーンショットはアップロードしてなかったが、Google Playで検索したら普通に出てきた。そして普通にインストール&起動ができた。どうやら特別な対応をしなくてもタブレットで動くらしい。
実機で確認してみた感想としては、SQliteのDBが読み込まれてない気がする。現象から見て真っ先に気になるのは、StreamingAssetsへのアクセス。
とりあえず手元のタブレットで確認出来る事が分かったので、引き続き調査。
- クローズドベータテストのやり方(参考)
- 公開しないとベータテスト用のURLが提供されない
- 製品版を公開中止にして、ベータテストのみ受け付けるということはできない模様
- バージョンをカウントアップしたり、アップデートされるのを待たなきゃいけなかったりと大変なのでUSB転送を利用した方が良い
- USBで端末に転送する(参考)
- 予想以上に簡単にできた
- Mono Developを使うとブレークポイントが設置できて便利(参考)
結果
- データベースのコピーは正常に行われていた
- splits.dllはApple製品には標準装備だが、それ以外の端末には初めから入っていない。これを同梱しなかったことが原因と思われる。ただ、これが意外と根深い問題のため現在試行錯誤中。
- 多分、このあたりの話が絡んでくるのだと思う(参考)
- 最終的にこちらのプラグインを利用させてもらうことで解決した(参考)
2016年5月25日水曜日
2016年5月24日火曜日
アプリリリース(Android編)
- 基本的な流れ(参考)
- Android SDKが必要(参考、参考2)
- ビルド時にSDKを見つからなかった場合は、インストール先のフォルダ指定を要求される(公式マニュアル該当ページ末尾)
- 公式ページに行くとAndroid StudioやJDKは見つけられても、SDKが見つけられないのでちょっと彷徨った。Android Studioのページの末尾(Download Options)にSDKだけダウンロードできる場所がある。
- DLしたSDKフォルダのtools中にAndroidと言うファイルがあるので、これをダブルクリック。インストールするパッケージを選ばされるので、初めからチェックが付いているものをインストールする。(参考)
- インストール時にはパッケージごとに規約の同意が必要
- このインストールだけで1時間近くかかった。SDKのフォルダを確認してみたら32GBになっていた。重すぎ。Unityでパスを指定すればいいだけだから、外付けHDDに移そうと思う。
- SDKインストール後は正常にビルドできた。
- UnityのPlayerSettingsにあるPublishingSettingsのKeyが初期状態だとunsignedになっている。この状態でもビルドできるが、GooglePlayにアップロードした時に弾かれる(参考)。
- 電子署名の組織名などは、個人の場合は未入力でOK(参考)
- GooglePlayの登録時には「ヘッダー画像(横1024 x 縦500)」が必要。無料の背景素材に文字を入れて加工して作成した。
- GooglePlayのアイコンの大きさは512x512で、iTunesよりは小さくて済む
- レーディング方式が変わった模様。別項目に存在する「コンテンツのレーディング」に回答すると自動で適用される。
- 教育向けGooglePlayの定義が厳しくなっていた。英語学習アプリだが、「Google Play for Education」の定義に当てはまらなかったのでチェック入れなかった。
- 同意事項に「マーケティングの除外」という良く分からない項目がある。要は「Google社はGooglePlay以外では登録された画像等は使わないから安心してね。裏を返すと、GooglePlay内ではGoogle社の判断で勝手に宣伝することもあるよ」ということらしい(参照)
2016年5月22日日曜日
2016年5月19日木曜日
アプリリリース (iOS編)
基本的な手順
- アプリ名の設定(参考)
- Texture Typeの変更(参考)
- iPhone/Android override(参考)
- iconの設定方法(参考)
- その他リリースに必要な設定(参考)
- 登録関係(参考1、参考2、参考3)
- iTune Connectのスクリーンショット関連
実際やってみて詰まったところ
- AppIDを作る時にチェックを外せない項目がある
- XcodeのAppIconを見ると一部空になっているが特に問題無し
- Achieveのやり方が分かりづらい(参考)
- Achieveで表示されるBinary and Entitlementsの名前がどこで設定したものか不明
- Validateの場所が分かりづらい
- "Upload to AppleStore"直後に"Missing Push Notification Entitlement"についての警告メールが届く。内容としては「送ってもらったものは受理したけど、プッシュ通知機能つけてるよね。署名にはプッシュ通知使わないってあるよ。…プッシュ通知つけてなければ気にしなくていいよ」というもの。…どこで設定するんだろう。とりあえず無視(参考)。
地獄のiTunes Connect編
- iTunes Connectのビルドの場所が不明。そして、自動でビルドされているっぽい。→数分後にビルド完了の通知が来た。やはりビルドは自動化されたとみて良さそう。
- iTurns用の1024x1024のアイコンが必要。解像度高過ィ!
- とりあえず項目を埋めて「審査」ボタンを押してみると、最後に幾つかの確認を求められる。
- コンテンツ配信権がよく分からず悩んだ。著作権全般らしいので、とりあえず素材等を使っていることから「はい」を選んだ。
- このほか広告を使用しているかという項目があるが、将来使う予定でも今使っていなければ「いいえ」にしなければいけないとのこと(参考)
iTunes Connectのスクリーンショット用意が、かなり苦行
- 各解像度の画像が個別に必要
- iTunes Connectの何処で設定するのか分かりづらい
- X-codeのwindow > deviceからスクリーンショットの撮影が可能。画像はデスクトップに保存される。(参考)
- しかし、ボタンを押したタイミングと撮影のタイミングが一致しない
- Quick Time Playerで動画にしてからスクリーンショットに撮る
- 影がつく
- 影はoptionを押しながらクリックすると影無しになる(参考)
- 動画1つを用意すれば、どの端末でも同じに表示されるのでは?
- 動画の解像度も合わせなければ行かない模様
- 結局、iMage Toolsを使った
- 一括してリサイズできるので便利
3.5インチはアクペクト比崩れるので横長になるが諦めたiMage Toolsのストロークを使えば縁取りを追加することが可能。これで余白を追加した後、プレビューで画像をコピー→サイズ変更→ペースト→位置調整をすれば、余白を追加できる。
- 一応iPadのスクリーンショットも用意したが、iPad非対応であれば不要とのことだった。(どこで設定したかもはや覚えていない)
- 進捗ステータスの最終段階は「配信準備完了(Ready for Sale)」(参考)
- ただし、設定した配信開始日になってリリースされることになる
- レーティングの設定に問題があると配信されない
- iOS用のアプリの場合、PCのAppleStoreには表示されない模様
- このせいで一向にリリースされていないと思っていた
- 提出してから4日でリリースされた。想像していた以上に早い。
- 5/20:提出
- 5/22:レビュー待ち
- 5/24, 朝2時:レビュー中
- 5/24, 朝8時:配信準備完了
2016年5月18日水曜日
AudioSourceの管理について
次第に手を焼くであろうAudioSourceの管理。どの音楽ファイルも一律AudioSourceで表示されるので分かりづらい。
完成形はこんな感じ。
<追記>
2DゲームやUIの音であれば、シングルトンのクラスを作ったほうが便利(参考)。ただし3D効果を利用する場合は、この手法だと一律同じ場所から聞こえてしまう。3Dの場合は音源となるオブジェクトにAudioSourceコンポーネントを付与することを考える必要がある。
AudioSourceがアタッチされたオブジェクトが参照されるので、AudioSource毎にオブジェクトを作成し、そのオブジェクトに管理しやすい名前をつけてあげるのが一番分かりやすいように思う。
完成形はこんな感じ。
<追記>
2DゲームやUIの音であれば、シングルトンのクラスを作ったほうが便利(参考)。ただし3D効果を利用する場合は、この手法だと一律同じ場所から聞こえてしまう。3Dの場合は音源となるオブジェクトにAudioSourceコンポーネントを付与することを考える必要がある。
2016年5月16日月曜日
MMDのモーション(VMD)利用 with MMD4Mecanim
- FBXのRigをHumanoidにAplayしてから、アニメーションファイルを複製で取り出す。このようにしないとHumanoidでモーションを使い回すことができない。(ただし、汎用モーション化しなければ、MMDの物理演算にしたがって髪の毛などがちゃんと動く。使いまわさないなら専用モーションのままでいいかも)
- モーションの一部だけを利用したい場合、キーが大量にあるので、これを削除したり動かしたりするとかなりのマシンパワーが必要になる。
- FBXに紐付けされたアニメーションクリップは開始位置と終了位置が指定可能。ここで指定した上でcommand+D(windowsの場合はCtrl+D)で複製すると、任意の箇所のモーションをアニメーションとして取り出すことができる(参考)。
2016年5月14日土曜日
uGUI Textをくっきり見せる小技
色文字を背景色に埋もれくことなく表示したい…。しかし、文字色とアウトラインをどういじっても上手くいかない。そんな時、重宝した小技。
Shadowコンポーネントを2つ使い文字を影で囲う。浮き出てくれ見える上に、割と無茶な色同士でも上手く見えてくれる。
アウトラインの太さを2にするのもコツ。色を変えるのはアウトラインだけでOK。
Shadowコンポーネントを2つ使い文字を影で囲う。浮き出てくれ見える上に、割と無茶な色同士でも上手く見えてくれる。
アウトラインの太さを2にするのもコツ。色を変えるのはアウトラインだけでOK。
2016年5月13日金曜日
uGUI Textの改行について
- BDの設問文の末尾に改行を表す/nを記載していたのだが、str1 + str2では改行されなかった。str1 + "\n" + str2とすると改行された。
- Unityの自動改行の基準は半角スペースの模様。英語と日本語の混在する文章の場合、日本語は異様に長い単語として認識されている。自動改行の結果、表示が変になる場合は半角スペースと適宜入れる工夫が必要。
Vertical Layout Groupで起こる矩形の再計算について
詳細には突き詰めていないが、
<追記1>
下図の条件の場合は発生しなかった。
アンカーとピボットが絡んでいる模様。
<追記2>
結論
PivotのYが1以外だと発生する。アンカーは関係なし。…左下のボタンから出たり戻ったりする感じが好きだったんだけどな。
登録:
投稿 (Atom)