銃を撃った時に空薬莢を飛ばす機能をUnityで作成する

今回はUnityで銃を撃った時に薬莢を飛ばしてみます。

銃には詳しくないので、どのあたりから薬莢が出てきて、どこへ飛んでいくのかわかりませんが、種類によっても違うみたいです。

詳しく調べてから機能を作成しろよ!

と自分自身に言い聞かせながらてきとうなわたくしはそのまま機能作成に突入するのであった・・・・(謎)

とりあえず、撃ったら薬莢が飛んでいく銃という事に限定しましょう(^_^;)

今回の機能を作成すると、上のような感じになります。

弾のモデルが用意出来なかったので、CapsuleのScaleを調整し、空薬莢として使用しました。

スポンサーリンク
スポンサーリンク

弾の設定と銃に薬莢を飛ばす場所を作成する

bullet11

上のような弾丸の3Dオブジェクトを用意します。

今回はUnityのCapsuleのScaleを調整して空薬莢にします。

ヒエラルキー上で右クリックから3D Object→Capsuleを選択し名前をBulletとします。

銃から出る空薬莢のインスペクタ

弾丸オブジェクトをシーン上に配置し、弾の大きさの調整をし、AddComponentでRigidbodyをつけます。

銃を撃った時に薬莢に力を加えて飛ばす為です。Use Gravityにチェックを入れ重力も働くようにしておきます。

BulletにはCapsule Colliderがついていて衝突判定として使うのでIs Triggerのチェックは外しておきます。

設定が終わったらAssetsフォルダにドラッグ&ドロップしプレハブ化します。シーン上の弾は削除してかまいません。

これで薬莢の準備が出来ました。

次は銃に薬莢が出てくる場所を設定します。

銃のプレハブをシーン上に配置し、Sliderの子要素に空のゲームオブジェクトを作成して名前をBulletExitPositionにし空薬莢が出てくる位置を作成します。

空薬莢が出てくる位置をSliderの子要素に作成

座標をLocalに変更(重要)し、空薬莢が出ていく方向(青色のZ方向)を調整します。

実際の空薬莢が出てくる位置

上のような感じに調整が出来たら、銃のインスペクタでApplyを押し修正をプレハブに反映させます。

反映させたら修正用の銃はヒエラルキー上から削除してください。

銃から空薬莢を飛ばす処理をスクリプトに追加

それでは銃を撃った時に空薬莢を飛ばすスクリプトを作成します。

今までの記事をご覧いただいた方はShotスクリプトを修正します。

そうでない方は銃を撃った時の処理を行うスクリプトを変更してください。

bulletPrefabには薬莢のプレハブ、bulletExitPositionには銃のbulletExitPositionを銃を装備した時に設定します。

銃を撃った時の処理JudgeShotメソッド内に空薬莢の処理を追加します。

空薬莢をbulletExitPositionの位置とequip(装備品の親のゲームオブジェクト)の角度でインスタンス化します。

空薬莢のRigidbodyコンポーネントを取得し、exitBulletPositionの向いている方向に力と回転を加えます。

空薬莢は3秒後に消します。

最後に銃の情報を取得しているInitializeGunメソッドに処理を追加します。

装備した武器の子要素からSlide/BulletExitPositionを探してbulletExitPositionに設定します。

これで銃を撃った時に空薬莢を飛ばす処理は完成しました。

Unityの実行ボタンを押して確認してみましょう。

bullet14

上のように空薬莢が右後ろに飛んで行くようになりました。

コメント

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