[銃VCIEx③]複数の弾を用意する

このページは[銃VCI]FPS用の銃VCIを作る解説ページです。

手順

FPS用VCIのアーマーと当たり判定が行われるようにするには弾のコライダーの名前が「Bullet」である必要があります。
弾が一つだと、連射したときに弾が飛んでいる最中でも戻ってきてしまいます。

ここでは複数の弾を使用する方法を紹介します。

1. Bulletを右クリックしてCreate Emptyをする。

空のGameObjectがBulletの子要素になっていれば正しいです。

2. BulletとGameObjctの名前を変更します。

親要素の「Bullet」の名前を「Bullet1」に変更します。

子要素の「GameObject」の名前を「Bullet」に変更します。

ここでのポイントは、子要素の「GameObject」の名前を「Bullet」に変更することです。
後に、子要素の「Bullet」にコライダーを入れることで辺り判定を付けます。

3. 「Bullet1」のColliderをコピーします。 Hierarchyウィンドウの「Bullet1」を左クリックで選択します。

InspectorウィンドウのCollider(弾で使用しているコライダーを選択してください。チュートリアルで作成した弾は「Sphere Collider」)の「︙」をクリックします。

「Copy Component」を選択します。

4. 「Bullet」にコピーしたColliderを張り付けします。

Hierarchyウィンドウの「Bullet」を左クリックで選択します。

InspectorウィンドウのTransformの「︙」をクリックします。

「Paste Component As New」を選択します。
※手順3のコピーがうまくいってない場合、「Paste Component As New」を選択できません。

5. 不要になった「Bullet」のColliderを削除します。

Hierarchyウィンドウの「Bullet1」を左クリックで選択します。

InspectorウィンドウのColliderの「︙」をクリックします。

「Remove Component」を選択します。

6. 弾を複製します

Hierarchyウィンドウの「Bullet1」を左クリックで選択した状態で、キーボードの「Ctrl」と「D」を同時に押します。
そうすると弾が複製されるので、増やしたい弾の数だけ「Ctrl」と「D」を押します。

7. 増やした弾の名前の数字を連番にします。

変更するのは親の名前だけで、子要素の名前は「Bullet」のままにしてください。

8. スクリプトを変更して順番に弾を呼び出します。

main.lua
--アセットの取得
local Gun = vci.assets.GetTransform("Gun")
 
--削除--
--local Bullet = vci.assets.GetTransform("Bullet")
 
--追加--
--変数の初期化
local _BulletNum = 1         --弾を複数用意する場合、次にどの弾を発射するか確認するために必要
 
--ここまで
 
function onUse(use)
    local GunPos = Gun.GetPosition()
    local houkou = Gun.GetUp()
 
    --追加--
    --今回撃つ弾を判定する処理
    local BulletName = "Bullet"..tostring(_BulletNum)  --撃つ弾を指定するために、BulletName に弾の名前を入れる。
                                                        --この場合 Bullet(_BulletNum) なので、一発目は Bullet1 となる
    local Bullet = vci.assets.GetTransform(BulletName)    --撃つ弾のアセットの取得
 
    _BulletNum = _BulletNum + 1                         --次の弾を指定するために _BulletNum に1を足す
 
    --Unityで用意している弾よりも多くは撃てないので、用意した個数以上討ちたい場合は _BulletNum を1に戻してもう一度 Bullet1 から使用する
    if _BulletNum > 3 then                     --もしも用意した個数よりも _BulletNum が大きければ
        _BulletNum = 1                         -- _BulletNum を1に戻す
    end
    --ここまで--
 
    Bullet.SetPosition(GunPos + houkou*1.5)
    Bullet.SetVelocity(Vector3.zero)
    Bullet.AddForce(3000*houkou)
 
end

_BulletNumを使用することで、UseするたびにBullet1~Bullet3を繰り返しunityから呼び出すようにしています。

9. VCI Objectに変更したスクリプトを設定

HierarchyウィンドウでSample_Gunを左クリックします。

先ほど変更したmain.luaの中身をすべてコピーして「Source」に貼り付けします。

※「Source」が表示されていない場合は「Scripts」の左にある「▶」をクリックしてください。

10. バージョンを記入してVCIをエクスポート

Inspectorウィンドウの「VCI Object」の「Information」の「Version」にVCIのバージョンを設定します。

最後に、一番下のVCIのエクスポートを選択し、わかりやすい場所に保存します。
ここではデスクトップに保存しています。 

アセットのファイルを変更する[アカウント]を参考にVCIを今回作成した物に変更して完成です。