原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

近況報告と言い訳

大雨と猛暑

先週末は大雨が降ったと思えば今週は一転、猛暑の日々が続いて目まぐるしい気候の変化に驚いてばかりですが、最近なにより驚いたことと言えば、大雨の降った日の朝、普段は糞みたいに厳しい上司から電話が鳴り、何事かと思えば「おい、今日は大雨で大変だから無理して出社しなくていいぞ」という連絡。おお、なんて優しい配慮、ありがとうございます。感謝します。とか、言うべきだったんですが、なんせ普段の態度からは想像もつかない突然の言葉に驚いて、その時の私は返事に窮しました。ええ、だって既に出社してたらね。

 

その日は上司の言葉の通り、JRもバスも止まって大変でした。帰れないかと思った。

 

 心折れる

大変なことと言えば、CutieCircutのiOS版のリリース作業。

毎度のごとく「iOS版はもうすぐリリースできそう」とかのたまっていて、前回は「審査が通れば」なんてことも言ってましたが、もういい加減心が折れそう。
なぜなら審査以前の問題が発覚したからです。

 

iOS版に取り掛かる前まではアプリの中身はとっくに出来上がっていて、Andoroid版ではAPKのサイズもギリギリ100MB以下に収まっていたので、XCodeビルドと実機での動作確認さえできればリリース可能だと簡単に考えていました。

 

XCodeビルドと実機での動作確認は色々ありながもなんとかクリアして、もうこれで作業完了したも同然の気分でいたり。

f:id:Karvan:20180710233824p:plain

<なんだかんだ余裕だったおwww、もう天才おwww

 

見たいな感じ、でもね、でもさぁ・・・

f:id:Karvan:20180626225740p:plain

<ipaのファイルサイズが300MBオーバーだお!!


審査のためにXCodeからiTunes Connectにアップロードしたら警告がでたので何事かと思えばipaのファイルサイズが制限越え。
前述のようにAndoroid版ではギリギリ100MB以下に収まっていたので150MB制限のAppStoreでは余裕かと思っていたのですがとんでもなかった。

 

調べてみるとiOSの場合、iPhoneとiPadに対応させたら対応するためのファイルがそれぞれ必要で、かつ32Bit版(armv7)と64Bit版(arm64)それぞれで必要なビルドを行うのでアプリの容量が膨らむらしい。

 

なので、リリース対象を絞ってiPhoneのみ+64Bit版のみとして再ビルドしてみても・・・

 

f:id:Karvan:20180710234123p:plain

<268MB・・・・

 

こうなると、素材の容量を削減するか、AssetBundleに手を出すしかない状況に。
AssetBundleは未着手の領域のなので、今はなるだけ手を出したくない。
なので、まずは素材(Texture)の容量(サイズ)自体を削減することにしました。

 

素材の容量を削減

「素材の容量を削減する」とは前回やったようなUnityのInspectorでTextureのMAXサイズを変更する、というのではなく、Texture自体のサイズを小さくする、という意味です。

 

つまり、Textureの画像サイズを一つ一つGimpみたいなツールを使って小さくする⇒Unityにインポートする⇒Materialに反映する、という作業を繰り返す、という意味で、つまりは・・・

終らない

 

無駄にいろんなアセットのいろんな素材を使いまくったせいで縮小対象のTextureが多すぎ=単純作業の繰り返し、となるわけで、画像を縮小して、Unityにインポートして、そのTextureを使っているMatrialを変更して、画像を縮小して、Unityにインポートして・・・・

 

f:id:Karvan:20180710234329p:plain


もう、すっとそんな気分ですよ。夏休みも始まってないのに。

 

とりあえず頑張る

心折れかけなんですが、とりあえず頑張ります。ちなみに上の対策でだめな場合は、AssetBundleに手を出す羽目になるんですが、そうなるといよいよ終らないと思います。。。

 

Unity製アプリのメモリリーク対応について

IT系勤務とはいうものの

