AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

ゼビウスもどき開発(3)

地上物はあらかじめマップ上に配置しておくことにした。
マウスでぽんぽん置くだけなので楽。
空中の兵器もspawnポイントをマップ上におけば、画面に入る前のタイミングで実際に発生するようにしておけばいいかも。
マップがでかすぎてメモリーがやばいのか、時々かたまるので、1024x512と1/4に圧縮。
InspetorのDefault項目でMaxSizeを2048→1024にすると、圧縮済みの画像サイズが、1MB→256KBに。サイズも1/4ですね。
その変わりマップが荒くなりましたが、まあいっか。
ちなみにFilterModeはPoint(no filter)にしないとくっきりならない。
f:id:yasu9780:20160123204928j:plain


当たり判定もいれた。敵にザッパー当たると100点
まだ爆発モーションとか音はない。
自機と敵機はrigidBody2Dで、IsKinematicで、BoxCollider2DはIsTrigger
弾は、BoxCollider2DでIsTriggerのみ
当たり判定は、

void OnTriggerEnter2D(Collider2D other) {..}

です(ゝω・)
OnTriggerEnter()って書いてて、なぜ関数が呼ばれないか分からずにハマってしまった(汗
3Dのコライダを追加してないのに、OnTriggerEnter読んでたらワーニングとか出てくれないかな?(´・ω・`)


マップを動かさないでカメラを動かすようにしました。
これで、マップと地上敵の移動が不要。
そのかわりソルバルウは、1フレーム毎にTime.deltaTimeだけ移動してカメラについていく。
f:id:yasu9780:20160123214430j:plain


カメラ内の座標をとってきて、Objectがカメラに入ってるか調べるやり方が超便利
これで敵もカメラに入るまではなにもしないでいられるし、カメラ外に出たらDestroyすればいい。

Vector2 min = Camera.main.ViewportToWorldPoint (new Vector2 (0, 0));
Vector2 max = Camera.main.ViewportToWorldPoint (new Vector2 (1, 1));
if( transform.position.y<max.y && transform.position.y>min.y-4f ) {  }