2026年01月27日 活動日誌

運営

概要

クルクルシューティング

新敵の作成

新敵を作成しました。
とはいっても星型の色違いですが…。

  • 赤星

小型で移動速度が速い敵です。
赤色の敵は速度が速いと相場が決まっていますからね。

ただ、敵は基本的に重力に従って自由落下しています。
質量を変えても、落下速度は変わりません。
そのため、移動速度を速めるために重力のスケールを変えて対応しています。

コード上で重力のスケールを変更するにはRigibodyのgravityScaleを変えてあげます。

enemyRigibody.gravityScale = enemyDataSet.GravityScale * commonPrameters.RateSize;
  • 鉄星

鉄でできた星という設定。少し大きくて弾を2発当てる必要があります。
雑魚敵を硬くするのはあまり良くないと言われていますが
当たり判定を大きくして弾が当たりやすくなったので、そこまでストレスなく
倒せそうな気がします。
この辺りは、実際に他の人とプレーしてもらった方が良さそうですね。

  • 巨大ビームストーン

2面のボス敵として作ったのが巨大ビームストーンです。
上下に揺れながら三方向のビームを撃ってきます。
中々避けるのが難しかったので、ビームは弾で消せるようにしました。
それでも難易度は高めかもしれません。

三方向ビームを生成するコードはこんな感じ。
元々、自機に向かってビームを撃つ処理はあったので、
それを3回ループしてビームの角度を-30°、0°、+30°で
変更させながらビームを生成しています。

                Vector2 centerDirection = ((Vector2)satellitePlayer.transform.position - (Vector2)transform.position).normalized;
                float centerAngle = Mathf.Atan2(centerDirection.y, centerDirection.x) * Mathf.Rad2Deg;

                for (int i = -1; i <= 1; i++)
                {
                    AudioManager.Instance.PlaySFX(beamSFX);
                    float offsetAngle = centerAngle + (i * 30f);  // -30°, 0°, +30°

                    // オフセット方向のベクトル計算
                    Vector2 offsetDirection = new Vector2(
                        Mathf.Cos(offsetAngle * Mathf.Deg2Rad),
                        Mathf.Sin(offsetAngle * Mathf.Deg2Rad)
                    ).normalized;

                    // ビーム生成
                    GameObject formingBeam = Instantiate(attackPrefabs[0], transform.position, Quaternion.identity, spawnerEnemy.transform);
                    Collider2D formingBeamCollider = formingBeam.GetComponent<Collider2D>();
                    formingBeamCollider.isTrigger = true;

                    // ビームの回転を設定(オフセット角度)
                    formingBeam.transform.rotation = Quaternion.Euler(0, 0, offsetAngle);

                    // 速度設定
                    Vector2 beamVelocity = offsetDirection * 8f * commonPrameters.RateSize;
                    Rigidbody2D formingBeamRigidbody = formingBeam.GetComponent<Rigidbody2D>();
                    if (formingBeamRigidbody != null)
                    {
                        formingBeamRigidbody.isKinematic = true;
                        formingBeamRigidbody.velocity = beamVelocity;
                    }
                }
  • 巨大赤星

3面のボスキャラとして巨大赤星を作成しました。
と、言っても1面の巨大星の色を変えて速度と耐久値を上げただけですが。

敵のデータは以下の様なCSV設定ファイルにて管理しているため、
パラメータを変えただけの敵を簡単に作ることが出来ます。
まぁ、流石に似たような敵が多すぎてもつまらないので、色々と改修は必要ですが。

ID,Index,Type,Size,HP,MoveType,Speed,Weight,Attack,AttackInterval,ItemType,GravityScale
Star,0,Mob,0.32,1,DirectlyDown,1,1,Non,0,Normal,1
BigStar,1,Boss,1,20,SinFloating,4,1,Down,6,Boss,1
Meteor,2,Mob,0.32,1,FormingDown,4,5,Non,0,Normal,1
BeamStone,3,Mob,0.40,1,DirectlyDown,1,1,FormingBeam,5,Normal,1
RedStar,4,Mob,0.24,1,FormingDown,3,0.5,Non,0,Normal,3
IronStar,5,Mob,0.60,2,DirectlyDown,1,5,Non,0,Normal,1
BigBeamStone,3,Boss,0.8,20,SinUpDown,4,1,FormingBeam3way,4,Boss,1
BigRedStar,4,Boss,1,25,SinFloating,8,1,Down,3,Boss,3

明日の目標

クルクルシューティングのステージ修正。
敵キャラが作成できたので、今度はステージ上でどの順番にどのタイミングでどの位置に出現させるかを設定していきます。
とはいっても、現状テスト用のステージなので、そこまでバランス調整は行わず、ほどほどに遊べるレベルで作成しておきます。
また、What TitleのNoName機能の方も追加していく予定です。

コメント

タイトルとURLをコピーしました