IT系の職業に就いていたり休日は携帯用ゲームを作っていたりしますが、だからいってPC(=ハード)に興味があるわけではなくって、例えばTVショッピングとかで「お手ごろです!!」と宣伝されているノートPCを見ると素直に「これはお得かも」とか思っちゃうぐらいの情弱な人間なのです。

 

つまりは、床屋とかで職業を問われてIT系だと答えると十中八九「お勧めのPCはなんですか?」とか聞かれて困る、ということなんです。そんなことはヨドバシの店員にでも聞いてください。

 

まぁ、気が弱い人間なのでそんな質問でも拒絶できずに「う~ん、、、今はメーカものよりも自作の方がいいかもですね~」とか適当に答えるんですが、稀に「そうですよね~、私も自作で組んでて~」とか言われてマザーボードの型番とかを持ち出されたり、ごめんなさい、ごめんなさい、全然わかりません。
そんなこともあります。

 

意外とあっさりと

そんな感じで冴えない日々が続いているのですが、ゲーム制作の方は以外と進捗があって、前回の記事でCutieCircutのiOS版について『アプリが音もなく落ちる』と伝えていた問題は意外にあっさりと解決しました。

 

元々メモリ管理には厳しめのiOSで、そんなのお構いなしにプログラムを組んでいた私が悪いのですが、なにせ前述のようにPCハードとかアーキテクチャとかあまり興味がないので、メモリリーク?なにそれ美味しいの?状態。何をどうしたらよいか思案に明け暮れていたのですが、Google先生を駆使して色々調べたらあれよいう間に解決したので今回はそのお話

 

解決方法

前回の記事でも書いたように今回のメモリリークは初期処理でキャラクタの走るステージを作る際に、一旦プレハブを読み込んでInstantiateでオブジェクト化して、要が済んだらそのオブジェクトをDestroyする、といった処理を繰り返しているところで発生しているみたい。

 

「Destroyする」とは勝手に「メモリ上から破棄する」と考えていたのですが、調べてみると「生成されたオブジェクトのRendererが持っているMaterial(Clone)が、Rendererが破棄されたあとも残り続けている」ことがあるみたい。要はゴミが残っていることがあるってことです。

なのでそれらのゴミを一掃すべく以下の方法を使いました。

 

1.Destroy時にMaterialを解放する。

オブジェクトをDestroyするとそのGameObjectにOnDestroyというイベントが発生するので、そのイベント内でGameObjectが使用しているMaterialを明示的に破棄するようにしました。

 

 これは以下のサイトに詳しく書かれていて、自動解放用のスクリプトも掲載されています。

qiita.com

 

2.アセットのアンロードを実施する。

Resource.UnloadUnusedAssetsを使用すると「強制的に」不使用なアセットを解放してくるようです。併せてSystem.GC.Collectをコールすればガベージコレクションを実施してくれるのでメモリの最適化も行ってくれます。


ただ、この処理自体が結構重たいのでDestroyの度に行うとその度にゲームが止まってしまうので、ある程度のところで一気に行います。

 

3.使用するテクスチャの最大サイズを下げる。

メモリリークには関係ないのですが、テクスチャの最大サイズを下げることでメモリ使用量自体を少なくしました。


やり方はAndroid版と同様にテクスチャをクリックしてInspectorに表示される

「Override for iOS」

のチェックをONにして、MaxSizeを小さいサイズに下げます。

f:id:Karvan:20180703205307p:plain

 

それらの結果

前回大騒ぎした割にはあっさり解決してちょっと拍子抜けですが、無事にiOS上でも動作確認が取れて一安心です。

 

現在はAppStoreへ申請中なので申請が通れば無事にCutieCircuitがAppStoreに並ぶことになります。申請が通れば。

 

プロモーション動画

iOS版リリースを先取りしてプロモーション動画を作成しました。

Android版リリースの時に作っとけよ、って話ですが、色々課題が山積みだったのでそこまで時間が取れなかったんですよね。

 

今回はゲームの流れがわかるようなゲーム実況風の紹介動画となっています。

つたない編集ですが見てやってください。

 


Cutie Promotion【ちょっぴり高画質版】

 

次回は新作の話ができたらいいなぁ・・・

八方塞がりな報告

