カテゴリー : Unity

Unityでラグドールを実装

こんにちは。

先日新作アプリ、「グルコサミン」をリリースしました。


iOS  Android

今回もUnityを使用して制作しました、ひざを回しながらパワーをためた力士がラグドールで飛んでいくゲームです。

というわけで今回はラグドールの実装を解説したいと思います。

まず普通に骨の入った人体モデルを用意します。
骨の命名規則は特にありません、サイズはUnity上の1が1mになるようにします。
ポーズはT字にします、違うポーズで入れると関節が変な方向に曲がったりしてキモくなります……

次にメニューから GameObject – Create Other – Ragdoll… を選択します。

Create Ragdoll というサブウィンドウが開くので、そこに各関節のノードをドラッグ&ドロップしていきます。
Total Massにkgで体重を入力し、Createボタンを押します。

これだけでラグドール完成です、最初テストした時はあまりの簡単さに感動しました。
ぜひ一度試してみてください、思わず30分くらい物にぶつけたり崖から突き落としたりして遊んでしまいますよ。

新作アプリ「光と闇の剣」をリリースしました。

こんにちは。

先日新作アプリ、「光と闇の剣」をリリースしました。

光と闇の剣アイコン
iOS  Android

今回もUnityを使用して制作しました、普通に通勤しながら1ヶ月でこのレベルのゲームが作れるっていうのは本当にすごいというか、良い時代が来たなって思います。
しかしながら今回もいろいろ落とし穴にハマったので、ここで紹介します。

シーン切り替えでメモリの解放漏れが発生して落ちる

今回1番悩んだのがこれです、とりあえず ゲーム>リザルト>キャラセレ>ゲーム と進めると必ず落ちるということが分かり、ひたすらメモリの解放状況を調べていたのですが全く分かりません、あまりにも原因が分からないため気が動転して深夜にUnityProを衝動買いしてしまいました、プロファイラ欲しさに。
結局原因は「シーン切り替え中にApplication.LoadLevelが呼ばれていた」でした、これはプレイヤーが敵と接触したらリザルト画面に移行するという処理になっていたのですが、シーン移行中もずっとプレイヤーと敵が当たり続けているため、Application.LoadLevelが毎フレーム呼ばれるという悪夢のような状況になっていました。気付けば単純な理由なんだけどハマってる時は全然分からないんだよなぁ。

Android版のアイコンとアプリ名が反映されない

何回アイコン設定してビルドしても、アプリのアイコンがデフォルトのドロイド君になるというこれもまたイヤなバグ。原因はOpenFeintのSDKでした。こちらの記事で実装とバグの回避方法を掲載しています。

背景が表示されない

これはポリゴンが大きすぎるのが原因でした、どうやら全ての頂点が画面外にあるモデルは表示されないようです、ポリゴンを2分割したら表示されました。

こんな感じで紆余曲折ありましたが何とかリリースできました、ギリギリ月1リリースを守れた感じです。最近はマジメに作るのが多いので、10月のアプリは思いっきりネタに走ろうと思います。

UnityでAndroidアプリにOpenFeint実装

こんにちは。

先日UnityでAndroidアプリにOpenFeintを実装したのですが、落とし穴がやたら多い上に参考資料が全部英語なので、ここに日本語でまとめておきます。

■SDKのダウンロードと追加

まず下記のOpenFeintのサイトからSDKをダウンロードします、最近知ったのですがOpenFeintは普通にUnityをサポートしてたみたいです。
http://support.openfeint.com/dev/example-integrating-ofunity-for-android-with-unity/

リンク先の記事の最初にClick here to download this release.と記載されていて、そこからダウンロードできます。ダウンロードしたファイルを解凍するとunitypackageが3つあるので、全部プロジェクトに追加してください。

SDKには AndroidManifest.xml が含まれているため、すでにAndroidManifestを変更するプラグインを導入している場合は上書きされてしまうので注意が必要です。

■実装

追加されたデータのResources/GamePreferences/properties.json.txt を開き、OpenFeintのID情報を書き込みます。

起動直後に開くシーンのMain Cameraに、Component メニューの Scripts に追加されている下記2つのスクリプトを追加します。

  • Game Manager Object Initializer
  • OFInitializer

これで実装は完了です、アプリを実機で起動するとOpenFeintログイン画面が表示されるようになります。一度呼び出されると別シーンに移動してもOpenFeintの関数を使用できます。
ちなみにうちのアプリで使用したのは下記の二つだけです、1行で良いのでログインまで実装できればあとは簡単です。

ダッシュボード表示
OpenFeint.LaunchDashboard();

スコアを送信
OpenFeint.SubmitHighScore(long score, long leaderboardId);

他の機能は下記のサイトに詳しく記載されています。
http://support.openfeint.com/dev/ofunity-for-android-usage-notes/

AndroidManifest改造

やっとできたと思ってアプリを実機にインストールしたところ、なぜかアプリのアイコンと名前が全然違うものになっています。なぜこんな仕様なのか不明ですが、これはAndroidManifestを改造することで解決できます。

Assets/Plugins/Android/AndroidManifest.xml を開き、下記の部分を書き換えます。

<application

<application android:icon=”@drawable/app_icon” android:label=”@string/app_name”
に変えます。

これで再度ビルドすればアイコンと名前が自分で設定したものに変わっているはずです。

以上で全て完了です、おつかれさまでした。