BlackIceCoffeePhenomenon

溶け出す氷によって味が薄くなると併せ、味覚が苦味に慣れていくことで、加速度的に味覚への刺激が減衰する現象に関するブログです。

VRChatのワールド作成する2-遥かな宇宙へ-

遥か彼方へ。

 

Night Cruiserというワールドを作りました。去年の大みそか

www.vrchat.net

 

 

使える使えないは別としてギミックとかもいくつか入れたので

そこだけに特化して紹介しようと思います。

0から作る場合は、前回のワールド作成日記を参考にするとよいです。

yananann.hatenadiary.jp

 

全体の流れ

1,コンセプト (こういうの作りたいみたいな)
2,概要設計  (こういうのをどうすればできるか考える)
3,構築    (2で考えたものを作ってみよう)
4,ギミックのデザインと実装 (ギミックやろうぜ)

 

 

1,コンセプト

宇宙空間を駆ける宇宙船。それも暗黒というよりはちょっといい感じの銀河っぽいの

youtu.be

こんな感じの背景を、一人称視点で飛びたい。
前進すれば、風景が変わってなければおかしいので
幾千の星を抜けてるイメージが欲しい。
イメージ的にはYsのエンディングに近い

youtu.be

 

2,概要設計

イメージはあるとして、どうすればできるかを考えます。

2-1、ブタジエンさんの空飛ぶ箒の応用で宇宙船を回す

宇宙船全体を操縦する感じにしてぐるぐる回そうというもの。
Skyboxを置いてあげれば旋回の雰囲気は出るしね

→全員が着席してないとさかさまにした時に落ちてしまうので没

2-2宇宙船以外の全てを操縦桿で回す

宇宙船はワールド的には常に水平を保っていて、Skyboxを回すというもの
→Skyboxは横に回せるが縦に回せない

 

選ばれたのは2-2でした。Skyboxの代わりに球体を利用しそれを回すことにします。

 

3,構築

球体の内側を描画するシェーダーを書きます。
・・・1から理解するには時間がかかりすぎるのでこちらの記事を丸パク参考にしました

qiita.com

 

内側はこんな感じ

f:id:yananann:20190319222924p:plain

 

中身も作ります

f:id:yananann:20190319222949p:plain

 

中身は怒涛のつぎはぎ工房です。
アセットストアにある無料の素材を細かく異なるサイズにしてつなぎ合わせます。

f:id:yananann:20190319223244p:plain

f:id:yananann:20190319223327p:plain

羽1枚つくるのにこのボリューム。
ですが後はコピーして角度を変えたり反転することでサクサクいけます。


 

 

ここまでで宇宙空間の漂う何かはできました。
次に某エンディングっぽく移動してる風を出します。

f:id:yananann:20190319223103p:plain

赤が船、青がパーティクル発生源
球のほんの少し先にSphereのパーティクルを置きます。
怒涛のパーティクル数ですが、形の違う隕石や粒とか種類です。

 

4,ギミックのデザインと実装 (ギミックやろうぜ)

 VRCPortalMaker(よく見るポータルのあれ)

f:id:yananann:20190319225528p:plain

VRCSDKの中に入っていて、ワールドIDとポータル名だけ入れるだけでOKです。
すごく簡単!

 

隠し通路

f:id:yananann:20190319225540p:plain

BoxColliderをオフにするだけで通り抜けられます。これもお手軽

 

コントロールキューブ(宇宙をぐるぐるする)

f:id:yananann:20190319225555p:plain

かなりの設定量。持つためのBoxColliderやVRC_Pickupなどなど多彩です。
Is Kinematicあたりは周りの影響受けるかどうかです。
DisallowTheftは文字通り「横取りされない」です。オンにするとすでに持ってる人から奪えません

一方で持ってる人が悪意を持って取りに行けない場所に置いた場合
(持って宇宙空間から落ちる途中に離すなど)にリセットできるよう
VRC_SceneResetPositionを入れてあります。

 

コントロールキューブを呼び出す

f:id:yananann:20190319225613p:plain

この木箱のある位置にキューブを配置するというものです。
設定がたくさんありますが、原理もなんかよくわからないまま置きました。
なので解説はありません、ごめんね

 

 

5,おまけ 宇宙をぐるぐる回す詳細

原理としては、コントロールキューブのRotation(回転ぐあい)を
宇宙を模した球と、パーティクルに連動させてます。

ブタジエンさんの空飛ぶ箒から加速する機構だけ取り除いてるようなものです。

f:id:yananann:20190319225641p:plain

ConfigurableJointを使い、ConnectedBodyをキューブにします。
これで球とキューブが連動するのですが、キューブを持ったまま前に走った際に
球も前に進まないように制御します。

アル中が震える手でキューブ持って球がグラグラすると雰囲気が台無しなので
連動する際に若干遅延したり鈍い動作にします。

そしてこれが怒涛のパラメーター

f:id:yananann:20190319230150p:plain

 

f:id:yananann:20190319230159p:plain

 

パーティクルも同じようにConnectedBodyにキューブを指定してあげます。
一つのキューブで球とパーティクルを同時に動かす事で
宇宙船が動いてるように見える、はずです。
球に設定した遅延する度合を少し変えるとリアリティがさらに出ます。

f:id:yananann:20190319230207p:plain

 

そのほかの感想

・もったいぶるより多くの人に見てもらって感想聞いて修正するほうが良い
→修正は早いほうがいいしフィードバックは多いほうがいい

・ギミック作ったら遊んでもらう。
→キューブ投げ捨てられると操縦不能になる(暇になる)とか気づきが得られるよ

・ワールドに置いてるやななんパーティクルは粒子数を1.5倍に増量してます
→1619Hzとか不特定多数の人が集まるところで負荷かけるのは気が引けるけど
 ここなら打ちたい放題

・やる気があるうちにやってしまうとよい
 特に手間がかかる部分はとにかくやる気があるうちにしないと
 永久に完成しない

・容量を減らしたいなら出来上がってから考える
 →最初は120MBまでいきましたが仕様素材を減らしたり
  BGMの音質を320kbpsから96kbpsまで落とすとかいろいろしてます。

 

そんなこんなでできたのがこちらです。


www.vrchat.net