Programming Serendipity

プログラミングを中心に種々雑多に書き留めます

Unity5 メモ29

ショートカット Ctrl+Shift+A = Add Component Ctrl + 数字キー = 対応するウィンドウにフォーカスする。 特にCtrl + 3(インスペクター)とCtrl + 4(ヒエラルキー)が利用頻度が高い。 スライスしたスプライトを動的に変更 testという画像をスライスして生成さ…

Unity5 メモ28

Panelのクラス PanelはText, Button, Sliderなどと違ってそれ自身のクラスを持っていないため、 スクリプトからアクセスするときはRectTransformで受け取る。 スプライト画像の比率を保持 例えばPanelの子要素にImageを入れてRectTransformのアンカーをスト…

Unity5 メモ27

スマートフォン向けゲームのUIのまとめ http://gameui.matme.info/blog/ 車がハングしたときのレスキュー処理 ①タイヤがひとつも接地していないことと②車がほとんど動いていないことの2つの条件を満たしたときに車をスタート地点にリスポーンさせる。 [Seria…

9/13に大宮でC言語の勉強会を開催します!

初心者向けC言語勉強会 : ATNDatnd.org 私の主催でC言語勉強会を開催します!相談役みたいな形でいますので、なんでも聞きに来てください! その他、ゲーム開発の話なんかも聞かれれば答えたり…。 興味があればどうぞ!

Unity5 メモ26

