『Unity5ゲーム開発レシピ』「Part02 応用編 Chapter02 フィールドとカメラを工夫して利用する」 学習記録

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

序文

『Unity5ゲーム開発レシピ』20日目。

この週末で1LDKの棲み家を丸2日かけてのんびり掃除しました。
パソコン内とか窓ガラスとか掃除し忘れていることに徐々に気づき始めています。

下半期の目標はスマホアプリを2つリリース、そして来年初リリース予定のWebアプリ2つの準備を完了させることです。
言うだけならタダですからね、とりあえず言っておきましょう。

進捗

  • Part02 応用編
    • Chapter02 フィールドとカメラを工夫して利用する

(学習時間:2.5時間)

コード実装部分

\Chapter1\PART02_CHAPTER02\011\before\dungeon\assets\Scripts\ImageBasedMap.cs

using UnityEngine;
using System.Collections;

public class ImageBasedMap : MonoBehaviour {
    // マップ2Dテクスチャ
    public Texture2D mapImage;
    // Wallプレハブ
    public GameObject chipPrefab;

    // Use this for initialization
    void Start () {
        // 画像幅と画像高を取得して1ピクセルずつ走査していく
        for (int w = mapImage.width - 1; w >= 0 ; w--) {
            for (int h = mapImage.height - 1; h >= 0; h--) {
                // ピクセルが白色なら壁
                if (mapImage.GetPixel (w, h) == Color.white) {
                    // 壁オブジェクトを生成
                    var obj = Instantiate (chipPrefab, new Vector3 (w, 0, h), Quaternion.identity) as GameObject;
                    obj.transform.parent = transform;
                }
            }   
        }
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

実行結果

f:id:yjkym:20180702155237p:plain

感想

やったこと。

  • Navigationを利用したキャラクターの移動範囲の限定、特定の地点を移動させる仕組みの実装
  • 実際のSceneの地形を簡易表示にしたミニマップの作成と表示
  • 画像からSceneのオブジェクトを生成する仕組みの実装
  • Scene全体を覆う3D空間のサイズを取得する仕組みの実装

スクリーンショットは2D画像(なぜ.psdなんだ)から3D迷路みたいなものを生成してみた図。
白と黒が元画像と3Dオブジェクトで反転しているのですごく分かりづらい。

アルゴリズム自体は割とアナログだ。
そのまま実用的かどうかはともかく、がんばれば等高線図から3D地形を生成するとか、QRコードバトラー的なものを作ってみるとか、いろいろ応用できそうな気はする。

カロリーメイトください。

BGM

調理場 / KREVA
www.youtube.com