<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/onju/">
    <title>OnOnProj</title>
    <link>http://w.atwiki.jp/onju/</link>
    <atom:link href="https://w.atwiki.jp/onju/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>OnOnProj</description>

    <dc:language>ja</dc:language>
    <dc:date>2016-04-23T05:47:01+09:00</dc:date>
    <utime>1461358021</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/onju/pages/13.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/onju/pages/21.html">
    <title>プロジェクト</title>
    <link>https://w.atwiki.jp/onju/pages/21.html</link>
    <description>
      #contents

*Unity
**[[初心者向けサンプルACT]]
&amp;ref(SampleGame.jpg,,height=384,title=初心者向けサンプルACT)
-初心者向けのアクションゲームプロジェクト
-スクリプトはC#
-初心者の想定はツクール触れるくらい・・かな
-初心者向けのためプログラミングのテクニックは極力避ける。
--コルーチンや継承なんてもってのほか
--メソッドすら極力作らない（色んな場所にフローが飛ぶのを避ける）
--変数名など日本語で書けるものは日本語で
-他人に教えることは自分の理解にも繋がるしね。
-素材は適当。
-あとはこの縛りで中間を実装する方法を考えるだけ    </description>
    <dc:date>2016-04-23T05:47:01+09:00</dc:date>
    <utime>1461358021</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/20.html">
    <title>メモ/要検証案件</title>
    <link>https://w.atwiki.jp/onju/pages/20.html</link>
    <description>
      メモ

-Inputのタイミングおよびシングルトンにするかどうか
-変数（イベント進行フラグ等）ってEntityなのかComponentなのかその他なのか
-DirectX等を切り替えられるようにしておきたい。
--真面目にDIする？
--依存部分をグローバルでstaticなwrapperにまとめてそれにアクセスするくらいでもいいかもね。設計的にksだけど動けば正義ってことで。
--優先度は低くていいや    </description>
    <dc:date>2016-04-22T14:26:32+09:00</dc:date>
    <utime>1461302792</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/19.html">
    <title>Unity/技術</title>
    <link>https://w.atwiki.jp/onju/pages/19.html</link>
    <description>
      #contents

*エディタ上でトリガーを表示する
罠のためのトリガー等、ゲーム中では目に見えないものをエディタ上で表示したいことはよくある。
2Dゲーム用だとこんな感じかな。
 void OnDrawGizmos()
 {
   var trigger = GetComponent&lt;BoxCollider2D&gt;();
   Gizmos.DrawCube(
     transform.position,
     new Vector3(
       trigger.size.x * transform.localScale.x,
       trigger.size.y * transform.localScale.y,
       0
     )
   );
 }
邪魔な時はトリガーレイヤー非表示なんかで対応すればいいから、単純にこれくらいでいい・・・かな？