違う違う、そうじゃそうじゃない

最近、何故か会社で「グループ交流会」なる謎の飲み会が開催されるはめになり、私も半強制的に参加させられたのですが、そのちっとも楽しくない飲み会で、ちっとも可愛くない新入社員の女の子と互いに興味のない会話をしなくてはならなくなり、とはいえ、話題も続かないので互いに携帯に保存してある画像を見せあったりしたんです。「最近、こんな痛車をみつけて~」みたいな感じで。

 

そうしたら不意に、かなり前の社員旅行で撮った写真が現れて、それが何故か私とデブスの女性社員(とっくの昔に退職した)とのツーショットみたいになっている。
おそらく同僚がふざけて撮ったものが私の携帯に送られてきたのだと思うのですが、それを見た新入社員が一言、「・・・へぇ、綺麗な人ですね~・・・」

 

違う違う、そうじゃそうじゃない
ただ偶然にツーショットになっただけですから!この人がカバンさんの・・・とかうがった見方は止めてください!
そんなモビルスーツでいえばアッガイみたいな女性と私が関係があるとか心外です!プン!プン!
とか思ったのですが、新入社員はその一言以外何も言わなかったので反論することなく終了、ああ、もう謎の飲み会とか参加するべきじゃなかった。

 

進捗報告

そんな感じで不意な誤解と不利益を被ってばかりな日々が続いています。
お気に入りのズボンが破けて破棄するとか、携帯のパケットが制限一杯になったのでTwitterもできくなくなったとか、新入社員たちの間では私が守備範囲の広い人になっているとか、違う違うそうじゃない。

 

CutiteCircuitで言えば、つい先日までは楽観的な予想をツラツラと述べていましたが、今の所その予想に反することが多くて八方塞りな状況です。
つまり、「iOS版は近々にリリースできると思います」とか言ってましたが、あれはウソだ!ってことです。

 

一体なにが問題なのかというと、iOS版のリリースについて当初の計画では

1.UnityでAndroid版を完成させる。
2.完成したAndroid版のプロジェクトをiOS版のプラットフォームへ変更する。
3.iOS版へ変更したプロジェクトをMacBookでビルドする
4.MacBookでビルドしたものを実機で動作確認
5.AppleStoreへリリース

 

となるはずで、UnityでAndroid版を完成させてプラットフォームをiOS版へ変更するまでは順調だったんです。なのに・・・

 

問題続出

問題その1:iOS版へ変更したプロジェクトをMacBookでビルドする

 

f:id:Karvan:20180626225555p:plain


>Unityビルドは無事に完了、あとはXCodeでビルドだお

 

f:id:Karvan:20180626225455p:plain
>ld: library not found for -lPods-Unity-iPhone ってエラーになったお

 

f:id:Karvan:20180626225648p:plain

>Xcodeの General設定⇒Linked Frameworks and Libraries から
>「libPods-Unity-iPhone.a」 を 削除すればいいみたいだお!

 

f:id:Karvan:20180626225740p:plain

>余計にエラーが増えたお!!

 

■対処
・「libPods-Unity-iPhone.a」 を 削除する
・使用しているアセットを最新にする。

 

問題その2:MacBookでビルドしたものを実機で動作確認

 

f:id:Karvan:20180626225827p:plain

>Xcodeでビルドが通ったから実機確認だお

 

f:id:Karvan:20180626225859p:plain
>Android版で完成しているから問題ないはずだお

 

f:id:Karvan:20180626225740p:plain


>アプリが音もなく落ちたお!

 

 

そうだった、そうだった思い出した

そうです。iOSってメモリ管理が厳しくってメモリ不足とかメモリリークとかでよく落ちるんです。
CutieCircuitの場合、メイン画面でキャラクターの走るコースとか周囲のオブジェクトとかをPrefabから読み込んだり、
別のオブジェクトに差し替えてDestroyとかしているのですが、そのあたりでメモリ不足、メモリリークが発生しているっぽい。

 

つまり、その辺の面倒くさい処理を見直す必要がある=すぐには終らない、というわけで。。。

 

