スキップしてメイン コンテンツに移動

UnityでのVR歩行スクリプト紹介

念願の夢、自作VRでの歩行



と言いつつ今回紹介するのは歩行と言っていいのか。

動画有るんで、良ければ再生とチャンネル登録お願いします。



まずは目次。

1.UnityでVRを作り、自由に歩きたい
2.GameObjectの構成紹介
3.スクリプトの紹介

このようになります。

1.UnityでVRを作り歩きたい!

まず、UnityでVRを作る中で、

「自分の作った世界を歩きたい!」

となりました。

まあ、せっかくですからね。

そんな訳で悩みに悩んで数か月。(実働では30時間位だろうけど)

なんとか簡単な物が完成しました。

ぶっちゃけネットで調べても中々ちゃんと動くスクリプトって見つからないので、2018/12/10日時点で、自分が作ったものを載せておきます。
(既に誰か作ってたら、すまんな。)


2.GameObjectの構成




ざっくりとこんな感じです。

Playerの下に、動くカメラとVR用のシステム、それに8方向の矢印それぞれという感じです。

矢印の中身は、スクリプトが各方向用の数字になっているので、そこだけ違います。

後に書くスクリプトと合わせてご覧くださいな。

この構成上、視線を動かした時に動くものがMainCameraだけなので、Playerや各矢印は回転しません。

ただ、プレイヤーのRigidBodyで回転を止めるチェックを入れていないと、物にぶつかった拍子に回転し続けます。(2枚目参照)


3.スクリプト紹介 (スクリプトのコピー用は一番下です。)


まずは、移動量の一括管理スクリプトです。

わざわざ8方向全て書き換えるのが面倒なので、front = 0.05fの0.05を書き換えるだけにします。

注意点としては、staticを使ってどこからでも読み書きできるので、他のスクリプトで数字を書き換えない事。

frontが上下左右。nanameが45度方向になります。

naname = front*0.7fとしてるのは、上下左右と移動量を合わせるためです。基本的に書き換える事は無いと思います。



矢印のスクリプトです。

視線の認識をした二つの「public void enterPointer」と「public void exitPointer」で認識。

startで先程の変数管理スクリプトから、上下左右用のfrontを設定するか、斜め用のnanameを設定します。

後は、if(time >= 1)内で、1秒以上視線が当たっている時、Update毎にプレイヤーのポジションを追加すると言う状態です。

実際たどり着いてみれば、何の事も無い簡単なスクリプトで行けてしまいましたね。


ずっと自分は、一つの矢印を使い、trasform.forwardで組もうとしていたので、こんな単純な事を見失っていました。

それとforwardは書いたスクリプトを付けたオブジェクトのZ方向に進みます。
意外と迷う事だと思いますので、今回は使いませんが書いておきます。


さてここまで、VR上で歩行に近いシステムの紹介をしました。

どうぞVR制作にお使いくださいな。

それでは、最後までお読み頂きありがとうございました!

今後kou0128もVR制作に力を入れていきますので、応援よろしくお願い致します。

また見てね!


スクリプト紹介

HensuuKanri.cs

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

public class HensuuKanri : MonoBehaviour {

public static float front = 0.05f;
public static float naname = front*0.7f;

}


ScriptFront.cs

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

public class ScriptFront : MonoBehaviour {

private bool counter; //カウンタ
private float time; //経過時間
public GameObject Player1;
private float x;

// Use this for initialization
void Start () {
counter = false;
time = 0;
x = HensuuKanri.front;
}
// Update is called once per frame
void Update () {
if (counter) {
time += Time.deltaTime;

if (time >= 1) {
Player1.transform.position += new Vector3 (0.0f,0.0f,x);
}
}
}

public void enterPointer(){
Debug.Log ("Enter Pointer");
counter = true;
}

public void exitPointer(){
Debug.Log ("Exit Pointer");
counter = false;
time = 0;
}

}


ScriptFrontRight.cs

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

public class ScriptFrontRight : MonoBehaviour {

private bool counter; //カウンタ
private float time; //経過時間
public GameObject Player1;
private float x;

// Use this for initialization
void Start () {
counter = false;
time = 0;
x = HensuuKanri.naname;
}
// Update is called once per frame
void Update () {
if (counter) {
time += Time.deltaTime;

if (time >= 1) {
Player1.transform.position += new Vector3 (x,0.0f,x);
}
}
}

public void enterPointer(){
Debug.Log ("Enter Pointer");
counter = true;
}

public void exitPointer(){
Debug.Log ("Exit Pointer");
counter = false;
time = 0;
}

}

コメント

このブログの人気の投稿

3DCADでゲーム用の銃を作っていく ~活動報告190925~

