Game a Week 3 「RectShooters」

最初に言っておく。テストは書いていない! さらに、async/awaitの時代にコルーチンを使っている! そして、この記事は読みづらい!

”ハシブトクロウ”は所詮・・・先の時代の”敗北者”じゃけェ・・・!!!

スプレッドシートにアイデアを書いてみました。書いてみただけ。 f:id:crowsbedroom:20190309233449p:plain

スクリプトMVCパターンで分けるとよいと聞いたので、分けてみました。その結果、プレイヤーと敵のControllerを共通化することができました。 ObjectPoolがゴリゴリとパワーアップしました。ICollection<>インターフェースを実装することで、外部からもLINQを使えるようになります。

Mathf.Atan2の使い方がわかりました。 -Mathf.Atan2(diff.x, diff.y)で、反時計回り(左手系標準)かつ真上を0度にできますが、 Mathf.Atan2(y, x) - Mathf.PI * 0.5fの方が分かりやすいので、こちらを採用。 t-stove-k.hatenablog.com

エフェクトと音をつけたら、(個人的に)手触りがよくなりました。こんなゲームが面白くなるとは思いませんでした。 f:id:crowsbedroom:20190309233111g:plain

非アクティブなゲームオブジェクトのrigidbody2dは書き換えられないようです。 rigidbody2d.positionとtransform.positionの挙動は違う模様。 rb2dは、1フレーム置く感じ?がする。 transformは、強制的に書き換える感じ。

Physics2DのCircleCastとCircleCastAllの違いがイマイチです。 CircleCastAllを採用。 CircleCastAllは距離が近い順にソートされる。ありがとうUnity。 と思ったが、バグの原因になったので、神(GameManager)に教え(プレイヤーの攻撃対象)を乞うことにした。 なんとGameManagerがプレイヤーのShot(float degree_rad)を呼び出している!

たった一週間でこれだけ学べるんだから、Game a Weekをやらない手はない。