2016年9月14日水曜日
2016年9月13日火曜日
JsonUtilityについて
JsonUtility
高速だが高機能ではない。Unityのシリアライザが対応していないものはシリアライズできない。
- 配列
- List<object>
- Dictionary
- UnityEngine.Object
- ただし、ScriptableObjectを含む一部オブジェクトは可能
ISerializationCallbackReceiver
http://anchan828.github.io/editor-manual/web/data_storage.html
http://hatena.phalusamil.com/entry/2015/12/10/201509
2016年9月9日金曜日
2016年9月8日木曜日
C++テスト環境をcocos2dxで作る(Windows)
Windowsアプリのみを試したい場合、こちらのサイトに従って進めていく感じになる。
WindowsでVisualStudioを試した際の記事はこちら。
その他参考
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
WindowsでVisualStudioを試した際の記事はこちら。
- cocos2dxをDLし、任意の場所に解凍
- pythonをインストール
- 「python --version」は綴りが間違ったのか実行できなかったが、問題なかった
- cocos2dxのフォルダ内にあるsetup.pyをコマンドラインから実行
- Androidの設定はスキップできる
- コマンドラインにてcocosコマンドを用いて新規プロジェクトを作成
- 新規作成はコマンドライン(ターミナル)から
- 初回時のみ改善のためのデータ提供の同意(たぶん)を求められる
- proj.win32\MyGame.slnをダブルクリックするとVisual Studioがあれば、それが起動する
- ビルドを実行し、次にデバッグを開始する。これでアプリケーションが実行され、Hello Worldが表示される。
- Hello Worldのソースについて(参考)
- AppDelegateクラスの理解は後回しでよい
- class HelloWorld : public cocos2d::Layerは、 名前空間内のcocos2dの中のLayerをHelloWorldに継承させるということ。C++の表現なので要学習。publicが付いているのは公開派生(参考)。
- その他
- 基本図形の描画の仕方(参考)
- updateの作り方(参考1、参考2)
- C++11の乱数の生成(参考1、参考2)
- FPSの表示を消す(参考)
- #ifndefとは(参考)
- USING_NS_CCはcocos2dの名前空間を呼び出している。cocos2d::Vec2とかを省略して書くときに使う。
- C++でべき乗は ^ の記号が使えない。同じ数を複数回掛けるか、POW関数を使う。ただし後者の戻り値はdouble。
- switchで「制御の転送は次の初期化をバイパスします」というエラーが出る。→case内をスコープする({}で囲む)と良い
- 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
その他、後ほどまとめたいもの
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するようにするが、この処理を加えると自分と接触しているのか弾が出なくなる。時間がないのでこれにて講義は終了となる。
登録:
投稿 (Atom)






