~~NOTOC~~
====== [銃VCIEx③]複数の弾を用意する ======
このページは[[vci/sample/gun]]解説ページです。
===== 手順 =====
FPS用VCIのアーマーと当たり判定が行われるようにするには弾のコライダーの名前が「Bullet」である必要があります。\\
弾が一つだと、連射したときに弾が飛んでいる最中でも戻ってきてしまいます。
ここでは複数の弾を使用する方法を紹介します。\\
**1. Bulletを右クリックしてCreate Emptyをする。**
空のGameObjectがBulletの子要素になっていれば正しいです。
{{:vci:sample:gun:jyu55.png?400|}}
{{ :vci:sample:gun:jyu54.png?400|}}
**2. BulletとGameObjctの名前を変更します。**
親要素の「Bullet」の名前を「Bullet1」に変更します。
子要素の「GameObject」の名前を「Bullet」に変更します。
ここでのポイントは、子要素の「GameObject」の名前を「Bullet」に変更することです。\\
後に、子要素の「Bullet」にコライダーを入れることで辺り判定を付けます。
{{ :vci:sample:gun:jyu56.png?400|}}
**3. 「Bullet1」のColliderをコピーします。**
Hierarchyウィンドウの「Bullet1」を左クリックで選択します。
InspectorウィンドウのCollider(弾で使用しているコライダーを選択してください。チュートリアルで作成した弾は「Sphere Collider」)の「︙」をクリックします。
「Copy Component」を選択します。
{{ :vci:sample:gun:jyu57.png?400|}}
**4. 「Bullet」にコピーしたColliderを張り付けします。**
Hierarchyウィンドウの「Bullet」を左クリックで選択します。
InspectorウィンドウのTransformの「︙」をクリックします。
「Paste Component As New」を選択します。\\
※手順3のコピーがうまくいってない場合、「Paste Component As New」を選択できません。
{{:vci:sample:gun:jyu59.png?400|}}
{{ :vci:sample:gun:jyu58.png?400|}}
**5. 不要になった「Bullet」のColliderを削除します。**
Hierarchyウィンドウの「Bullet1」を左クリックで選択します。
InspectorウィンドウのColliderの「︙」をクリックします。
「Remove Component」を選択します。
{{ :vci:sample:gun:jyu60.png?400|}}
**6. 弾を複製します**
Hierarchyウィンドウの「Bullet1」を左クリックで選択した状態で、キーボードの「Ctrl」と「D」を同時に押します。\\
そうすると弾が複製されるので、増やしたい弾の数だけ「Ctrl」と「D」を押します。
{{ :vci:sample:gun:jyu61.png?400|}}
**7. 増やした弾の名前の数字を連番にします。**
**変更するのは親の名前だけ**で、子要素の名前は「Bullet」のままにしてください。
{{ :vci:sample:gun:jyu62.png?400|}}
**8. スクリプトを変更して順番に弾を呼び出します。**
--アセットの取得
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」の左にある「▶」をクリックしてください。
{{ :vci:sample:gun:jyu63.png?400|}}
**10. バージョンを記入してVCIをエクスポート**
Inspectorウィンドウの「VCI Object」の「Information」の「Version」にVCIのバージョンを設定します。
最後に、一番下のVCIのエクスポートを選択し、わかりやすい場所に保存します。\\
ここではデスクトップに保存しています。
{{vci:sample:gun:jyu33.png?400|}}
{{ :vci:sample:gun:jyu64.png?400|}}
[[seed/change]]を参考にVCIを今回作成した物に変更して完成です。
^[[vci/sample/gun|銃VCI Top]]^^
^次のページ| [[vci:sample:gun:09]] |