~~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]] |