点击remove按钮关闭程序:这东西很像电脑的应用窗口
Adjust:调整这个app的大小位置的,所有的2dapp都是这样的
—————————————————————————————————————————————————————————
1创建一个随“视线”移动的光(凝视)
· 让物体感知凝视
· 如何凝视更小的物体
· 方向标
HoloLensCamera.prefab:设置好摄像机
InputManager.prefab:输入管理器,用来管理视线、手势等输入源。
Cursor.prefab:工具包自带光标之一,主要实现凝视物体时,出现附着圆环,否则光标发亮。
本节完成,测试运行!
—————————————————————————————————————————————————————————————
· 凝视被感知后,给用户一定的反馈(凝视、点击等操作后,缩放Cube)
进入凝视放大1.25倍,退出还原;点击放大1.5倍
public class Cube210 : MonoBehaviour, IFocusable, IInputClickHandler
{
// Cube原始缩放
private Vector3 origScale;
void Start()
{
// 保存Cube原始缩放
origScale = gameObject.transform.localScale;
}
/// <summary> /// 凝视进入事件 /// </summary>
public void OnFocusEnter()
{
// 凝视进入后,Cube放大1.25倍
gameObject.transform.localScale = origScale * 1.25f;
}
/// <summary>
/// 凝视退出事件
/// </summary>
public void OnFocusExit()
{
// 凝视退出后,Cube还原缩放
gameObject.transform.localScale = origScale;
}
/// <summary>
/// 单击事件
/// </summary>
public void OnInputClicked(InputEventData eventData)
{
// 点击后,Cube放大1.5倍
gameObject.transform.localScale = origScale * 1.5f;
}}
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————
2点击Cube,Cube坠落(手势识别)
在点击方法里给Cube加刚体,点击掉落
using HoloToolkit.Unity.InputModule;
using UnityEngine
public GameObject gameobject;
public void OnInputClicked(InputClickedEventData eventData)
{
if (!this.GetComponent<Rigidbody>())
{
var rigidbody = this.gameObject.AddComponent<Rigidbody>();
rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;//刚体检测方式 =碰撞检测模式.连续
}}
将脚本拖拽至 Cube——————————————————————————————————————————————————————
点击按钮,播放动画
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bo : MonoBehaviour {
private Animator _animator;
void Start () {
_animator = this.GetComponent<Animator>();
}
void Update () {
if (Input.GetKeyDown(KeyCode.R))
{
_animator.SetTrigger("k");
}
}
}
- 是否已检测到手势动作
- 使用导航手势来旋转物体
- 手势超出检测区域的处理
- 手势移动物体
IInputClickHandler:点击事件处理接口,需要实现OnInputClicked(InputEventData eventData) 方法
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————
3语音命令控制Cube坠落(声音)
打开Player Settings…面板,在Publishing Settings>Capabilities中,勾选Microphone
public class Cube : MonoBehaviour, IInputClickHandler {
// Cube原始位置
Vector3 originalPosition;
void Start()
{
// 保存Cube原始位置
originalPosition = this.transform.localPosition;
}
public void OnInputClicked(InputEventData eventData)
{
OnDrop();
}
// 重置Cube位置
public void OnReset() {
// 删除Cube的刚体,取消掉落效果
var rigidbody = this.GetComponent<Rigidbody>();
if (rigidbody != null) { DestroyImmediate(rigidbody);
}
// 重置Cube位置
this.transform.localPosition = originalPosition;
}
// 让Cube掉落 public void OnDrop()
{
// 为Cube增加刚体,产生掉落效果
if (!this.GetComponent<Rigidbody>())
{
var rigidbody = this.gameObject.AddComponent<Rigidbody>();
rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
} } }
个人喜好,方便管理..空的GameObject,命名为:”Controller” +KeywordManager.cs(设置OnClick)
在Inspector面板修改keyword Manager.
Keyword对应的语音命令,Response()面板中设置响应的对象及方法
- 语音命令(目前仅支持英文)
- 操作麦克风
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
4把Cube变成“音乐盒”,随着Cube的坠落,声音消失(空间声音)
Edit > Project Settings > Audio”,将Spatializer Plugin修改为:MS HRTF Spatializer
找到声音文件:Vocals.wav”, 将其拖拽到Cube上,点击Cube,调整Audio Source组建:
spatialize勾选
play awake勾选
Loop勾选
Spatial Blend :调整声音的3D效果:1
max distance:20
Volume Rolloff :音量衰减模式
- 感受空间声音
- 感受声音被遮挡的效果
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________
5扫描房间,将Cube放置在房间地面、墙体等地方(空间映射)
找到文件:SpatialMapping.prefab”
拖拽到Hierarchy 根级
空间映射完成,测试运行!
找到文件:WorldAnchorManager.cs” ,拖拽到Controller上
找到文件:TapToPlace.cs” ,拖拽到Cube 上
单击Cube,在Inspector面板上,去掉Cube (Script)的勾选(否则在点击Cube时会出现异常)
放置物体完成,测试运行!
注意:需要等待空间映射效果出现后,才能放置Cube
· 完成空间扫描
· 替换三角面材质
SpatialMapping.prefab:内置空间映射组件
WorldAnchorManager.cs:内置空间坐标管理器
拖拽到Controller上
TapToPlace.cs:单击并放置物体到空间的脚本,内置的
拖拽到Cube 上
单击Cube,在Inspector面板上,去掉Cube (Script)的勾选(否则在点击Cube时会出现异常)
放置物体完成,测试运行!
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________
小结
Holograms 101 是整个官方教程系列中最重要的一篇,要能达到闭着眼睛都能完成。
注意:需要等待空间映射效果出现后,才能放置Cube