主なコンテンツ

〜主なコンテンツ〜

1. Unityで製作したゲームと製作Tips
  1. 三月精チャレンジ(東方Project二次創作)
    1. 作り方
  2. 英語学習2D(オリジナルスマホアプリ)
2. UE4
3. ゲームアプリ見学
4. Bitbucket & SourceTreeでの一連の流れ
  1. 前半
  2. 後半
5. Tips
  1. UnityのTips
  5. SQL文のTips
  6. Final IK
  7. GearVR+Unity

2016年3月5日土曜日

Unityでのビルド時にTizenを選択していたらしく地獄を見た件

WebGLでビルドするためにSwichPratformでWebGLに切り替えた。WebGLの横にUnityのロゴマークがついていたから、この状態でBuildボタンを押せばよいのだと思った。このとき、その上にあるTizenを選んだ状態でbuildを押したら、Tizenのビルドが始まった(汗。


TizenのSDKを要求されるが、キャンセルできない。このときはWebGLのビルドをしている物だと思い込んでいたため、仕方なくSDKをDLする方法を探した。
Tizenに関するUnityのマニュアルはまだ日本語化されていない。ひとまずこのマニュアルに従ってみた。しかし、インストーラーを起動させようとすると次のようなエラーが出て進めない。
↓ 
泣く泣くJDKをインストールしに行く。移動先でもライセンスの受け入れなどが面倒だった。(参考にさせてもらったサイト様)

その後、Tizenのインストーラーはインストールできたが、SDKは含まれていなかった。サーバーからインストールする方式のようだが、Unityが求めているroot Folderの情報がネットで見つからなかったので、Macを強制終了する道を選ぶ。

TizenSDKのuninstallerは同梱されていたため、公式の手順に従えばアンインストールは容易だった。問題はJDK。Macの場合、ターミナルからの削除を要求されるが、このとき「削除コマンドは、rootとしてまたはsudoツールを使用して実行する必要があります」とのこと(参考)。これが何だか分からず、パスワードが入力できず削除できなかった。

よく分からないが、管理者権限が必要なコマンドにsudoをつける必要があるとのこと。よくよく見てみると、コピペしろというコマンドに既にsudoがある。
 sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
 sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefpane
つまり、パスワードが弾かれているのは別な原因っぽい。実は入力できていた可能性を疑ってみたが、java -versionしてみると先ほどインストールしたヴァージョンのままだった。お手上げ。

2016年3月2日水曜日

UQmobileのSIMをAtermMR04LNで使ってみた

通信費を抑える上で、表題の組み合わせが希望に合っていたため実践した。主要な通話の受信着信はドコモの回線を使用し、それ以外はUQmobileの回線で通信するスタイル。

■注意点(!)

表題にある通り、UQmobileとAtermMR04LNの組み合わせだが、両メーカー共にこの組み合わせでの動作確認をしていない。ユーザーが率先して動作確認をした形となっている。結論から言えば問題なく動くのだが、保証の対象外となるので注意。また、UQmobileのAPNを手動で設定する必要がある(参考:価格.comのクチコミ掲示板)。ちなみに設定は簡単。

■AtermMR04LNについて

件のSIMフリーモバイルルーター。この一つ前のもの(MR03)はauの回線に対応していないのでUQmobileのSIMは使えない(参考)。購入はAmazonなどで。2016.3.2現在の価格はクレードル付で2.2万、クレードルなしで1.9万ほど。格安スマホや普通の無線LANルーターを買うのと大差はないと思う。


クレードルと固定回線を繋ぐとSIMカードの有無に関係なく、無線LANとして使える。
やり方としては、
  1. 端末を充電し、電源を入れるところまで進める
  2. SIMが無い場合は「設定ウィザードを開始」はしない
  3. 「メンテナンスバージョンアップ許諾」に同意
  4. ホーム画面の「設定」>「クレードル設定」にてブリッジモードを選択
  5. この状態で端末を、固定回線と接続したクレードルに差し込むと、無線LANとして使用できる(*SSIDや暗号化キーの確認方法など、細かい内容は商品の説明書に記載されているのでそちらを参照ください)
なお、設定にはユーザーマニュアル(WEB版)を参照する箇所が幾つかあって面倒だった。最初の作業は、WEBが見れる環境で行うこと推奨。

■UQ mobileについて

店舗でもオンラインでも、基本的に商品は発送されてくる。概ね3営業日で送られてくる模様。ただし、即時開通店舗(一覧)というものがあり、こちらを利用すると30分くらいで商品を受け取ることができる。

ちなみに本人確認の際、免許書等の住所と現住所が異なる場合、住民票などの補助書類が必要になるので注意(参考)。

色々なSIMを選べるが、AtermMR04LNが対応しているのはmicroSIMのみ。

ちなみに商品はこんな感じ。右がUQmobileのmicroSIM。左がAtermMR04LNの裏蓋を外した状態。


■APNの設定

基本的にAtermMR04LNの説明書に従えばOK。最終的に「設定」>「APN設定」>「(UQmobileのSIMを挿入したスロット)」>「新規追加」、で下図の情報を登録する。ちなみに入力方式はガラケーと同じ。


入力後すぐに使用可能になる。実際試してみた感想として回線は良好。

■導入の経緯

2016年3月現在、ドコモのパケット通信は3GB制限で5000円と非常に高い。これに対し、MVNO「Mobile Virtual Network Operator(仮想移動体通信事業者)」は同じ3GB制限で900円前後であり、後者に変えることで費用を1/5に抑えることができる。

MVNOが提供しているSIMを利用できるSIMフリーのモバイルルーターがあり、これを使うと外出時はLTE回線利用するモバイルルーター、帰宅時はクレードルに挿して固定回線を利用する無線LAN、という使い方ができる。特に、信頼と実績のAterm (エーターム)がSIMフリーのモバイルルーターに参入しており評価が高い。

私は無線LANを買い直す必要があったので、帰国を機にモバイルでの通信をMVNOに変えてみることにした。(ドコモとの契約は電話のみ)

なお、MVNOの参入企業は色々あるが、私の場合、移動時にGoogleMapとメールチェック、WEB検索ができれば十分なので、「3GB制限での通信速度が早い&安定しており、余った分を繰り越しできる」UQmobileにした(参考にさせていただいたサイト様)。出国前にWimaxのお試しレンタルでお世話になったので、UQに対して良いイメージがあったのも決め手だった。

開発覚書【三月精チャレンジ】

  • Rigidbodyの空気抵抗を無限にする際、PlayerのDragを無限にすると何故か霊夢が素通りしたり転んだりする。諦めてPlayerのDragだけ0にした
  • AssetStoreからDLした「Tiny Mobile Cartoon UI」にてスプライトの分割に詰まった。分割したいスプライトのTextureTypeをSpriteに変更し、SpriteModeをMultipleに変更。この状態でSpriteEditorを起動し、左上のSliceを立ち上げる。これで自動スライスが可能。
  • 弾丸にはAudioSourceを持たせてPlayOnAwake。弾丸に音を持たせるとぶつかって消えたときに音も消える。発射側に音を持たせた。パンチはPlayOnAwakeをオフにして、アニメーションイベントで鳴らす。
  • モデルを配布しているが連絡先がないケースがある。ニコニコ動画のアカウントがあれば、フレンド申請からメッセージを送れる模様(参考)
  • C#のオーバーライド時に、修飾子のつけ忘れ、base.関数の記述忘れが多かった
  • 次のミスをやってちょっと嵌った(参照を得たのがローカル変数)
private GameObject player

void Start (){
GameObject player = GameObject.FindWithTag("Player");
}

void Update(){
Debug.Log(player); -> null
}

      2016年2月29日月曜日

      Mac及びiPhoneがiCloudと同期しなくなった時の対処法


      海外でiCloudの容量を使い切るくらい撮影をしたら、Mac及びiPhoneとiCloudの紐付けが切れた。(もしくは海外のwifiが不安定で同期が上手くいかなかったのかも)

      端末側のiCloudを一度サインアウトし、再度サインインしなおすことで解決した。その時の写真や手順の記録を残していないので、Google検索の際に症状に「サインアウト」の単語を添えて検索してもらえれば詳しい手順が見つかると思う。

      • Mac
        • iCloud上にあるもので必要なものをバックアップしておく
        • システム環境設定のiCloudで「サインアウト」
        • WEBのiCloudも一応「サインアウト」
        • 再び両者を「サインイン」(反映には時間がかかる模様)
      • iPhone
        • 「設定」から「iCloud」を選択
        • 「iCloud」下部の「サインアウト」
        • 再び「サインイン」(反映には時間がかかる模様)
        • 「Find iPhone (iPhoneを探す)」が無効になったので、アプリを起動し有効にしなおす
      • その他
        • 写真の共有について
          1. MacとiPhoneの再サインイン後に、WEBのiCloudにアクセス
          2. iCloudの写真を立ち上げると「準備中」というロード画面になる
          3. 準備が終わると、iCloudにiPhoneの写真がアップロードされている
          4. この後は、Macの「写真」アプリケーションでも写真共有が可能になっている(本来の状態に戻っている)
        • 同様にメモなど同期のとれていないものは、WEBのiCloudで立ち上げると再び同期するようになる

      2016年2月21日日曜日

      Quaternionの基礎理解

      • 結論:角度の概念が直感的でないため、ベクトルに回転を与える場合はQuaternionかTransformの関数を使ったほうが良い
      • Quaternionは3次元空間上のある点(x,y,z)を、任意軸、任意角で回転させるもの。(参考)
      • Unityのtransform.rotationの(x,y,z) は任意軸のパラメータで合っている模様
        • (1, 0, 0)に対し、w=0のとき角度は0°
        • (1, 0, 0)に対し、w=0のとき角度は90°(*このときインスペクター上でのRotationのYとZが180から0に切り替わる)
        • (1, 0, 0)に対し、w=無限大のとき角度は180°に近似
        • 任意軸を正規化しないことで柔軟に角度が変えられる
        • 実際、UpdateでDebug.Log(transform.rotation)をしてみると、xz平面で水平に回転させてもw以外に任意軸のy成分も変動していることが確認できる。(下の画像はカメラのtransform.rotationを確認したもの)
      • Quaternion同士の掛け算で、角度を加算できる
      • transform.rotation *= Quaternion.AngleAxis(angle, Vector3.up);とした場合、transform.upを軸にangle度回転する(掛けられる側=回転する側の空間に置き換えて、回転が行われる) 打ち消し線をした内容に思われるが、ローカル空間に置き換えたとき真上を向くベクトルを作っても水平な回転にならなかった。仕様不明
      • 任意軸に任意角を回す場合、transform.Rotateを使うと良い。特にワールド空間で回転をさせたい場合に有用。
      【追記2017.05.21】
      回転行列とクォータニオンの違い(参考)

        2016年2月18日木曜日

        マイナーだけど面白い変数・関数の紹介 in Unity


          • 座標Aから座標Bに向かい徐々に減速するベクトルを返す
          • スプリングとダンパーを組み合わせたような機能で目的地を通り過ぎることはない
          • カメラをオブジェクトに追従させるときなどに使う
          • Vector2, Mathfにも同様の関数がある

          • Tanθ=y/xとなる角度θを求める(Atan (y/x) = θ を返す)
          • 末尾の2 は引数を二つとるという意味
          • Input.GetAxisの垂直方向と水平方向のなす角度を求めるときに使える
          • y=1, x=0のとき、y/xは無限大だが、この関数は90°=π/2≒1.57を返してくれる

          • Tanθ = f  となる角度を求める(Atan f = θ を返す)

          • transformから見た指定の方向ベクトルをワールド空間に変換する

          • transformから見た指定の座標をワールド空間に変換する

        2016年2月14日日曜日

        ブログの収益化について

        結論から言うと厳しそうかなーといった感じ。売り込むことを目的としたブログにすればいけるのかもしれないけど、書きたいこと書いて、良かったと思う商品やサービスを紹介するときに広告を貼る程度にしたいなぁ。
        • 参考書の紹介(参考)
        • Google Adsense関連と書籍の紹介(参考)
          • A8ネットとバリューコマースの違い?(参考)
            • A8ネットはダイレクトメールが非常に多く来るので退会
            • バリューコマースは落ち着いていてサポートの対応も早いのだけど、提携待ちしていたUQmobileの承認が得られなかった。結局提携に行きついていない。
          • バリューコマースでのUQmobileの提携について
            • 載せようとしたのはこの記事。そういえば、どの記事に載せる予定かは申し込み時に書く欄がなかった気がする。
            • 仮にこの記事は見ていたとして、他のサービスの問題点と比較していることや、一般的でない使い方をしているのが問題か?前者は直すとしても、後者は自分の紹介したい内容に抵触する。いずれにしても、見送られた理由が分からないことには手が出せない。
            • 回答が来るまで1ヶ月ほどかかった。ちなみに回答は登録しているメールには来なかった。「広告プログラム管理>提携>メッセージ」に回答があった。