前書きKoalaGunAmmoBasedに設定される弾薬についてKoalaGunBulletの作りKoalaGunBulletSmokeTrailGunBulletBulletImpactHitDamageableFeedbackHitDamageableFeedbackKoalaGunBulletに設定されているコンポーネントについてMMPoolableObject(任意)Health(任意)DamageOnTouch(必須)MMPreventPassingThrough2D(任意)BoxCollider2D/Rigdbody2D(必須)Projectile(必須)新しく弾薬を作りたい場合、何からやればいい?まとめ前書き今回は遠距離武器の「弾薬の作り方」について紹介していこうと思います。軌跡やぶつかった時のパーティクルの実装を行うことが多いです。最小限の実装としてはモデルとダメージなどの機能を実装すれば問題なく使えるため武器を作るよりも難易度は下がるかなと思います。いえ、遠距離武器がどのように弾薬を呼び出しているのかを理解しないと作りもよくわからないため遠距離武器の作りを見てから弾薬を作ることをお勧めします。遠距離武器の作り方については第2回で簡単に紹介した記事もあるので遠距離武器の作り方が分からない場合はこちらも参考にご確認ください。今回は遠距離武器の「武器の作り方」について紹介していこうと思います。行えば大体の遠距離武器の作成ができます。遠距離武器の場合は「Aimをどうするのか?...aquaregia31.com2024.01.07では、前回同様にDemoの中から「弾薬」の作りを見ていきましょう。今回はDemoにある「MinimalSandbox2D」の中から以下の「黄色い武器(以下、KoalaGunAmmoBased)」に設定される弾薬について見ていきたいと思います。KoalaGunAmmoBasedに設定される弾薬についてKoalaGunAmmoBasedのオブジェクトの中を見るとMMSimpleObjectPoolerコンポーネントがあります。Pool」に設定されている「KoalaGunBullet」が遠距離武器ごとに設定される弾薬になっています。Engineの場合、武器に設定できる弾薬は一つだけがデフォルトとなっています。そのため、Aという武器に対してはA’の弾薬を設定することはできますが、B’やC’といった違う武器の弾薬を設定することは(現状)できないと思います。そのため今回の弾薬の作り方については、一つに武器に対応した弾薬であること、を前提として説明していこうと思います。KoalaGunBulletの作りKoalaGunBulletは以下のような作りになっています。KoalaGunBulletSmokeTrailGunBulletBulletImpactHitDamageableFeedbackHitNoDamageableFeedbackそれぞれのオブジェクトについて簡単に説明していきたいと思います。KoalaGunBulletKoalaGunBulletの機能を司るオブジェクトになります。このオブジェクトに「DamageOnTouch」や「BoxCollider2D」などのプレイヤーや敵に当たった時に発生するダメージなど弾薬としての機能を持たせたコンポーネントを設定します。SmokeTrail弾が発射された時の軌跡を発生させるパーティクルを設定します。GunBullet弾のモデルを設定します。BulletImpact弾がプレイヤーや敵に当たっときのパーティクルを設定します。HitDamageableFeedback弾が当たった時のダメージが発生する場合のFeedbackを設定します。HitDamageableFeedback弾が当たった時のダメージが発生しない場合のFeedbackを設定します。KoalaGunBulletの中のうち弾薬としての機能が設定されたコンポーネントなどがあるオブジェクトはKoalaGunBulletオブジェクトになります。KoalaGunBulletに設定されているコンポーネントについてさらに詳しく見ていきましょうKoalaGunBulletに設定されているコンポーネントについてKoalaGunBulletには以下のコンポーネントが設定されています。それぞれが弾薬としての機能を持たせるためのコンポーネントになっていますが、必須となるコンポーネントと必須ではないコンポーネントがありそれぞれ簡単に説明していきたいと思います。#弾薬としての機能が必要なものを必須と記載しています。そのため、極端な例でいえばDamageOntouchはなくてもエラーなく実行できますが、ダメージが発生しない弾薬になってしまうため今回の説明では必須と記載しています。MMPoolableObject(任意)Health(任意)DamageOnTouch(必須)MMPreventPassingThrough2D(任意)BoxCollider2D(必須)Rigdbody2D(必須)BouncyProjectile(必須)MMPoolableObject(任意)「MMPoolableObject」は遠距離武器からMMSimpleObjectPoolerコンポーネントで呼ばれるために必要なコンポーネントとなっています。MMPoolableObjectコンポーネントを使うことでオブジェクトをDestoryすることなくActhive/NonActiveで使用できるため処理が軽くなります。基本的に「MMPoolableObject」と「MMSimpleObjectPooler」は組となって使われるイメージであればいいかと思います。Timeがあるため一定以上の時間が経ったらNonActiveにすることも可能です。・・・っとなっていますが、後ほど紹介する「Projectile」コンポーネントが「MMPoolableObject」を拡張したクラスになっています。そのため、Projectileコンポーネントを設定すればMMPoolableObjectコンポーネントがなくても問題ない作りになっています。そのため、ここで設定するMMPoolableObjectコンポーネントは正直なくてもいいかなと思い、任意になっています。Health(任意)「Health」コンポーネントについては任意のコンポーネントになります。Healthコンポーネントの有無で変わる効果として以下のことが考えられます。→壁やプレイヤーなどに当たった場合、自分自身にダメージを発生させ、Healthを”0′′にすることでHealthが”0′′になったときのFeedbackなどを設定することが可能です。→壁やプレイヤーなどに当たった場合でも、Healthが”0′′にならないため、常に存在し続けることが可能です。(MMPoolableObjectのLifeTimeがすぎない限り画面上に存在し続けると思います)「壁に当たっても弾薬は存在し続けたい」、「壁に当たったら弾薬は非活性にしたい」などあると思いますので必要であれば適宜設定するのがいいかと思います。DamageOnTouch(必須)プレイヤーや敵に当たった時にダメージを発生させるために必須のコンポーネントになっています。Taken)を設定させるためにも必要なコンポーネントになっています。MMPreventPassingThrough2D(任意)高速で移動するオブジェクトがコライダーを通過しないようになるコンポーネントになります。弾速が早くなるとどうしてもコライダーの判定を通過してしまうことが多いのでこのコンポーネントを設定することで通過を防ぐことができます。そのため、このコンポーネントがなくても弾薬としての機能は動くため任意のコンポーネントになります。BoxCollider2D/Rigdbody2D(必須)BoxCollider2DとRigdbody2Dについては説明不要で必須のコンポーネントになります。Projectile(必須)弾薬としての必須のコンポーネントになります。(画像上は「BouncyProjectile」が記載されていますが「BouncyProjectile」はバウンド機能が付与された拡張クラスになり、根底クラス「Projectile」が必須コンポーネントになります。)Projectileコンポーネントが弾速や弾のモデルの向きなどを設定します。ProjectileコンポーネントはMMPoolableObjectを拡張したクラスになっているため、MMPoolableObjectで設定する内容もここで設定することができます。LifeTimeで設定した時間を超えた場合、非活性になります。新しく弾薬を作りたい場合、何からやればいい?新しく弾薬を作りたい場合の最低限の設定になります。Projectile(必須コンポーネント)→LifeTime、弾薬の速度、モデルの向きなど基本的なパラメータを設定する弾薬のモデルを設定する最低限上記を作成した弾薬を遠距離武器に設定することで、とりあえずの動きを見ることができると思います。弾薬についてはパーティクルやモデルの変更など機能としてよりは見た目などを変えてみてオリジナル要素を出す必要があるかなと思います。まとめ今回は遠距離武器の作り方~弾薬の作り方~について紹介しました。弾薬については設定する項目がそこまでないため比較的難易度は簡単かなと思います。機能としては簡単ですが、Trailの設定や弾が当たった時の設定、見た目の変更など、オリジナル要素を出したい場合は機能よりも見た目をいろいろ変える必要があるためその部分が大変かなと思います。第2回、第3回で最低限の遠距離武器の使い方が分かったかと思います。第2回、第3回ではプレイヤーの初期装備が遠距離武器の場合にのみ攻撃ができる状態です。フィールド上にあるアイテムを拾うための設定などを次回紹介していこうと思います。ここ最近はずっと遠距離武器を作っているためブログの記事も遠距離武器重視になっていますが、そんな第7回となる今回はPoolingの設定について紹介していこうと思います。いままで敵の視界を設定する方法やプレイヤーを見つける方法など紹介しましたが、敵が攻撃する設定方法については簡単にしか紹介していなかったため、今回は敵が攻撃できるようになる設定について紹介していこうと思います。以下のようにHPバー以外にSP(スタミナ)やMP(マナ)の概念を追加する方法です。Engineを使って敵キャラクターが攻撃する方法を紹介しましたが、1つの攻撃方法だけでは敵キャラクターの行動が単調になり、バリエーションに欠けてしまいます。Engineに組み込むための方法になります。遠距離攻撃を設定するときにものによっては「敵を貫通する武器を作りたい」と考えるかもしれません。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。最近のコメント表示できるコメントはありません。免責事項等ホーム検索トップサイドバータイトルとURLをコピーしました。