主なコンテンツ

〜主なコンテンツ〜

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年9月13日火曜日

JsonUtilityについて

JsonUtility

高速だが高機能ではない。
Unityのシリアライザが対応していないものはシリアライズできない。
  • 配列
  • List<object>
  • Dictionary
  • UnityEngine.Object
    • ただし、ScriptableObjectを含む一部オブジェクトは可能

EditorJsonUtility

UnityEngine.Object を JSON に変換するのに必要。
  • Editor専用
  • 配列には対応しておらず、文字列を連結して使う工夫が必要

ISerializationCallbackReceiver



http://anchan828.github.io/editor-manual/web/data_storage.html

http://hatena.phalusamil.com/entry/2015/12/10/201509

2016年9月8日木曜日

C++テスト環境をcocos2dxで作る(Windows)

Windowsアプリのみを試したい場合、こちらのサイトに従って進めていく感じになる。
WindowsでVisualStudioを試した際の記事はこちら

  1. cocos2dxをDLし、任意の場所に解凍
  2. pythonをインストール
    1. 「python --version」は綴りが間違ったのか実行できなかったが、問題なかった
  3. cocos2dxのフォルダ内にあるsetup.pyをコマンドラインから実行
    1. Androidの設定はスキップできる
  4. コマンドラインにてcocosコマンドを用いて新規プロジェクトを作成
    1. 新規作成はコマンドライン(ターミナル)から
    2. 初回時のみ改善のためのデータ提供の同意(たぶん)を求められる



  1. proj.win32\MyGame.slnをダブルクリックするとVisual Studioがあれば、それが起動する
    1. ビルドを実行し、次にデバッグを開始する。これでアプリケーションが実行され、Hello Worldが表示される。
  2. Hello Worldのソースについて(参考
    1. AppDelegateクラスの理解は後回しでよい
    2. class HelloWorld : public cocos2d::Layerは、 名前空間内のcocos2dの中のLayerをHelloWorldに継承させるということ。C++の表現なので要学習。publicが付いているのは公開派生(参考)。
  3. その他
    1. 基本図形の描画の仕方(参考
    2. updateの作り方(参考1参考2
    3. C++11の乱数の生成(参考1参考2
    4. FPSの表示を消す(参考
    5. #ifndefとは(参考
    6. USING_NS_CCはcocos2dの名前空間を呼び出している。cocos2d::Vec2とかを省略して書くときに使う。
    7. C++でべき乗は ^ の記号が使えない。同じ数を複数回掛けるか、POW関数を使う。ただし後者の戻り値はdouble。
    8. switchで「制御の転送は次の初期化をバイパスします」というエラーが出る。→case内をスコープする({}で囲む)と良い
  4. exeとして出力(参考


    その他参考
    https://www.honeycomb-lab.co.jp/lab/blog/?p=226
    http://www.fujimi-labo.com/2016/03/29/gamedev01/
    http://studio.cretia.net/blog/185
    http://oimodx.hateblo.jp/entry/2014/06/25/215427

    2016年9月2日金曜日

    Unityでの爆発シミュレーション

    http://d.hatena.ne.jp/tueda_wolf/touch/20120111/p2

    http://tsubakit1.hateblo.jp/entry/2015/10/18/002452

    http://tsubakit1.hateblo.jp/entry/20140713/1405183951

    http://tsubakit1.hateblo.jp/entry/2014/10/02/034911

    その他、後ほどまとめたいもの

    • https://speakerdeck.com/unitydojo/unitydao-chang-shaderforge101



    2016年8月27日土曜日

    UnrealEngine4動作環境

    動作環境

    wikiに必要スペックなどTipsが載っている。ドスパラさんのを買うのが良さそうか。

    フォーラム


    • Facebookの助け合い所は管理者が見ていないようで承認が下りない
    • 英語ではあるが、UE4Anserhubが情報収集や質問の場として一番良さそう

    2016年8月25日木曜日

    Unreal Engine 4 の学習 (DAY2)



    お題目

    • Third Personテンプレート
      • ヘルスの処理をBPで作成
        • イベントAnyDamageを配置
        • 変数Healthを配置
          • Cntr+D&Dでゲットで配置(MacはCommand)
          • Alt+D&Dでセットで配置
      • ヘルスバーを表示
        • 新規追加でフォルダを追加
        • フォルダ内で右クリック>ユーザーインターフェイス>ウィジェットブループリントを作成
        • パレット>共通>progress Barを配置
        • 詳細>Progress>バインド>バインディングを作成
          • 右上のデザイナー>グラフのグラフ側がオレンジになる

          • イベントグラフタブを開く
            • 右クリックでGetPlayerCharacterを配置
            • 右クリックでcastと検索し、ThirdPersonCharacterへキャストを選ぶ
            • キャストの出力で変数に昇格する
          • 次にGetPercentタブを開く
            • 先ほど昇格した変数を配置
            • 0:39:40 ~ 0:42:28までクラッシュ対応
          • フォルダのThirdPersonBP>Blueprint>ThirdPersonGameModeをダブルクリック
            • ブループリントエディタを開く

            • イベントBeginPlayを配置
            • ウィジェットを作成(UIを作るためのノード)
            • classのドロップダウンリストから先ほど作ったPlayerUIを選択(新規フォルダに作成したウィジェットブループリント)
            • Add to ViewPortを配置して完成
      • 敵ユニットの作成
        • コンテンツブラウザのThirdPersonBP>Blueprintに新規BPクラスをアクターで作成
        • ダブルクリックでBPエディタを開く
        • コンポーネントを追加>スタティクメッシュコンポーネント
        • 詳細のstatic meshにてShape_Cylinderを選択
        • Construction ScriptでSetRelativeLocationを配置
          • Construction Scriptはインスタンス生成時に実行される処理。
        • 座標のピンを右クリックで分割を選択

        • タワーの頭をプレイヤーに追従させる(1:12:00)
          • イベントグラフタブ
        • 弾を作成する
          • 新規BPをアクタークラスで作成(これが弾となる)
          • コンポーネント追加でSphereコリジョンを追加
            • コリジョンプリセットをBlockALLに変更
          • コンポーネント追加でCommonから球を追加
            • こちらはただの外観なので、コリジョンプリセットはNoCollisionに変更
          • Projectile Movementを追加
          • レベルに配置して確認
            • この辺りからエラーが出るようになるが無視して進める(動画でもエラーが表示されている)
            • バウンドしない
              • コリジョンをDefoultSceneRootにD&Dする(13:33:00)
        • 弾を頭から発射する
          • Arrowコンポーネントを追加し、「頭」の子にする
          • イベントグラフにカスタムイベントを配置
          • 「クラスからアクターをスポーンします」を配置
          • 変数内にあるコンポーネントの、先ほど作成したArrowをgetで配置
          • イベントBeginPlayの接続先をSet Timer by Function Nameにする。Function Nameは直接入力
        • 動く敵を作る
          • 新規BPをキャラクターで作成
          • ブレークポイントの作成
            • ブレーク後にゲームを止めるには、BPエディタ内上部にある「停止」ボタンを押す。ただ、動作が不安定でボタンが反応しない時がある。イベントグラフ内を右クリックをすると治る時があった。

          • Nav Mesh BoundsボリュームはレベルのビューポートでPキーを押すと、正常にビルドされた範囲が緑色で表示される(参考)。
        • マテリアルを作る
          • 3キーを押しながら左クリックでVector3をショートカットで配置できる
          • ノードへの色の反映は10秒ほど時間かかる
        • 連続爆発
          • Alt+クリックでリンクの解除
          • ディレイノードを追加
          • DoOnceのリセットに接続する
        • ゲームオーバーを作る
          • GameOverUIにテキストとボタンを配置
            • イベントグラフにOnClickedを配置し、リスタートするようにする
            • Restart Gameノードは「状況に合わせた表示」のチェックを外さないと出てこない
          • ThirdPersonGameMode
            • カスタムイベントを配置し、詳細にてインプットにDeadというboolean変数を用意する
            • GameOverUIウィジェットをAdd to Viewportするようにする
          • ThirdPersonCharacterカスタムイベントを配置
            • GetGameModeを配置し、そこからドラッグし、ThirdPersonCharacterにキャストする
            • 先ほど作成したGameoverイベントを呼び出す。この時Deadにチェックを入れる。
            • Set Show Mouse Cursorに接続し、チェックを入れる
            • Set Input Mode UI onlyに接続する
          • ゴールの作成
            • 新規BPをアクターで作成
            • Text Renderはまだ日本語対応されていない
              • Horizontal Alignment(水平整列)を中央にする
          • GameOverUIに処理を追加
            • 右上のグラフを選択

            • マウス操作のみにした後に、ThirdPersonGameModeへキャストし、結果を変数として出力するようにする
            • 一旦、コンパイルしてからデザイナーに戻り、テキストのConentにてバインドを選択すると先ほど作成した結果の変数が表示され、そこからさらにThirdPersonGameModeで作成したGameOverMessegeがプロパティとして選択できるようになっているので選択する
      • プレイヤーから弾を発射する
        • 編集>インプット>BindingsにてShootを作成し、左クリックを対応ボタンとする。これによりShootというアクションイベントを呼び出せるようになる。
        • 玉がThirdPersonCharacter以外に当たったらDestroyするようにするが、この処理を加えると自分と接触しているのか弾が出なくなる。時間がないのでこれにて講義は終了となる