#はじめに
2016年、VR元年ということもあり、興味があったVRアプリを
Unityで作ってみることにした。言語はC#で開発した。
(作ったのは去年のことだが、忘れないためのまとめ)
Unityを初めて触るので、本当に参考書を読んで、基本からイジリながらゲームを作ったのだが、意外と、直感的にサクサク地面や木なども作ることができて便利だった。
Unityは最新版を公式ホームページからダウンロードした。
https://unity3d.com/jp/get-unity/download/archive
これで、GoogleのCardboard用プラグインや、
iOSのAKKit用のプラグインなどをimportすることができる。
今回は、VRアプリを作るということで、
GoogleのCardboardプラグインをいれた。
これをVR用のHMDでみるとVR空間へと誘われる仕組み。
(ちなみに、iPhone5sの画面で最初アプリの動作を試していたが、5sだと画面がかなり小さいので、7とかplus系が良さげ)
#はじめての開発
1日あれば、自分が作った空間(上の写真のような森など)の中で
歩くようなことまでUnityだと簡単に試せる。
自分は角度を決めて、ある程度水平位置より下を向くと
カメラ視点が前に進んでいくように指定して歩いている感じを出した。
コード的には、これ。
using UnityEngine;
using System.Collections;
public class walk : MonoBehaviour {
public Camera mainCamera;
public float moveSpeed = 12.0f;
public float moveAngleX = 15.0f;
float yOffset;
// Use this for initialization
void Start () {
yOffset = mainCamera.transform.position.y;
}
// Update is called once per frame
void Update () {
// 1.カメラの傾きを取得
float x = mainCamera.transform.eulerAngles.x;
// 2.ある角度以内であれば前進させる
if (moveAngleX < x && x < 35.0f) {
moveFoward ();
}
}
private void moveFoward() {
Vector3 direction = new Vector3 (mainCamera.transform.forward.x, 0, mainCamera.transform.forward.z).normalized * moveSpeed * Time.deltaTime;
Quaternion rotation = Quaternion.Euler (new Vector3 (0, -mainCamera.transform.rotation.eulerAngles.y, 0));
mainCamera.transform.Translate (rotation * direction);
mainCamera.transform.position = new Vector3 (mainCamera.transform.position.x, yOffset, mainCamera.transform.position.z);
}
}
moveSpeedは、実際にVR空間内を歩いてみて
周りのオブジェクトから相対的に考えて
速度を決めた。
moveAnglexも、同様にアプリを触りながら
体感的に一番良さげなもので設定。(今回は15~35度の範囲)
最終的に作ったアプリはiOSプラットフォームで出力し、
自分のiPhoneにいれて遊べるようにした。
#最後に
実際は、はじめてVRアプリを作成して完成するまでに
もっと色々なことを試してみた。省力下部分が多いので、その部分はまとめて また追記予定。
(Assetストアからフリーのassetを使う / ユニティーちゃんを自在に動かす / 物理判定 / 自分の視点をトリガーにアクションを起こすなど)