Game a Week 3 「RectShooters」
最初に言っておく。テストは書いていない! さらに、async/awaitの時代にコルーチンを使っている! そして、この記事は読みづらい!
”ハシブトクロウ”は所詮・・・先の時代の”敗北者”じゃけェ・・・!!!
スプレッドシートにアイデアを書いてみました。書いてみただけ。
スクリプトは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
エフェクトと音をつけたら、(個人的に)手触りがよくなりました。こんなゲームが面白くなるとは思いませんでした。
非アクティブなゲームオブジェクトのrigidbody2dは書き換えられないようです。 rigidbody2d.positionとtransform.positionの挙動は違う模様。 rb2dは、1フレーム置く感じ?がする。 transformは、強制的に書き換える感じ。
Physics2DのCircleCastとCircleCastAllの違いがイマイチです。 CircleCastAllを採用。 CircleCastAllは距離が近い順にソートされる。ありがとうUnity。 と思ったが、バグの原因になったので、神(GameManager)に教え(プレイヤーの攻撃対象)を乞うことにした。 なんとGameManagerがプレイヤーのShot(float degree_rad)を呼び出している!
たった一週間でこれだけ学べるんだから、Game a Weekをやらない手はない。