3DCADのFusion360を使って、銃の3Dモデルを作ります。 どうも、kou0128です。 昨日、思ったよりもガチャゲーの制作に時間がかかる事が判明し、VRの制作に戻ります。 まずは、3DCADでモンスターを撃つ銃のモデルを作っていきます。 使うのはFusion360という3DCADソフトです。 作ってる途中の画像じゃなく、いきなり原型が出来てしまってますが・・・ 使い方はを細かく紹介するブログと動画は、また作ります。 さて原型を作りましたが、もう少し銃っぽさを出していきます。 グリップ部分チェッカリングを付けていきます。 実際の拳銃でも滑り止めについていることが多いし、平面な部分を減らしていくことでのっぺり感を減らせるんじゃなかろうかという感じです。 グリップのチェッカリングと、スライドの分割溝を付けることで、一気にのっぺり感が減りました。 ただ、今回作ったモデルはゲーム中にサイト覗きっぱなしなので、サイドのデザインは関係ないという。 やっぱり作るならクオリティにこだわりたいじゃないですか。 今後の練習と思えば、全然苦になりません。 サイドにデカールを貼ってみました。 簡単に絵を張り付ける機能も標準で搭載されているので、3D上でモデルとステッカーのあわせが試せるという使い方が出来ます。 3Dプリンタでモデルを出して、プリンターでシールを印刷すれば実物で再現できそう。 うーん、やっぱり3DCADでモデル作ると3Dプリンタで出してみたいという思いにもなります。 やっぱり買おうかなぁ・・・・ 閑話休題 Windows10搭載のペイント3Dで色を塗ってみました。 これでテクスチャデータが書き出せたら、神ソフトなのですが試してみた感じ、全然上手い事行きません。 やっぱりBlenderで色を付けるしかないですね・・・ そんな訳でBlenderに取り込みます。 BlenderのUV展開で色を付けることできないかなぁ・・・と以前から考えてますが、何故かペイント機能が出ない。 というか、そもそもUV展開された状態が...

SL230~リアブレーキ&シフトペダルの調整~

今回は以前より自分のライディングポジションに合わなかった、 リアブレーキペダル&シフトペダルの位置調整をしていきます。 まずは、リアブレーキの調整からしていきます。 はい、調整後です。 調整方法はいたって簡単です。 この金色のナットの位置調整をして終わりです。 ね?簡単でしょ? 流石に詳しく説明をします。 1. まず、下のねじの山を確認し、金色のナットとステン(?)のナットが近づく方と離れる方を確認します。 2. でペダルを下げたい場合は、近づく方向に回し、上げたい場合は離れる方向に回すだけです。 説明終わり。 リアブレーキペダルの調整は恐ろしく簡単でした。 注意点としては、 1. 電気をONにしてブレーキを踏んだ時、ブレーキーランプが点きっぱなしにならない事に確認する。(点きっぱなしだと、「整備不良」でお巡りさんに捕まるよ!) 2. ブレーキを踏んでいない時に、ブレーキパッドとブレーキディスクが当たってないか確認する。 この二つを確認して、試し乗りして問題なければ終了です。 これで、長距離でも疲れにくくなりましたね。 さて、次はシフトペダルの調整をしていきましょう。 シフトペダルの調整は本来、この 二つのナットの位置を変えて調整しますが、今回は、 元の接続部のとこから変えていきます。 それでは説明を。 1. まず、シリコンスプレーを吹いて、ねじを緩めます。 2. シフトペダルは横方向に遊びが有るので、そのまま取り外し。 3. ここから位置を決めながら、少しづつ角度を変えていきます。(かなり大きく変化するので良い位置を見つけるのは難しいよ) 4. で、位置が決まったらねじを付けて固定です。(締め過ぎ注意、なめたら詰みだよ!) で、あとは試し乗りして気に要らなけりゃ、変えてまた試し乗りという流れですね。 これでシフトペダルの調整は終了です。 自分がした感じだとブレーキペダルは簡単でしたが、シフトペダルは少し面倒かなという印象です。 今回自分がしたときは、...

備忘録:windows Updateの失敗で0xc0000225が出た

 滅茶苦茶焦ったので備忘録書いて置きます。 どうも、kou0128です。 今回は、PCのWindows Update失敗でエラーコード:0xc0000225が出た時の話を記載します。 自分も複数パターンの動きを複合したので、完全に正解かは分かりませんが、window11版の情報が見つからなかったので参考までに。 発生状況 PCの終了時点で、Windows Updateの「更新してシャットダウン」が出たので、これをクリック。 翌日起動したところ、ブルースクリーンにて「0xc0000225」が発生。 ブルースクリーンの選択肢にある、「再実行:ENTERキー」や「回復環境:F1キー」なども機能せずに同じ画面に辿り着く。 対処方法 1.Windows11のインストールメディアを準備する。  (起動するパソコンが必要な為、複数台持ちで無い場合は家族や友人のPCを借りてください) ↓マイクロソフトのダウンロードページに飛びます https://www.microsoft.com/ja-jp/software-download/windows11 8GB以上のUSBを準備して、ダウンロードしたソフトを実行して画面に従いながらインストールメディアを作成。 (実使用サイズの関係上16GBを準備した方が良いかも) 作業が完了したら、「エクスプローラー」から右クリックをして「取り出し」で大丈夫です。 2.0xc0000225のPCの復旧作業 ここからはブルースクリーンPCでの作業。 まずPCの状態としては、OSをインストールしているドライブのみ接続し、他のデータ保存用などを外す。 (※自分はここで復旧が上手くいかなかったっぽい) 後はキーボードとマウスと画面を接続。 LANの接続は分からないが、繋げていた時に復旧したので繋げて問題なし。 先ほどのUSBをPCに挿す。 <以下の作業は必要か不明ですが、複数サイトの情報を見る限り影響ありそう> PCを起動後、ブルースクリーン「回復」の中に、「スタートアップ設定:F8」という様な文言が有るので、F8を押す。 ブルースクリーン「スタートアップ設定」が出るので、「1)デバッグを有効にする」や 「5)セーフモードとネットワークを有効にする」 や「6)セーフモードとコマンドプロンプトを有効にする」を押す。 ※数字を選択するとPCが再起動し...