この記事は Unity Assets Advent Calendar 2016 11日目の記事になります。
HoloLensは現実にプライベートな電脳空間を展開できる最高にクールなデバイスです。
という前振りとは関係ないこちらをご覧ください。
Action Movie Kid - Volume 01 https://t.co/IG3uhItqYw
— ゆーじ (@yuujii) 2016年12月18日
それではさっくりと実現しましょう。
まずはこの爆破エフェクトを自在に出せるようになりましょう。
Realistic Explosions Pack 1.0.0.0 (Sep 26, 2016)
使うスキルはエフェクトアセットでいつも大変お世話になっておりますなkripto289さんのRealistic Explosions Packです。
いつものHoloLensプロジェクトの仕込みを行う
- Windows PlatformにSwitch
- PlayerSettingsからVirtual Reality SupportedでWindows Holographic
- PlayerSettingsからCapabilitiesのSpatialPerceptionをON
- シーンのMain CameraのTransformをReset
- シーンのMain CameraのCameraをこんな感じに
- シーンに空のManagerオブジェクトを作成
- 爆破する壁とか床の空間認識(SpatialMapping)を実現するために、SpatialMappingColliderコンポーネントと、SpatialMappingRendererコンポーネントをManagerオブジェクトにアタッチする。
爆破スキルを習得する
シーンに追加したManagerオブジェクトへ下のスクリプトをアタッチ。
スクリプトではAir-TapでRealistic Explosions Packから習得したい爆破スキルのPrefabをインスタンテイト。発動は自分の見ている場所、空間認識で壁や床と認識した面をGazeManagerで使っている。
using UnityEngine;
using UnityEngine.VR.WSA.Input;
using HoloToolkit.Unity;
[RequireComponent(typeof(GazeManager))]
public class SpawnEffect : MonoBehaviour
{
GestureRecognizer recognizer;
public GameObject effect;
public float DistanceFromCollision = 0.01f;
void Start()
{
recognizer = new GestureRecognizer();
recognizer.SetRecognizableGestures(GestureSettings.Tap);
recognizer.TappedEvent += Recognizer_TappedEvent;
recognizer.StartCapturingGestures();
}
void OnDestroy()
{
recognizer.TappedEvent -= Recognizer_TappedEvent;
}
private void Recognizer_TappedEvent(InteractionSourceKind source, int tapCount, Ray headRay)
{
OnTap();
}
void LateUpdate()
{
#if UNITY_EDITOR
if (Input.GetMouseButtonDown(1))
{
OnTap();
}
#endif
}
private void OnTap()
{
var prefab = GameObject.Instantiate(effect);
prefab.transform.position = GazeManager.Instance.Position + GazeManager.Instance.Normal * DistanceFromCollision;
prefab.transform.up = GazeManager.Instance.Normal;
}
}
ついでに空間音響も使ってみる
なんと発動スキル(=Prefab)には盛大な効果音も含まれています。
せっかくなのであまり注目はされていませんが実は超凄いHoloLensの空間音響も有効にしてみましょう。
参考
Spatial sound
https://developer.microsoft.com/en-us/windows/holographic/spatial_sound
AudioSettings
- Spatializer PluginをMS HRTF Spatializerへ