[銃VCIEx①]銃口の位置を指定する

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

手順

1. 弾を発射する位置を指定するために空のオブジェクト(銃口)を作成します。

Hierarchyウィンドウで右クリックして「Create Empty」を選択して空のゲームオブジェクトを作成します。

2. 作成したGameObjectに名前を付けます。

作成した「GameObject」を左クリックして、Inspectorウィンドウで詳細を確認します。

Inspectorウィンドウの一番上の入力欄に、新しく名前を入力します。
ここでは、「Muzzle」とします。

3. 銃口の位置を調整します。

「Muzzle」の位置をInspectorウィンドウで設定します。

Position (X = 0, Y = 1.2, Z = 0.32)
Rotation (X = 0, Y = 0, Z = 0)
Scale  (X = 1, Y = 1, Z = 1)

ここで設定した場所から弾が出るようになります。

4. スクリプトを変更します。

main.lua
--アセットの取得
local Gun = vci.assets.GetTransform("Gun")
local Bullet = vci.assets.GetTransform("Bullet")
 
--追加--
local Muzzle = vci.assets.GetTransform("Muzzle")  --UnityのObject名が「Muzzle」の物を Muzzle に取得。位置や回転を扱えるようにする。
--ここまで--
 
--銃をuseした時前方に弾を飛ばす
function onUse(use)
    --削除--
    --local GunPos = Gun.GetPosition()
    --local houkou = Gun.GetUp()
    --Bullet.SetPosition(GunPos + houkou*1.5)
    --追加--
    local MuzzlePos = Muzzle.GetPosition() --銃口の位置を取得。弾を銃口の位置と合わせるのに必要
    local houkou = Muzzle.GetForward() --銃の前方を取得。(Z軸の+方向)
    Bullet.SetPosition(MuzzlePos)  --弾の位置を銃口の位置に設定する
    --ここまで--
 
    Bullet.SetVelocity(Vector3.zero)
    Bullet.AddForce(3000*houkou)
 
end

弾の出現位置を、銃の前方という設定から銃口の位置に変更しました。
こうすることで弾の出現位置を調整するときにunity上で感覚的に調整できるようになります。

5. MuzzleがGunに追従するようにします。

親子関係にすることで銃口が常に銃の先の部分になるようにできます。

Hierarchyウィンドウで「Muzzle」を「Gun」にドラック&ドロップします。
※Gunの子になることでMuzzleのTransformが変更されますが、変更後のRotation値を修正すると方向がおかしくなってしまうので子に設定した後はPosition以外変更しないようにしましょう。

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

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

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

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

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

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

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

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