読者です 読者をやめる 読者になる 読者になる

たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

VRボンバーマンを作りたい その9(アイテム作った)

SteamVR SteamVR Unity Toolkit Unity Vive VR VRTK ゲーム開発 プログラミング

VRTK Ver2.2.1の記事です。
Ver3になって使い方が色々と変わっています。ついでに名前も「SteamVR Unity Toolkit」から「Virtual Reality Toolkit」へ変わっています。
使い方はこちらの記事を参照してください。
takoyakiroom.hatenablog.com(以上、2017/02/04 追記)


ほえー
今週はアイテム作成週間でした、慣れない作業ばっかで疲れたよコレ。

作ったアイテムは火力アップと
f:id:takoyakiroom:20161009221502j:plain

爆弾置ける数増えるアイテム。
f:id:takoyakiroom:20161009221501j:plain
外側の殻(2重構造)は「Animation」を使って、Y軸を中心にクルクル回してます。

爆弾はメタセコイアを使って作成、これだけでも使い方調べながらだったので意外と時間かかってしまった。主に導火線・・・
f:id:takoyakiroom:20161009222818j:plain

爆弾アイテムの中の爆弾はちょい斜めに、円を描くように動いています。
円を描くように動くのは、動かしたい対象の座標を波を打つよう移動させたらOK!
sin、cosです。
f:id:takoyakiroom:20161009221824j:plain
動いている動画は撮るほどでも無いかと思ったので無し、また次の機会に。

次は、プレイヤーが置く爆弾も先程作ったモデルに置き換え。
導火線に火を着けて先端から導火線に沿って移動、根元まで達したら爆発するってやってみました。
f:id:takoyakiroom:20161009223013j:plain

火花の移動もやはり「Animation」、導火線に沿うようにx,y,zの位置をちょっとずつ、動かして確認しながら作成。
手書き感が溢れるグラフだなあ。
f:id:takoyakiroom:20161009223144j:plain


アイテムも無事できたので、アイテムを取る処理を入れていきます。
コントローラをアイテムにぶつけたらアイテムが取得できるように、コントローラの先っちょに「Sphere Collider」を追加、「Is Trigger」をチェック!
f:id:takoyakiroom:20161009232419j:plain

このくらいの位置に、このくらいの大きさで良いかな。
ここにアイテムが触れたら、アイテム取得とします。
f:id:takoyakiroom:20161009222404j:plain

コントローラのスクリプトに「OnTriggerEnter」を追加、アイテムが触れた時にこの処理に入るようになります。
何を取ったのかはtagを利用してみました。
【CtrlListener.cs】

void OnTriggerEnter(Collider other)
{
    switch (other.tag)
    {
        case "BombUp":
            // 爆弾置ける数増やす
            player.Max_bomb += 1;
            // 消す
            Destroy(other.gameObject);
            Debug.Log("Get BombUp(max=" + player.Max_bomb + ")");
            break;
        case "FireUp":
            // 火力増やす
            player.Fire_power += 1;
            // 消す
            Destroy(other.gameObject);
            Debug.Log("Get FireUp(max=" + player.Fire_power + ")");
            break;
    }
}

取得後にはすぐアイテムを消しているけど、何かのエフェクト入れないとね。
足元に魔法陣が出てきて光るみたいなのが良いなぁ。魔法陣良いなぁ。


コントローラの当たり判定のついでに、身体への当たり判定を調べてみました。
「SteamVR Unity Toolkit(VRTK)」は「CameraRig」に「VRTK_PlayerPresence」をアタッチしていた場合、頭から足まで「Capsule Collider」ができてて、これが身体への当たり判定に使えそう。
f:id:takoyakiroom:20161009224005j:plain

ヘッドセットの位置を低くすると、それに合わせて「Capsule Collider」も低くなります。
また、ヘッドセットの真正面にコントローラを置いたら当たり判定の一番高いところに合ったので、目の高さまで当たり判定があるということになります。
f:id:takoyakiroom:20161009224007j:plain

んじゃ、もうちょっと高いところまで当たり判定を付けたい場合はというと、「Headset Y Offsset」の値を変えたら当たり判定の高さも変えることができました。
f:id:takoyakiroom:20161009224009j:plain
マイナスの場合は高く、プラスの場合は低くなるみたい。