**ゲーム実行時（テスト時など）にもトリガーを表示する
-案１：スプライトを貼り付けて、不要な場合はStartで消してしまう。
-案２：何か描画しておいて、最初にトリガーレイヤーをまとめて非表示に。
-案３：がんばって描画する。
案3を1つのスクリプトで書いてみたらこんな感じか
 public class トリガー可視化スクリプト : MonoBehaviour
 {
    public Color color = Color.red;     //色
    public bool drawOnPlaying = false;  //ゲーム実行中描画スイッチ

    private static Material material = null;

    void Start()
    {
        if(drawOnPlaying == false)
            return;

        var width = GetComponent&lt;BoxCollider2D&gt;().size.x;
        var height = GetComponent&lt;BoxCollider2D&gt;().size.y;

        var meshRenderer = gameObject.AddComponent&lt;MeshRenderer&gt;();
        var meshFilter = gameObject.AddComponent&lt;MeshFilter&gt;();
        var mesh = new Mesh();

        //メッシュ生成
        mesh.name = &quot;Trigger Mesh&quot;;
        mesh.vertices = new Vector3[]
        {
            new Vector3(.5f*width,.5f*height,0f),
            new Vector3(-.5f*width,-.5f*height,0f),
            new Vector3(-.5f*width,.5f*height,0f),
            new Vector3(.5f*width,-.5f*height,0f),
        };
        mesh.triangles = new int[]
        {
            0,1,2,3,1,0
        };
        mesh.uv = new Vector2[]
        {
            new Vector2(1f,1f),
            new Vector2(0f,0f),
            new Vector2(0f,1f),
            new Vector2(1f,0f),
        };
        mesh.colors = new Color[]
        {
            color,color,color,color
        };
        mesh.RecalculateNormals();
        mesh.RecalculateBounds();
        mesh.Optimize();

        //生成したメッシュを設定
        meshFilter.mesh = mesh;

        //マテリアルが生成されていなければ新しく生成
        if(material == null)
            material = new Material(Shader.Find(&quot;GUI/Text Shader&quot;));

        //マテリアルを設定
        meshRenderer.material = material;
    }

    //--------------------------------------------
    // エディタ上でトリガーを可視化するための機能
    //
    void OnDrawGizmos()
    {
        var width = GetComponent&lt;BoxCollider2D&gt;().size.x;
        var height = GetComponent&lt;BoxCollider2D&gt;().size.y;

        Gizmos.color = color;
        Gizmos.DrawCube(
            transform.position,
            new Vector3(
                width * transform.localScale.x,
                height * transform.localScale.y,
                0
            )
        );
    }
 }
まあBoxCollider2D以外のトリガー使う予定ないから、エラー出るまではこれでいいや_(:3」∠)_


*ポーズ
大体のゲームで必要になる機能。
**タイムスケールを0にする
 Time.timeScale = 0;
これをやるだけ。ただし、&amp;bold(){&amp;Color(red){Update()は呼ばれ続ける}}ので注意。
具体的には、
-ポーズ中も止まってほしくないアニメーションも止まるはず。
-WaitForSecondsもこのスケーリングに依存しているので、それを忘れると極々まれだけどハマる。

**ポーズを自分で管理する    </description>
    <dc:date>2016-04-20T04:50:22+09:00</dc:date>
    <utime>1461095422</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/onju/pages/2.html</link>
    <description>
      *メニュー
-[[トップページ]]

*ゲーム開発
-[[技術&gt;ゲーム開発/技術]]

*Unity
-[[技術&gt;Unity/技術]]
-[[便利Asset&gt;Unity/便利Asset]]

*成果物
-[[プロジェクト]]

*メモ
//-[[スクリプト&gt;メモ/スクリプト]]
-[[要検証案件メモ&gt;メモ/要検証案件]]
-[[Entity(途中)&gt;メモ/Entity]]
-[[アイディアメモ(非公開)&gt;メモ/アイディアメモ]]

----
**更新履歴
#recent(10,ignore_head=プラグイン)

**本日の人気ページ
#popular(10,ignore=トップページ,ignore=メニュー,today,count)

**トータル人気ページ
#popular(10,ignore=トップページ,ignore=メニュー,total,count)

**アクセス
//今日:&amp;counter(today);
//昨日:&amp;counter(yesterday);
//合計:&amp;counter(total);    </description>
    <dc:date>2016-04-20T04:27:34+09:00</dc:date>
    <utime>1461094054</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/16.html">
    <title>ゲーム開発/技術</title>
    <link>https://w.atwiki.jp/onju/pages/16.html</link>
    <description>
      #contents

*FPS管理（フレームレート管理）
そもそもパターンが複数あるね。

**フレームレートを固定
-いわゆるTimer
-フレーム間でWaitをかけ、時間的に一定間隔になるようにフレームを更新していく。
-弾幕STGみたいに処理落ちを演出の一環としないならフレームスキップも忘れずに。

