主なコンテンツ

〜主なコンテンツ〜

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年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ヶ月ほどかかった。ちなみに回答は登録しているメールには来なかった。「広告プログラム管理>提携>メッセージ」に回答があった。

        Bitbucket & SourceTreeでの一連の流れ【後半】(参加者視点:masterブランチ作成後)

        *二部構成にしました。チーム作成〜masterブランチ作成は前半です。

        ■チームに参加する

        1. 管理者にアカウントのユーザー名かメールアドレスを伝える
        • このときユーザー名とは、ログイン後の画面にて「プロファイルの表示」をした際に左上に表示される名前のうち、カッコ内に記載された名前であることに注意!
        • 管理者がメンバーを追加する等のやり方は前半を参照ください


        ■SourceTreeにクローンする

        1.  (ローカル)リポジトリを用意(自身のPC内に空フォルダを作る)

        2. WEBのBitBucketにログインし、チームの共有(リモート)リポジトリ画面を開く

        3. リポジトリ画面のアクションにある「クローン」から「SouceTreeにクローン」
        • 「概要」にあるクローンアイコンを押しても同様のポップアップが出る
        • 「概要」にあるURLをコピーしSourceTree上でクローンしても良い


        4. 先ほど用意した空フォルダを指定して「クローン」

         Source Treeのローカルに追加される

        *クローン時に何故かログインを求められる現象を確認。正しいユーザー名とパスワードを入力しても弾かれる。WEBでログアウト→ログインし直して上手くいった。同期がとれていないことがあるみたいなので、似たような現象に遭遇したら再ログインや再起動を試してみること。


        ■リモートリポジトリに変更を加える(ブランチを追加)

        1. WEBのリモートリポジトリ画面にある「ブランチの作成」
        • ブランチ名をつけてCreate
        • /でフォルダのように階層構造を作れる
        • 命名規則はこちら
        • 管理者の承認が無くても作れる模様


        2. これにより、WEBの「ブランチ」画面のフィルターを「マージ済み」に変更すると、先ほどのブランチが追加されていることが確認できる

         また、SourceTreeのリモートにもブランチが追加されていることが確認できる

        3. SourceTreeのリモートから、ローカルに作成したいブランチをダブルクリック(今回は先ほど追加したブランチを選択)
        • ウィンドウがポップアップするので「OK」を選択
        • 「新規ブランチをチェックアウト」
        • 「ローカルブランチにリモートブランチを追従させる」

        これにより、(ローカル)ブランチに先ほどのブランチが追加される
        • 太字が現在のローカルブランチ

        4. ブランチに変更を加える(今回は分かりやすくReadme.txtを追加した)
        5. 変更が生じると、SourceTreeにUncommitted changesが発生するので、これを選択

        6. Uncommitted changesを選択すると、変更のあったファイルが「作業ツリーのファイル」に表示されるので、コミットしたいファイルにチェックを入れる

        7. チェックしたファイルが「Indexにステージしたファイル」に追加されるので、この状態でコミット→プッシュする(今回は「コミットを直ちにプッシュする」にチェックを入れた)
        • これにより、WEBのコミット、ブランチにも反映される

        8. WEBのリポジトリ画面から「プルリクエストを作成」
        • リクエスト元はコミットしたブランチを選択(コミット内容は下部に表示される)
        • リクエスト先は合流させたいブランチ(今回はmasterを選択)
        • メッセージを添えて「プルリクエストを作成」

        9. 変更をマージする場合は、「プルリクエスト」から「マージ」を選択
        • 管理者権限のないメンバーでもmasterにマージできてしまう(詳細不明) masterへのプッシュを管理者に限定することで解決した前半の「ブランチの管理」参照)

        ■ブランチの削除

        1. リポジトリ画面のNAVIGATIONにある「ブランチ」から削除したいブランチを開き、右上の「…」を押して「ブランチの削除」を選択。

         *ブランチの一覧にある「…」からでは何故か削除できないので注意

        2. SourceTree側のブランチを削除する。まずはフェッチアイコンを押し、「リモートで削除された追跡ブランチは取り除く」にチェックを入れてOKを押す。これによりSourceTreeのリモートからWEB上で削除されたブランチが消える。


        3. 削除するローカルブランチを右クリック→「(ブランチ名)を削除」
        • 削除するローカルブランチが選択されている(太文字の)場合はメニューに削除が出てこないので注意
        • 削除するブランチしかローカルにない場合は、リモートからmasterブランチなどを持ってきて、そちらに切り替えておく必要がある



        ■リモートブランチで起きた変更を自分のローカルブランチに反映させる(参考

        *ここでは、masterの変更をStageというローカルブランチに取り込むという例で説明する

        1. masterのローカルブランチを「フェッチ→プル」で最新の状態にする

        2. Stageをダブルクリックし、カレントブランチにする

        3. masterを右クリックし、「masterを〜/Stageへマージ」を選択


        4. 実行するか確認されるので、OKを選択

        5. これにより、ローカルブランチ(Stage)での作業を維持したまま他のブランチ(master)の変更を取り込むことができる。ただし、競合する場合は修正する必要がある


        ■指定フォルダをコミット対象外にする

        1. SourceTreeの「リポジトリ設定-> 高度な設定のリポジトリ限定無視リスト」にて.gitignoreファイル(テキスト)を作成。(参考:.gitignoreの仕様詳解

        2. それをコミット&プッシュ(&マージ)すれば全体で共有する無視設定になる


        3. ただし、既にGitツリーに登録されているファイルはgitignoreに記載しても無視されない
        • これらのファイルは作業ツリーのウィンドウにて、右クリックで「追跡を停止する」必要がある。これにより、ローカルにファイルは残るがScourceTreeの追跡対象からは除外される(「git rm --cached」相当)
        • フォルダを選んで「追跡を停止する」ことはできない。Shiftキーなどの範囲選択を駆使してファイル単位で追跡を停止する必要がある。フォルダ内のファイルを全て追跡停止にすると、フォルダも作業ツリーに現れなくなる。
        • 追跡を停止したファイルはindexにステージしたファイルに移される。これをコミット&プッシュ(&マージ)することで、追跡停止をリポジトリに反映することができる。


        〜参考先〜
        〜登録済みのため無視できないファイルについての参考〜

        ■その他:チームIDが変わった場合

        1. チームIDが変わるとリモートリポジトリのURLも変わるので、SrouceTree側のURLと対応が取れなくなりエラーが出るようになる

        2. SourceTreeのローカルを開いたウィンドウの右上に設定があるのでこれをクリック

        3. 問題のリモートリポジトリを選択して「編集」

        4. 「URL/パス」を修正してOK
        • 前の画面に戻るので、そこでもOKを押すのを忘れないこと
        • この編集画面でホスティングサービスやユーザー名を確認できる

        2016年2月12日金曜日

        Bitbucket & SourceTreeでの一連の流れ【前半】(管理者視点:チーム作成〜masterブランチ作成)

        *二部構成にしました。ブランチ作成〜マージは後半です。

        ■チームの作成について

        1. 下図のチームから「チームの作成」

        2. 必要な事項を埋めて「作成」

        3. 先ほどの作成したチームが追加されている

        4. チームで使用する(リモート)リポジトリの作成
        • 上部「リポジトリ」からでも、中央の「Create your First Repo」でも「Import a Repository from Github」からでも良い。

        5. 必要事項を埋めて「リポジトリの作成」
        • オーナーにチームを指定する
          • 上部のリポジトリから来た場合は、最初に選ばれているオーナーはユーザー本人(個人)になっている
          • 「Create your First Repo」から来た場合は、最初に選ばれているオーナーはチームになっている
        • 非公開、Gitの指定を行う

        6. リポジトリとプロジェクトの作成完了

        備考1:リポジトリの削除はリポジトリ画面のギアマーク(setting)から

         *備考2:管理者はホームの「チームの管理」が可能

         管理画面の「Delete Team」からチームの解体が可能

         解体しようとすると「アカウントの削除」という警告が出るが、削除されるのはチームのみ

         管理画面の「ユーザーグループ」からメンバーの追加や、管理者権限やメンバーの変更が可能

        *なお、メンバーの追加に使われるユーザー名とは「プロファイルの表示」をした時に左上に表示されるカッコ内の名前であることに注意!

        *ユーザー名の変更は、プロファイル表示画面にある「Bitbucket Setting」からアクセスできるユーザー管理画面の「ユーザー名の変更」から可能



        ■SourceTreeにクローンする

        1.  (ローカル)リポジトリを用意(自身のPC内に空フォルダを作る)

        2. (リモート)リポジトリ画面の「概要」にある「SouceTreeにクローン」をクリック

        3. 先ほど用意した空フォルダを指定して「クローン」

         Source Treeのローカルに追加される

        *クローン時に何故かログインを求められる現象を確認。正しいユーザー名とパスワードを入力しても弾かれる。WEBでログアウト→ログインし直して上手くいった。同期がとれていないことがあるみたいなので、似たような現象に遭遇したら再ログインや再起動を試してみること。

        ■リモートリポジトリにファイルを追加(masterブランチの作成)

        1. ローカルリポジトリにファイルを入れる

        2. SourceTreeの「作業ツリーのファイル」にローカルリポジトリのファイルが表示されるので、コミットするファイルを「Indexにステージしたファイル」に移す
        • 全選択する場合は、下図の赤丸の箇所にチェックする

        3. 上部の「コミット」アイコンを押し、メッセージを添えて「コミット」
        • コミットメッセージ欄をクリックしても、アイコンを押した時と同じ反応をする
        • 最初のコミットをしたことでmasterブランチが作成される参考

        4. 上部の「プッシュ」アイコンを押し、masterブランチにチェックを入れて「OK」

        5. 「Completed successfully」が表示されたら「閉じる」(この処理には時間がかかる)

        6. これにより、WEB上でもソース・コミットが追加されたことを確認できるようになる

        ■ブランチの管理(推奨)

        1. WEBのSettingから「ブランチの管理」を選択し、masterを保護する(参考
        • 「Limit pushes to specific users and groups」のブランチ名にmaster、ユーザーに管理者グループを指定して「追加」。(これにより、masterにプッシュできるユーザーを管理者グループの人に限定した)
        • 同様にmasterブランチの削除とリベースを防ぐ


        後半へ続く