オーブとは
僕が応援したりしなかったりしている方がUnityを使ってオーブを生み出すやつやっているので僕もそれにインスパイアされてオーブを生み出すことをやることにしました。さて、まずはオーブとは何かについて語らねばならないと思います。オーブとは……。
玉響現象(たまゆらげんしょう)とは、主に写真などに映り込む、小さな水滴の様な光球である。肉眼では見えず写真でのみ確認される。科学的にはフラッシュ光の空気中の微粒子による後方散乱が写り込んだものと解釈されるが、心霊的観点から解釈がなされることもある。
このようなもので写真などにうっすら映るモヤのようなものです。心霊的な場所によくあらわれるとか言われていたりいなかったりしています。というわけでして、それを僕も便乗して作っていこうと思います。
まずは背景になる写真をとってきます。ホラー特集とかやっていたせいなのか、いい感じの素材結構ありますね。
ぱくたそ-フリー素材・無料写真ダウンロード
Unityを起動して2Dで編集(?)していきます。ちゃちゃっと実装したいのでいい感じに使えそうなエフェクトのHaloを使ってみることにします。とりあえず3Dの球体オブジェクトを作成して、そこにHaloを紐づけます。
Halo(ハロー) - Unity マニュアル
Unityのエフェクト系列は2Dで描画すると背景スプライト裏に回り込んでしまうらしいです。なので、それを避けるために背景をキューブか何かに貼りつけて、疑似的に立体構造をつくりエフェクトを無理やり表にだすようにします。んで、Haloをいじります。調べた限りだとHaloを細かくスクリプト制御できるわけでもないようです。まあ、その辺は実験的要素として諦めます。解決策があるかどうかは、アセット漁りながら考えることにしましょう(他力本願)。現状2Dだと使いづらい……。
とりあえず、表示さえできればこちらのものなのでRigidBodyつかいーの、適当に挙動を制御するスクリプトを書いてこんなものを作ります。
using UnityEngine; public class glowmove : MonoBehaviour { public float speed = 3; public float lifting = -0.4f; void Update () { float x = 1; float y = Mathf.Sin(Time.frameCount * 0.7f); x += speed; // 速さ y += lifting; // 上下の移動 // 左から右への移動 Vector2 direction = new Vector3(-x, y).normalized; GetComponent<Rigidbody2D>().velocity = direction * speed; } }
おわかりいただけただろうか。写真を飛び交う不思議な光体を……。
この世界には未だ科学で解明できない不思議なことが存在するのである……。
あとがき
このスクリプトつくる際に、実際のオーブの挙動ってどんなもんなのだろうとか心霊動画漁っていたんですけどそういう動画まじまじと見ていたらなんか怖くなってしまったので、サイン波のせて適当に作ってしまいました。そういうのに詳しい方いらしたら情報ください。実際に実装にうつすかは知りませんが、興味があります。