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

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. で、位置が決まったらねじを付けて固定です。(締め過ぎ注意、なめたら詰みだよ!) で、あとは試し乗りして気に要らなけりゃ、変えてまた試し乗りという流れですね。 これでシフトペダルの調整は終了です。 自分がした感じだとブレーキペダルは簡単でしたが、シフトペダルは少し面倒かなという印象です。 今回自分がしたときは、...

SL230のインプレッションです!

SL230のインプレッションです! HONDAの SL230 (正確には223cc ) です。 (正確には223ccです。) 大切なことなので二回言いました。 さあ、そんなSL230ですが。 1997年から製造されてた250ccクラスのオフロードバイクです。 まず乗った感じとしては、 凄く乗りやすいです。 平地で有ればアクセルを回してなくても、クラッチをゆっくり繋げば発進出来ますからね。 免許を取って7ヶ月経った下手くそな私でも200km走ってエンスト無しです! 凄くトルクの太さを実感できます。 しかし、ロングストロークエンジンで単気筒なので、どんなに飛ばしても「ぬわわkm」が限界だと思います。 出したことは無いので分かりませんが。 装備面は、標準で リアキャリア と ナックルガード が装備されています。 この通り、早速46Lのリアボックスを付けております。 オフロードバイクだと、ネイキッドやフルカウルに比べ、違和感が少なくて良いですね。 (安全の為に、プロテクターは常に着用してますよ。) ナックルガードは今の時期だと、手に虫が当たらない位しかメリットが有りませんが、 冬場は必需品です! どうしても冷たい風で手が冷え、操作に支障をきたしがちですが、ナックルガードが有るなら心配はいりませんね! さて、続いてはハンドル回りです。 メーターは、速度計のみで、タコメーターは有りません。ここは少し残念です。 それ以外は、オドメーター、トリップメーター、ニュートラルランプ、ウインカーランプ、ハイビームランプです。 燃料計が欲しいです。 今日、山に登って写真を撮った帰りに、山道で何故かエンジンが停止。 押し掛けをしてもエンジンがかからず、困り果てていると、 リザーブの高さになっていただけでした(×0×) 燃費さえ分かってしまえば、トリップメーターで見れなくはないですが、それでも焦りますね。 続いて、ハンドル左側です。 キャブレター車なので、クラッチ横にチョークレバーが有ります。 冬場などは必須なので、この位置に有るのは嬉しいですね。 そして、ライトのロー・ハイ、ウインカー、ホーンが有ります。 ホーンの音...