チュートリアルを作る①(歩行入力)

こんにちは!

今日からチュートリアル場面を作っていきたいと思います!

今日の目的

今日はoculus touch コントローラーの左スティックでキャラクターを移動させることを目的にやっていこうと思います!

参考:

milkyway8008.hatenablog.com

Sceneの作成

 まず、チュートリアルの舞台となるSceneを作成します。

 [File]→[NewScene]

今回はScene名を[tutorial]に設定しました。

地面の作成

ヒエラルキー上で右クリックし、[3D Object]→[Terrain]

これで地面ができました。

このTerrainオブジェクトは地形なども変えられるので今後のフィールド作成にも活用したいと思います。

プレイヤーの作成

oculus integrationの中にあるOVRPlayerControllerをインポートします。

oculus integrationはここからダウンロードできます。

assetstore.unity.com

移動プログラムの構築

今回の本題である、移動プログラムを書いていきます。

このプログラムは、記事の冒頭でリンクを貼らせていただいた「テンケイ的ブログ」さんのスクリプトを左スティック用に変更したものです。

事前準備

・OVRPlayerControllerの中にあるLeftHandAnchorとRightHandAnchorにOVRControllerPrefabを入れてください。

左右OVRControllerPrefabのインスペクターからControllerをそれぞれL Touch,R Touchに変更してください。

新規スクリプトの作成

OVRPlayerControllerの中にあるOVRCameraRigにNew scriptを追加してください。

今からその中にscriptを書いていきます。

scriptの名前は自分の分かりやすいようにしてください。

ちなみに僕は[joystickMove]にしました。

プログラム

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;

public class JoyStickMove : MonoBehaviour
{
    void Update()
    {
        Move();
    }

    void Move()
    {
        Vector2 stickL = OVRInput.Get(OVRInput.RawAxis2D.LThumbstick);
        Vector3 changePosition = new Vector3*1;
        Vector3 changeRotation = new Vector3(0, InputTracking.GetLocalRotation(XRNode.Head).eulerAngles.y, 0);
        this.transform.position += this.transform.rotation *(Quaternion.Euler(changeRotation) * changePosition);
    }
}

動作確認

oculusアプリ開発用の設定をし、quest2をケーブルで繋ぎ、playボタンを押してテストプレイを開始してください。

左スティックを倒して視点が動けば成功です。

終わりに

基本的な移動方法はこれで完成です。

僕はこれから、speedステータスに合わせて速度を変更したり、ステップ移動を実装しようと思ってます!

*1:stickL.x), 0, (stickL.y