f:id:Karvan:20180626230255p:plain

自分の技術不足に歯軋りしながら対処方法を思案中、という訳です・・・

 

お知らせのブログ

カッタデー

日本勝ちましたね!!

まさか勝つとは思わなかったので、21時過ぎに帰宅したらリードしていてビックリ。一夜漬けみたいなチーム作りで三戦全敗を予想していました。御免なさい(土下座)。

 

デキタデー

この勢いに任せて、というわけではありませんが、当初の計画ではとうの昔にリリースを終えているはずのCutiteCircuitのアップデート、長い苦労の末ようやく完成しました!パチ!パチ!

 

f:id:Karvan:20180328195705p:plain

f:id:Karvan:20180326204448p:plain

 

 3月の末に初版をリリースしてから思いのほか日数を要しましたが、一応これで完成です。バグは随時改修するとして、これ以上の大きな変更や追加はないと思います。まぁ、容量が100MBギリギリなのでこれ以上増やせない、というのが正直なところなんですが。

 

今回のバージョンの主な変更点は

  • 4ステージを追加、これで全16ステージに。
  • イベントを追加、ちょっとしたストーリー仕立てになります。
  • ポーズ処理を追加。
  • 全体的に難易度を簡単に。
  • 全ステージクリアでエンディングが表示されます。

こんなところでしょうか。難易度を下げたことで遊びやくなったと思います。

 

残りはiOS版のリリース!あとひと頑張りです!!

 

 

UnityでAndroidビルドエラー解消までの道のり(Unity2018編)

私以外にはどうでもいいことですが

Twitterでフォローしているアカウントを整理しました。
ゲーム製作者を中心に300近くフォローしていたんですが、TLで追えなくなって来たのでガッツリ減らしました。


個人的にログを溜め込んでいるのって消化しないといけないTODOを溜め込んでいるような気がして落ち着かないので、小まめにTLをチェックして消化しているのですが、いい加減疲れました。フォローされていた方、ごめんなさい。悪意はありません。ただ疲れただけです。


4桁以上フォローしている人ってどうしているんだろう?ちょっと時間を空けるとわんさかログが溜まっているような気がする。

 

そんなことをいいながらも

ログを溜め込むのは嫌い、とは言いながらゲーム制作の方は作業を溜め込んでいて、CutieCircuitのアップデート版もGW明けにリース予定→5月末にリリース予定→6月上旬にリリース予定・・・と延ばし延ばしになっている現状ですが、え、ちょっと待って、これには訳があるんだけど(よくある女子ツイート風に)

 

先週のうちには作業を終えていて、後はビルドするのみとなっていたのですが、このビルドが中々通らない、四苦八苦しながら約5日を費やし、昨日ようやくビルドができるようになったので今回はそのお話

 

Unity2018でビルドエラー

UnityのプロダクトをAndroid端末で動かそうとするとビルド作業が必要です。
このビルドを行うための環境づくりも面倒なのですが、それはそれとして、もっと面倒なのがビルドエラーの対応

 

エラーメッセージは英語なのでGoogle先生に翻訳してもらいながら作業になるし、対処方法を検索してもドンピシャの解決法が見つかるとも限らない。しかも英語のページが多いし。


まぁ、代表的な解決方法は日本語のブログでも幾つか記事に纏められていて、大抵の方はそちらを参照すれば解決するかと思います。

 

  • Andoridビルドエラーについてのまとめ

nn-hokuson.hatenablog.com

 

 

上のリンクでもあるように代表的な対処方法とすれば

 

  • SDKのファイルパスを確認する: UnityのメニューからPreferences→External Toolsを選択してAndroidのSDKに表示されているパスが正しいか確認する。

 

  • toolsフォルダを更新する:/Users/ユーザ名/Library/Android/sdkフォルダの中にあるのtoolsフォルダをr25.2.5-windows.zipをダウンロードして置換する。

 

私の場合はそれを試しても全くダメ。まさにお手上げ状態でした。

 

 ビルドエラー解消までの道のり

表示されるビルドエラーは以下の内容

Failed to re-package resources

 