Start()などの戻り値 MonoBehaviourの関数は戻り値をvoidではなくIEnumeratorにしても動作する。 List<>の内容を文字列化する(C#) List<Object> list; list.ToString(); とすると、"System.Collections.Generic.List 1[System.Single]"なる文字列が取得され、意図と</object>…

Unity5 メモ25

サーバーを立てずにオンラインランキング機能の実装 niftyのクラウドを利用する場合 http://mb.cloud.nifty.com/doc/current/tutorial/tutorial.htmlの左側のカテゴリのプルダウンメニューから「Unity」を選択したのち「SDKダウンロード」からダウンロードし…

Unity5 メモ24

衝突した場所にParticleSystemを生成 public void OnCollisionEnter(Collision coll) { var p = Instantiate(collParticle, coll.contacts[0].point, Quaternion.identity) as ParticleSystem; Destroy(p.gameObject, p.duration); } 下からも水面が見えるよ…

Unity5 メモ23

「オブジェクトを生成して1秒後に削除」を簡潔に記述する Destroy(Instantiate(yourObj).gameObject, 1); ステータスバーを表示 Edit > Project Settings > Player > Resolution and Presentation > StatusBarの Status Bar Hiddenをオフにすることで、画面…

Unity5 メモ22

Unityでのシングルトンの例 public class SingltonExample : MonoBehaciour { public static SingltonExample instance; void Awake() { if(instance != null) { // すでに生成されていれば新しいインスタンスは破棄する Destroy(gameObject); } else { // …

Unity5 メモ21

Staticにできるオブジェクト コライダーがついていてRigidbodyがついていないオブジェクトは動かないオブジェクトと考えられるので、Staticにすることでパフォーマンス向上が見込まれる。 オブジェクトプール Instantiate()はUnityで最も遅い関数のひとつで…

Unity5 メモ20

ミニマップ 上空から撮影するカメラを用意し、AudioListenerなどカメラ以外のコンポーネントを削除、 Clear FlagsをDepthOnlyにしてDepthをメインカメラより大きく、ProjectionをOrthographicにし、 ViewportRectとSizeを適宜調整することでミニマップが表示…

Unity5 メモ19

続いたので続けます FixedUpdate()を使うとコマ落ちするように見える場合 Edit > Project Setting > Time の Fixed TimestepがFixedUpdate()が呼ばれる間隔になっている。 デフォルトでは0.02になっているが、これでは位置の更新が50FPSなので、この値を小さ…

GLSL Sandbox 20選 その2

その2です。

【Unity5】 uGUIで簡単フェードイン・フェードアウト

ネット上にある情報は黒いテクスチャが必要だったり、フェードアウトとシーンの遷移が結びつきすぎていたりと、使いやすいのが見つからなかったので自作しました。 こちらからスクリプトがダウンロードできます。 github.com 使い方: 使い方が大幅に変わり…

Unity5 メモ18

今回でUnityメモシリーズはいったんお休みになるかもしれません。 プレイヤーを追従するカメラ プレイヤーのGameObjectの子オブジェクトにメインカメラを置く。 uGUIのOnClick()に適用可能な関数 戻り値はvoidで、引数を1つまでとることができる。 複数の引…

Unity5 メモ17

スマホでのゲーム画面の回転を縦と上下反転のみに制限する ProjectSettings > Player で、androidかiPhoneを選択して Resolution and presentation から設定できる。 端末を回転させた際の画面の向きを固定する (これを設定すると、ChromeTVと互換性がなく…

Unity5 メモ16

BGMを、イントロは1回のみ再生して特定の部分だけループ(ABループ)させる イントロ部とループ部に分け、ループ部を遅延再生させる unity-musicloop-example イプシロン Vector3.kEpsilon(=1e-5f)があった。 Unityの日本向け公式キャラクター "Unity-chan!"…

Unity5 メモ15

デバッグ専用処理の分岐 大体以下の3種類 if(Application.isEditor) // Unityでゲームを起動した時true if(Debug.isDebugBuild) // build settingでdevelopment buildのときと、Unity側で起動したときtrue #if UNITY_EDITOR // Unity側で起動するときこの部…

Unity5 メモ14

プロパティ(C#) 例えば、値を代入するとき0以下なら0に、255以上なら255にしたい場合、 int a; // フィールド void setA(int value){ // 関数の中で直接チェック if(value < 0){ a = 0; } else if(value > 255){ a = 255; } else{ a = value; } } とするが…

GLSL Sandbox 20選

GLSL Sandboxから、適当に20作品を紹介します。 シェーダープログラマにも、デザイナーにも、または単に綺麗なものを見てインスピレーションを受けたい人にもオススメです。 画像が多いので続きからどうぞ。

Unity5 メモ13

Mathf.Epsilonはイプシロンとしては使えない 0.0001fなどで代用することにした。 ref. Unity の C# で限りなく小さい float 値を使いたい時には float.Epsilon を使ってはダメ 引数つきでシーンを呼び出す 同じGameシーンでもステージが異なるという場合、Ga…

Unity5 メモ12

Unityで使える、商用利用可能で無料の、漢字を含んだ日本語フォント Noto Sans CJK M+ FONTS OUTLINE パズドラ・モンストはLETSのフォント(有料)を使っているとの情報あり ゲーム業界向けLETS Canvas ScalerのMatch Mode 縦にだけスクロールする画面の場合…

Unity5 メモ11

子オブジェクトまで全て再帰的に有効・無効にする Textコンポーネントなどに用意されているenebledフィールドは、これだけをtrue/falseにすると、 このコンポーネントがアタッチされているオブジェクトだけが有効・無効になり、その子オブジェクトなどはその…

Unity5 メモ10

Unityでシェーダーのデバッグ Debugging DirectX 11 shaders with Visual Studio ↑の手順に従った後、フレームをキャプチャしてそのフレームを開くとどのようにシェーダーで処理されたのか分析できる。 Unityのシェーダーの基本 基礎知識がまとめられた記事 …

Unity5 メモ9

スクリプトを新規追加したときの初期状態を変更 Unityをインストールしたフォルダ内の C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates の中を変更する プレハブをネストさせる 現バージョン(Unity5.1.1)ではプレハブの中にプレハブを入れる…

Unity5 メモ8

オブジェクトの親のオブジェクトについたスクリプトの関数を呼ぶ this.gameObject.GetComponentInParent<EnemyController>().EnemyDead(); オブジェクトのサイズを取得 renderer.bounds.size or collider.bounds.size or mesh.bounds.size 敵をインスタンス化したときにプレイ</enemycontroller>…

Unity5 メモ7

特定のスクリプトがアタッチされたGameObjectの配列 例えばEnemy.csがアタッチされた敵用のゲームオブジェクトの配列を作りたいときは、 GameObject[]とすると入れることはできるが、GameObject内在の関数しか呼べない。 Enemy[]とすれば、自動的に「Enemy.c…

Unity5 メモ6

GameobjectにアタッチしないスクリプトのpublicメンバーにCameraなどのコンポーネントを適用する方法 Projectビューからスクリプトを選択し、出てきたインスペクターに対してコンポーネントを入れることで適用できる。 uGUIで「画面の右から3/4の位置に固定…

Unity5 メモ5

動くキャラクターの頭上に体力ゲージを表示する 例えばSliderを使って体力ゲージを表現する場合、using宣言とメンバを追加し、以下のようにするとオブジェクトに追従するUIが実現できる using UnityEngine.UI; // ... [SerializeField] Slider lifebar; // .…

Unreal Engine 4のソースコードを取得するときの注意点

基本的にはエンジンのソースコード取得とビルド手順のまとめ UE4.6改訂の手順どおりで問題ないが、1点、githubアカウントをunreal engineアカウントにひもづけた後、EpicTeamAdminから招待のメールが来ているのでそれに応じる必要がある。 このことが上記記…

Unity5 メモ4

モンストで敵に当たったときのキャラの跳ね返り処理 図で言うと、Aから進んでOの地点で接触した場合、Cの方向に進むのが正しい。 現状進もうとしているベクトルOA'を回転させてベクトルOCにすればいいのだが、直接∠A'OCを求めることは難しいため、まずは∠A'O…

Unity5 メモ3

スプライト 用意した画像をUnityで使うには、まずその画像を入れて、 その画像を選択した時に出るImport SettingsでTextureTypeをSprite(2D and UI)にする。 通常やるような1枚の画像に複数のパーツを入れている場合は、SpriteModeをMultipleにして、SpriteE…

Unity5 メモ2

コンポーネントのアタッチし忘れ防止 [RequireComponent(typeof(Rigidbody2D))] をクラス宣言の上に書くと、このスクリプトを取り付けたgameobjectに自動的にRigidbody2Dを付けられ、付け忘れ防止になる typeofの中にスクリプト名を書いて、特定のスクリプト…

Unity5 メモ

雑記。 Skybox Skyboxを設定するには、シーンのメインカメラにSkyboxコンポーネントを追加してスカイボックス用のマテリアルを適用(アセットストアにある設定済みマテリアルを利用すると楽) Skyboxを自作する場合はprojectビュー内で右クリックからcreate>…

webブラウジングを快適にする私的オススメchrome拡張機能13選

ないと生きていけない系 Linkclump マウス右ドラッグで範囲内のリンクを一括で開く。 AdBlock 定番。webブラウズを不快にする目障りな広告はこれで除去。 Personal Blocklist (by Google) 検索結果から特定のサイトを除外して目的の情報を探しやすくする。 …

プログラマでも意外と知らない、よく使うwindowsショートカット

知り合いと色々話したりする中で「このショートカットは共通認識のはず」と思っていたものも、意外とそうでもないものもあったりしたので、ここでまとめてみたいと思います。 (windowsといいながら、有名なアプリケーションで大体共通するショートカットも含…

Visual Studio Onlineでリバートする

Gitを用いてVisual Studio開発をしようを読んで、VSでgitを使い始めた。 が、肝心のリバートが公式の情報がわかりにくく彷徨ったのでメモ。 前の版にロールバックするには、VS側から、チームエクスプローラ→変更→操作→履歴の表示→右クリックして「元に戻す」…

Variadic Templateで多角形と点の当たり判定

三角形と点の当たり判定を応用して、可変長引数テンプレートでN角形と点の当たり判定を書いてみました。 参考:ゲームプログラミング技術集 struct Vec2 { Vec2(float a, float b) : x(a), y(b) {} float x, y; }; Vec2 operator-(const Vec2& a, const Vec2…

"コンパイラで内部エラーが発生しました"というエラーメッセージ(MSVC2013)

コンパイラで内部エラーが発生しました。 簡易リビルド時のエラ-です、通常のビルドに戻します。 というエラーメッセージ。単純化しろとか.idbファイルを消せとか情報があるが、 私のケースでは、クラスの変数の宣言場所で配列を空ブレースで初期化していた…

2つのbool値によってreturn-valueが変わる場合

次のようなコードがあったとする。 bool ev1 = true; bool ev2 = false; if (ev1){ if (ev2) return true; else return false; } else{ if (ev2) return false; else return true; } これは、次のように書ける。 return !(ev1 ^ ev2);

マルチスレッドでクラスのメンバ関数を実行する場合(C++11 std::thread)

C++

#include <thread> class C{ public: // blah blah blah void run() { std::thread thd(&C::impl, 10); thd.join(); } void impl(int n) { //do something } }; int main() { C c; c.run(); return 0; } 上記のコードをコンパイルすると、MSVC12EEでは 「1 引数を取</thread>…

はじめました

プログラミングについて気付いたことなどを書いてみたいと思います。 未熟者ゆえに間違い等有るかも知れないので、ご了承ください。 (ご指摘は歓迎いたします。)