1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity AssetsAdvent Calendar 2016

Day 11

HoloLensで超人になる。リアルタイムVFX Realistic Explosions Pack #アセットアドカレ

Posted at

この記事は Unity Assets Advent Calendar 2016 11日目の記事になります。

HoloLensは現実にプライベートな電脳空間を展開できる最高にクールなデバイスです。

という前振りとは関係ないこちらをご覧ください。

それではさっくりと実現しましょう。

まずはこの爆破エフェクトを自在に出せるようになりましょう。

Realistic Explosions Pack 1.0.0.0 (Sep 26, 2016)

image

使うスキルはエフェクトアセットでいつも大変お世話になっておりますな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をこんな感じに
    image
  • シーンに空のManagerオブジェクトを作成
  • 爆破する壁とか床の空間認識(SpatialMapping)を実現するために、SpatialMappingColliderコンポーネントと、SpatialMappingRendererコンポーネントをManagerオブジェクトにアタッチする。

爆破スキルを習得する

シーンに追加したManagerオブジェクトへ下のスクリプトをアタッチ。
スクリプトではAir-TapでRealistic Explosions Packから習得したい爆破スキルのPrefabをインスタンテイト。発動は自分の見ている場所、空間認識で壁や床と認識した面をGazeManagerで使っている。

SpawnEffect.cs
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へ

AudioSource

  • SpatializeをON
  • Spatial Blendを1(3D)
  • Volume RolloffをCustom Rolloff
    image

完成

file.jpg

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?