CommandInvokationFailure: Failed to re-package resources. See the Console for details. C:\Users\***\AppData\Local\Android\sdk\build-tools\27.0.1\aapt.exe package -auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/***/AppData/Local/Android/sdk\platforms\android-27\android.jar” -F bin/resources.ap_

以下、数十行のエラーログ

 

うーん、分からん。。。とりあえず、build-tools云々といっているからbuild-toolsのバージョンを下げてみることに。


Android Studio を立ち上げて、SDK Managerからbuild-toolsに26.0.3を選択し、逆に27.0.1のチェックはずしてOKを押す。


更新が完了するとbuild-tools配下に26.0.3が作られて27.0.1が消えている。よし、これでどうだ!!

Failed to re-package resources

CommandInvokationFailure: Failed to re-package resources.

以下、略

 

うーん。。。だめだったか。。。ならば、もう一つバージョンを下げてみよう。今度は25.0.3をインストール。さあ、これで!!

CommandInvokationFailure: Unable to merge android manifests. See the Console for more details.

stderr[
]
mp\StagingArea\AndroidManifest-main.xml:18, C:\Unity\***\Temp\StagingArea\android-libraries\android.arch.lifecycle.runtime-1.0.0\AndroidManifest.xml:3] Main manifest has <uses-sdk android:targetSdkVersion='25'> but library uses targetSdkVersion='26'

 おお、エラーが変わった!これは前進しているということか!(←大きな勘違い)


AndroidManifest.xmlのバージョン指定を書き換えればいいのか!(←無駄です)


やっとこれで解決する!!(←しません)

Failed to re-package resources

CommandInvokationFailure: Failed to re-package resources.

 

以下、略

 

ヽ(  ̄д ̄;)ノ オテアゲー

 

ここから迷走が始まり。

  •  ビルドシステムをGradleに変更する(←状況変わらず)
  •  SDKのbuild-toolsを最新(28.0.1)に更新する(←状況変わらず)
  •  ならばとUnity2017をUnity2018へバージョンアップさせる。(←丸一日掛かった)
  •  UnityIAPを入れなおす。(←なんとなく)
  •  VisualStudioを2017へバージョンアップさせる(←そうしないとUnity2018では怒られる)
  •  FIFA18のワールドカップモードで日本を準優勝させる(←現実逃避)

 

 何をやっても状況は変わらず袋小路から抜け出せない。このままではアプリはリリースできない→せっかくロゴを依頼して作ってもらったのに水の泡になる→ロゴ製作者の方に顔向けできない→ゲーム開発者として終了、とまで追い詰められたのですが、ふと思い立って、別の作りかけのアプリをビルドしてみることに。

これまではずっとCutieCircuitだけをビルドしていたので、他のアプリではどうなるか試してみようと思ったんです。そうしたら。。。

 

ビルドが通った!APKが作成された!

 

ということは、ビルドが通らない原因はAndroidの環境ではなくCutieCircuitプロダクト固有の原因、ということになります。

なので、もう一度エラーメッセージを見直してみると、先ほどから「以下、略」で省略していた箇所にヒントがありました。

