質問: android(Java)初学者です。 androidで3D物理演算を利用したゲームアプリを作りたいと思ってるのですが、 開発プラットフォーム選びに悩んでいます。 できるだけ簡単に作りたいと思っているのですが、 端末の傾き検知やBluetooth通信といったOS依存?の機能も利用したいです。 どんな開発プラットフォームがおすすめでしょうか? androidの3D物理演算の実装方法について調べたところ、主に * Unity * Bullet + OpenCV の2つの方法があるようでした。 Unityの方が開発しやすいようですが、上記のOS依存の機能が容易に利用できるのか不安に思っています。 当方のandroidの習熟レベルとしては、入門書にあるような内容は一通り理解し、大体その範囲なら自由にアプリを作れる程度です。 また、UnityやOpenCVについては全くの素人です(ただしC#やPythonの知識は少しあります)。 よろしくお願いします。
回答: Unityベースで一通りできそうな感触がつかめたので報告させていただきます。(ほとんど人様の知恵を借りて達成できたものですが) 特に 2. Bluetooth の内容は他のネイティブ機能にも応用できるかと思います、というより私がBluetoothに応用させていただきました。 私自身初心者ですので、もっといい方法があったり間違ったことを言ってるかもしれません。その際はご指摘いただけると幸いです。 環境・バージョン等は、 * OS: Mac OS X EI Caption ver.10.11.6 * Unity: 5.4.1f1 Personal * Android Studio: 2.2 * テスト用Android実機: 4.4.2等 です。 1. 傾き検知 これはUnityデフォルトの Input.acceleration プロパティーで問題なくいけました。 https://docs.unity3d.com/ja/current/Manual/MobileInput.html 2. Bluetooth Bluetoothに関してはUnity Asset Storeでプラグインを買ってみたりしたのですが、どうも思い通り動かず、結局自分でプラグインを作ることにしました。 参考にさせていただいたサイトは、 * http://redfreshet.com/2015/08/18/unity_android_link_1/ * http://qiita.com/YukiMiyatake/items/c8c2ef396fbf4457ba4f です。(管理人の方、本当にありがとうございます!) 基本、1番目のサイトの方法でJavaライブラリ*.jarを作り、UnityのAssets/Plugins/Androidに適当なパーミッションを書いたAndroidManifest.xmlとともに投げ込みます。 そして2番めのサイトに従って、ライブラリ内メソッドにアクセスします。 躓いた点としては、 * Javaライブラリを作るとき、Unityのclasses.jarの場所が /Applications/Unity/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar に変わっていたこと * AndroidStudioでAPIレベルが足りない(Call requires API level 5 ...)と怒られるが、無視してかまわないこと ぐらいでしょうか。上記サイトが本当に分かりやすかったので、初心者の私でもなんとかなりました!