**垂直同期
-いわゆるV-SYNC
-モニターのリフレッシュレートと同一にする
-描画の安定度的に理想
-色んなモニターがあることを考慮しないといけない。

**そもそも固定しない
-Unityのデフォルトはこれのはず。
-前フレームからかかった時間 &amp;italic(){&amp;Delta;t} で今フレームの動作を決定していく。
--例えば　移動距離＝移動速度 × &amp;italic(){&amp;Delta;t}　のように使っていく。
-フレームスキップを考えなくてもいいはず
-ドットやマス単位で動くのが大事な2Dゲームには向かないかもしれない

*シーン管理
-ゲームをシーン単位に切り分けて管理できるといいね。
-綺麗に管理できるなら楽になるだろうけど、実際そんな疎結合な設計にできるかというと難しそう。

**シーンの切り分け方
-まずはここが問題。
-例えば
--「タイトル」「ゲーム本編」「エンディング」の3つくらいにする。
---シンプル。
---本編がすごく・・・大きいです・・・。
--「メニュー画面」や「エンカウント戦闘」や「フィールドマップ移動」もそれぞれシーンとする。
---共通項をまとめるというプログラムの基本を考えるとこれくらいですかね？
--ACTの「ステージ」やRPGの「ダンジョン」も1つ1つシーンとする（某配管工のゲームだったら「ステージ1-1」から「ステージ8-4」までそれぞれシーンを作る）。
---シーン数が多くなりすぎる。
---マップ等をソース直書きするならこうなるかな。
---ステージ専用ギミックを作りやすいかも。

**シーン間の情報やり取り
-設計的に上手にするなら、シーン生成時に引数として必要な情報のコレクションを渡すようにするのかな？
-でも「主人公のステータス」とか「アイテム所持数」とかシーン遷移じゃ変わらない情報が多いし、グローバルで情報管理すればいい気がする。

*スクリプトの自作
-エンジンさえ完成すれば、あとは楽。
-再コンパイル無しのチューニング等が出来る。
-ただし、エンジン側のテストは全力でやらないといけないね。    </description>
    <dc:date>2016-04-03T05:05:03+09:00</dc:date>
    <utime>1459627503</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/18.html">
    <title>メモ/Entity</title>
    <link>https://w.atwiki.jp/onju/pages/18.html</link>
    <description>
          </description>
    <dc:date>2016-02-29T20:20:10+09:00</dc:date>
    <utime>1456744810</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/15.html">
    <title>メモ/アイディアメモ</title>
    <link>https://w.atwiki.jp/onju/pages/15.html</link>
    <description>
          </description>
    <dc:date>2016-02-29T18:13:34+09:00</dc:date>
    <utime>1456737214</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/14.html">
    <title>Unity/便利Asset</title>
    <link>https://w.atwiki.jp/onju/pages/14.html</link>
    <description>
      #contents

*iTween
-指定した値を指定した時間をかけて滑らかに更新してくれる。
-移動させるのに便利。
-iTweenの処理中にオブジェクトがDestroyされる場合、Stopをした方がよさそう。
--デストラクタやOnDestroyで、Dispose()を実行させるようになってない。
--iTween側のListに格納しているハッシュが残りそう。

#pcomment(reply)    </description>
    <dc:date>2015-09-19T05:29:59+09:00</dc:date>
    <utime>1442608199</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/onju/pages/1.html</link>
    <description>
      個人の成果物やメモ、忘れがちなことを適当にまとめていくwiki

#pcomment(reply)    </description>
    <dc:date>2015-09-17T16:39:52+09:00</dc:date>
    <utime>1442475592</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/onju/pages/13.html">
    <title>コメント/トップページ</title>
    <link>https://w.atwiki.jp/onju/pages/13.html</link>
    <description>
      -test - 名無しさん 2015-09-17 15:37:08      </description>
    <dc:date>2015-09-17T15:37:08+09:00</dc:date>
    <utime>1442471828</utime>
  </item>
  </rdf:RDF>