stderr[
D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.support-compat-26.1.0\res\layout\notification_action.xml:17: note: removing attribute http://schemas.android.com/apk/res/android:paddingStart from <LinearLayout>
D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.support-compat-26.1.0\res\layout\notification_action.xml:32: note: removing attribute http://schemas.android.com/apk/res/android:paddingStart from <TextView>

D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.support-compat-26.1.0\res\layout-v16\notification_template_custom_big.xml:32: note: removing attribute http://schemas.android.com/apk/res/android:layout_marginStart from <LinearLayout>
D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.suppor<message truncated

 

Tempに展開されたcom.android.support.supportについてのエラーとなっていますが、このフォルダ自体はAssets/Pulgins/Andorid配下にあるcom.android.support.support-***.aar

ファイルが解凍されて展開されているみたい。

なので、Assets/Pulgins/Andorid配下の中を確認すると

f:id:Karvan:20180613004044j:plain

 不自然に日付が古いaarファイルが幾つかあります。

さらにそれらの中を確認するとcom.android.support.support-***.aarのファイルとダブっているように見える。ならばと、この古いaarファイルを削除してみると。。。

 

ビルドが通った!APKが作成された!

 ___                             ム  i
 「 ヒ_i〉                            ゝ 〈
 ト ノ                           iニ(()
 i  {              ____           |  ヽ
 i  i           /__,  , ‐-\           i   }
 |   i         /(●)   ( ● )\       {、  λ
 ト-┤.      /    (__人__)    \    ,ノ  ̄ ,!
 i   ゝ、_     |     ´ ̄`       | ,. ‘´ハ   ,!
. ヽ、    `` 、,__\              /” \  ヽ/
   \ノ ノ   ハ ̄r/:::r―–―/::7   ノ    /
       ヽ.      ヽ::〈; . ‘::. :’ |::/   /   ,. ”
        `ー 、    \ヽ::. ;:::|/     r’”
     / ̄二二二二二二二二二二二二二二二二ヽ
     | 答 |     コ ロ ン ビ ア  │|
     \_二二二二二二二二二二二二二二二二ノ

 この対応で正しいのか?

 Pulgins配下のaarファイルは私が意図的にインストールしたものではないため、おそらく何かのアセットをインストールした際に入ったものだと思います。なので、このファイル削除が正しい対応なのかはわかりません。


ただ、現状ではアプリの動作に支障はないみたいなので、これでAndroid端末での動作確認を進めようと思います。

 

まぁ、とりあえずビルドが通ったので後はリリースするだけだと思うでしょ?ただ、現状ではAPKのサイズが190Mbyteあるんです。

うわっ・・・私のアプリサイズ、大きすぎ(よく見かける広告風に)

 

100Mbyteの壁再びかぁ・・・・

 

DoTweenのDOPathを使ったキャラクター移動

最近の愚痴というか・・・

 ここ最近の働き手不足は深刻なようで、行く先々のコンビニで店員がネパール人だったり中国人だったりと、いったいここはどこの国の店だろう?と思うような事態になってきて、そういう海外の方が店員だったりすると、肉まんとかチキンとかちょっとした口頭での注文が頼みづらいなー、とか思ったり。

 

私の滑舌が悪い所為もあるのでしょうが、何度も「ナンデスカ?」と聞かれるとちょっと心が折れる。
この前とか、チーズバーガーをレジに持っていったらネパール人らしき店員が温めずにそのまま袋に入れようとしたので「温めてください」とお願いしたら「What?」とか言われたし。ああ、ごめんなさい、ごめんなさい、英語できない私が悪いんです。そのまま食べます。

 

別にコンビニ店員の国籍が豊かになるのには反対しませんが、日本人の店員という選択肢がないという状態は不便に感じますね。

 

で、今回の話

 

unityでキャラクターを動作させる方法は色々あると思いますが、キャラクターの移動経路があらかじめ決まっている場合はDoTweenの経路移動機能(DoPath/DOLocalPath)を使うと便利です。

 

DOPath/DOLocalPathとはその名前の通り、オブジェクトを指定された位置へ順番に移動させるというもので、位置を表すVector3の配列を渡して使用します。

DOPathと DOLocalPathの違いは座標の指定を絶対座標にするか、ローカル座標にするかの違いですが、性能的にはローカル座標を使用したほうが良いみたいです。

 

下の例だと、targetのオブジェクトをローカル座標(1, 2, 2)→(8, 0, 4)→(5, 4, 10)の順に2.0秒掛けて移動させます。最後の引数のPathType.CatmullRomは移動タイプ=曲線を指定しており、各ポイント滑らかな曲線を描いて移動します。

 

Vector3 paths = new {
new Vector3(1, 2, 2),
new Vector3(8, 0, 4),
new Vector3(5, 4, 10)
}

Tweener tween = target.DOLocalPath(paths, 2.0f, PathType.CatmullRom);

 

このDOPathの何が便利なのかというと、用意されているオプションが使いやすい。

例えば、

 

Tweener tween = target.DOLocalPath(paths, 2.0f, PathType.CatmullRom).SetOptions(true);

 

と指定するとpathsで指定した最後の位置まで移動したら、最初の位置まで自動的に戻ってくれます。

 

CutieCircuitでの使用例

CutieCircuitでは色々な箇所でDOLocalPathを使用していますが、代表的なのはメニュー画面でプレイヤーのキャラクターが机の周りをグルグル歩き回る動作。

 

f:id:Karvan:20180606000348g:plain

 

これはまずキャラクタを移動させるポイントを決めます。

f:id:Karvan:20180605233517p:plain

 

次にこのポイントの位置をVector3の配列に編集し、DOLocalPathに渡します。

    /// <summary>
    /// 通常経路移動開始
    /// </summary>
    public void Start_NormalPathMove()
    {
        Vector3[] MovePath = new Vector3[NormalPath.Length];

        for (int iCnt = 0; iCnt < NormalPath.Length; iCnt++)
        {
            MovePath[iCnt] = argPointArray[iCnt].transform.localPosition;
        }

        nowPathTween = AvatorObject.transform.DOLocalPath(MovePath, 8.0f, PathType.CatmullRom)
                                                        .SetOptions(true)
                                                        .SetEase(Ease.Linear)
                                                        .SetLookAt(0.05f, Vector3.forward)
                                                        .SetLoops(-1);

    }

 

ここで上記のようにSetOptionsにtrueを設定すると元の位置まで戻ってくれるので、後は繰り返し回数を指定するSetLoopに-1=無限回を渡すとキャラクターが机の周りを廻り続けてくれます。

 

ただし、このままではキャラクターは進行方向を向いてくれないのでLookAtオプションを使用しています。


LookAtオプションでは特定の値や特定をオブジェクトを指定することで、Pathを使って移動している間、オブジェクトの向き(Z方向=前方)を移動方向へ向せることができます。

 

.SetLookAt (0.05f, Vector3.forward)

 

ここで第一引数の0.05fという数字ですが、これは指定した方向を0.05秒だけ先読みした形で向かせることを指定しています。

これによってスムーズな方向転換が可能になり、より違和感のない走行に見せることができます。

 

ここら辺の話は以下のリンクに詳しく書かれています。

www.shibuya24.info

 

毎度の進捗報告

あっという間に気がづけば6月です。リリースするよ、もうすぐ完成するよー、とか言いながらWindowsUpdate並みに終らなかったCutieCirtuitのアップデートですが、ここに来てようやく完了しました(と思う)。これからiOS版のビルド作業に入って、アップルストアの審査→リリース、という手順になります。Android版は出来上がっているので近々リリースします(希望)。

 

まぁ、アップデート作業が終れば一息つけるので、前々から欲しかったSwitchを購入してゼルダの伝説でも楽しもうかな、と思っていたのですが、なにせiOS版リリースのためにMacBookを購入したり、使い切れないアセットを購入したりで散財したのにCutieCirtuitの売り上げは0円という、自虐ネタにもならない赤字を計上しているのでしばらくは手が出せそうにありません。ギャフン。

 

 

Cutie Circuitで使用しているアセットの紹介

歯の定期健診にいったら・・・

歯科の受付の女性がとても可愛くて、やべぇ、毎週でも通いたい!と思ったものの、歯石取りの痛さに心折られて、やっぱりもう二度と通いたくない気分になる、そんな日々をタラタラと過ごしている今日この頃ですが、CutieCircuitのバージョンアップ作業はようやく終わりが見えてきました。(そんな気がする)

 

大きなバグがなかったり、アプリサイズが100メガの壁を越えたりしなければ近々にでもリリースできるかと思います。(そんな気がする)

 

なので今回は、リリース前のまとめとして、CutieCircuitで使用しているUnityのアセットを紹介したいと思います。
決してネタ切れとか、他に書くことが思いつかなかったとか、受付でお金を払うときにその女性が私に向かって微笑んでいたとか、そんな気がする、きっと・・・これが恋・・・(両手挙げてジャンプ)とか、そんな訳ではありません。

 

CutieCircuitで使用しているアセット

使用アセットを全ては紹介しきれないので、ジャンル別に主なものを紹介したいと思います。

 

完成プロジェクト

The Rings

CutieCircuitのベースになったプロジェクト、とはいえ、ほぼ作り変えたので使っているのは素材だけです。残念ながら現在アセットストアでは売られていないようです。

 

3Dモデル

Yippy Kawaii

このアセットを購入してCutieCircuitのコンセプトを決めました。プレイヤーのキャラクターに使用しています。
作者のSURIYUNのモデルはどれも可愛く、ほぼ全ての敵キャラがSURIYUNのモデルです。

 

Fantasy Kingdom Pack

ファンタジー系の素材モデルが全てそろっているアセット。建物系、インテリア系のモデルが何種類もあり、全てを把握しきれないぐらい。サンプルシーンもそのままゲームで使えるぐらい素晴らしい。

 

Cubes Package

土や芝生、溶岩などいろんなブロック素材があります。形も完全な立方体と角が丸い立方体の二種類あり、作りたい物によって使い分けることができます。各ステージのコースは、ほぼこのアセットを使って作りました。

 

Tween系

iTween

ボタンやテキストなどのUIのTweenアニメーションに使っています。From系の動作が超便利

 

DoTween

3Dモデル等のTweenアニメーションにはこちらを使用。iTweenより動作が速い。Sequenceを使えばアニメーションを連続して再生できたりして汎用性が高い。有料のプロ版もあります。

 

シェーダー

Curved World

平面の地形を球体のように湾曲させて描画するシェーダー。斜め上からの視点はどうしても奥行きが出ないんですが、このシェーダーで奥行きのある画面を作れます。ゲームのメイン画面には全てこのシェーダーを使用しています。

 

パーティクル・エフェクト

Epic Toon FX

魔法系の綺麗なパーティクル集。種類も豊富で色違いも多数。

 

Fantasic Cartoon FX

カートゥーンっぽいパーティクル集。火山ステージでの吹き上げる竜巻とかはこのアセットを使っています。

 

CameraPlay

  指定したカメラに対してエフェクを掛けるアセット。フラッシュやらノイズやら、ちょっとしたエフェクトを一行で書くことができます。

 

UI

Cartoon UI#2

丸みのあるUI(ボタン、ウィンドウ)が詰まったアセット。色合いも可愛いのでCutieCircuitのコンセプトにピッタリでした。

 

80 Fantasy Skill Icons

各ステータスのアイコンにはこのアセットを使っています。スキル系のアイコンはハードでカッコいいタイプの物が多い中、これは可愛くて重宝しました。

 

音楽

Fun in the Sun

ゲーム音楽は明るいポジティブなものにしたかったのでこれを採用。音楽系のアセットは他にも多数購入したのですが、このアセットが一番採用率が高かった。

 

Game Music Pack - SUITE

音楽系アセットでは定番中の定番。日本人作家さんなので日本人の趣向に合う音楽が多数。ボーカロイドの楽曲もあり、CutieCircuitでも使わせてもらっています。

 

他にもファイル系のアセットとかアニメーション系のアセットとか色々使用していますが、今回はこの辺で。

 

進捗報告

ほぼ毎週のように、もうすぐ出来る!、もうすぐリリース!、とか言っている気がしますが、本当にあとちょっとで完成です(そんな気がする)
MacBookも購入済みなのでiOS版も合わせてリリースできると思います(そんな気がする)。

 

ただ、MacBook全然使ってないとか、開発者登録を未だしてないとか、そもそもWindowsで開発しているUnityプロジェクトをMacBookに移してちゃんと動くんだっけ?とか不安要素も含みつつの作業なので、どこかで躓くかもしれません。


なにせこれがiOS版リリースは初めてなので、すんなりリリースまで漕ぎ着けるのか分かりません、調べるといろいろ手順が多くて作業は単純じゃないようです、そう、可愛いあの子と仲良くなるきっかけつかみたい、だけど、単純じゃないの、きっと・・・これが恋・・・(両手挙げてジャンプ)、みたいな感じで。

 

取り合えず頑張ります。

 

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。