Unity LeapMotion SDK 基础讲解

LeapMation SDK 下载

LeapMation 官方网址:链接: LeapMotion

LeapMotion  SDK下载

LeapMotion SDK

在这里插入图片描述

控制器选择

在这里插入图片描述

平台选择  下载之后解压运行就行

在这里插入图片描述

LeapMation Unity 示例场景 下载

打开网址点击下载 选择Unity

LeapMation Unity
在这里插入图片描述

下载 LeapMotion SDK

在这里插入图片描述

同意就完事了

在这里插入图片描述

下载完之后进行解压然后导入到 Unity 里面
剩下的就是自己尝试

在这里插入图片描述

LeapMotion 组件解析

暂时先解析桌面模块 VR 模块以后有机会再填充
以下模块仅代表个人理解,若有不对的还请大佬即时斧正

LeapServiceProvider:

Edit Time Pose: 要执行的模式-----默认是桌面

Interactive volume visualization:识别范围线框显示模式 

Frame Optimiza:框架优化 

Physical Extrapolation:物理推断

Tracking Optimization:跟踪优化-----三个模式:桌面、 屏幕顶部 、 头盔

Worker Thread Profiling:运行工作线程分析

Server Name Space:服务器名称

在这里插入图片描述

HandModelManager:

Leap Provider: 控制器-----用来驱动已定义的模型池组中的手表示的控制器

Model Pool:模型池-----定义手部模型

Size:几个手部模型

Rigged Hands:手控制器

Group Name: 当前手控制器名称-----尽量不要有重复的不然会卡死(亲测)

Left Model: 左手

Right Model:右手

Is Enabled: 手部模型是否显示

Can Duplicate :是否可以复制-----这个就是在某个组件下需要勾选 不然就只能显示一个手的模型

在这里插入图片描述

RiggedHand:

HandEnableDisable:

Handedness:偏向-----就是选择这是那只手

Hand Model Palm Width:手掌宽度-----默认就行

Fingers:手指数组-----需要按照 拇指、食指、中指、无名指、小指 的顺序摆放

Palm: 手掌-----但是需要填充的是所有手指的根节点 也就是父物体

Forearm:前臂-----如果用不到就不用管

Wrist Joint:腕关节

Elbow Joint:肘关节

Deform Positions In Fingers:手指变形位置-----骨头只存在于它们的根部,所以当把骨头放在被追踪的手上时,
							 最后一块指尖骨头的长度就会丢失。这个选项沿着X(长度轴)缩放最后一块骨头,
							 使其骨头长度与跟踪的骨头长度相匹配。此选项仅在启用手指变形位置时有效

Scale Late Finger Bones:-----通常是在手腕附近的手掌变换的3D软件包。如果您的模型的掌纹变换位于掌纹的中心
							  类似于Leap API的手,则取消此选项。

Model Palm At Leap Wrist:-----如果每个手指在手掌和手指底部之间有一个额外的变换,则设置为True。

Joint List:模型关节数组

Local Rotations:本地模型旋转数组

Local Positions:本地模型位置数组

Modle Finger Pointing:模型手指指向

Model Palm Facing:模型掌心朝向

HandEnableDisable:就一个作用就是没有识别到手部模型时隐藏

在这里插入图片描述

InteractionManager:

Hover Activation Radius:悬停激活半径-----超过这个半径,一个交互对象将不会从一个交互控制器接收悬停或主悬停回调。 默认就行

Touch Activation Radius:触摸激活半径-----超过这个半径,交互对象将不会被认为是接触或抓取逻辑。在优化过程中,半径应该较小
						 但一定不能小于交互控制器,也不能太紧地围绕控制器,以便在快速移动时表现良好。这个值是由
						 交互管理器的lossyScale自动伸缩的。x,所以如果你希望玩家的手或控制器具有非单位缩放
						 建议将你的Interaction Manager与单位缩放放在“Player”Transform”下方。

Multi Grasp Holding Mode:多抓握模式-----如果设置为PreservePosePerController,当持有一个多抓取功能的对象并
						  使用单手或控制器释放时,对象的保持姿态将调整为只反映剩下的保持控制器如果设置为
						  PreservePosePerController。当任何手或控制器释放对象时,Remaininq控制器将重新
						  初始化他们的保持姿势,以匹配对象最后保持的状态,允许用户更松散地旋转和平移对象
						  PreservePosePerController是默认设置

Auto Generate Layers :自动生成层-----是否在场景运行时创建用于交互子。交互需要一个交互层(对象),一个掌握的对象层,
				       和一个接触骨头层(交互控制器“骨头”碰撞器),保持这个检查有这些层为你创建
T
emplate Layer:临时层-----当自动生成时,交互层(用于可交互的对象)将使用与这里指定的层相同的物理碰撞标志。

Draw Controller Runtime Gizmos:绘制控制器运行时Gizmos

在这里插入图片描述

InteractionHand:

Leap Provider : LeapMotion控制器-----运行时自动匹配

Manager :LeapMotion管理-----运行时自动匹配

Hover Enabled :悬停启用-----如果禁用,此交互控制器将不会用于生成悬停信息或主要悬停信息。

Contact Enabled :接触启用-----如果禁用,这个交互控制器将不会与交互对象发生碰撞,并且对象将不会接收到接触回调。

Grasping Enabled :抓握启用-----如果禁用,则此交互控制器将无法使用抓握交互对象。

Hand Data Mode :选择左右手模式

Primary Hover Fingertips:开启的手指指尖-----用来抓取物体

Head Transform:头物体-----可为空

在这里插入图片描述

InteractionBehaviour:

Manager :LeapMotion管理-----运行时自动匹配

Ignore Hover Mode:忽略悬停模式-----如果此模式被设置为除None之外的任何其他模式,则该对象将不接收来自
				   左控制器、右控制器或任一手控制器的回调

Ignore Primary Hover:忽略主悬停-----如果选中此属性,交互控制器将不能将此对象标记为其主要悬停。
					  主悬停需要启用悬停才能起作用,但它可以在悬停后独立禁用。

Ignore Contact:忽略接触-----如果选中此属性,交互控制器将无法触摸该对象。

Ignore Grasping:忽略抓握-----如果选中此属性,交互控制器将无法抓握此对象

Contact Force Mode:接触力模式-----确定交互控制器应该对该对象施加多大的力。对于界面样式的对象,如按钮和滑块
					选择Ul 模式。这将使物体感觉更轻,对温和的触摸更敏感;对于普通的物理对象,选择 Object 模式。

Allow Multi Grasp:多抓握对象-----这个对象能被两个或更多的交互控制器同时抓住吗

Move Object When Grasped:抓住对象时移动对象-----当它被抓住时,交互控制器移动这个物体? 
						  如果没有选中此属性,对象仍将接收抓取回调,但您将需要通过脚本手动移动它们。

Grasped Movement Type:抓取的移动类型-----当对象被一个交互控制器持有时,
					   它应该如何移动到它的新位置非运动学体将与其他刚体碰撞,所以它们可能不会到达目标位置。 

Override Interaction Layer:覆盖层交互-----设置为true,这个交互对象将覆盖其默认层的交互管理器的层设置。
							交互层用于物体未被抓住且不忽略接触时。

Override No Contact Layer:覆盖无接触层-----如果设置为true,这个交互对象将覆盖其默认的无接触层的交互管理器的层设置。
						   非接触层不应与接触骨层发生碰撞;它用于抓住交互对象或忽略接触的情况。

在这里插入图片描述

SimpleInteractionGlow:

Use Hover:手部模型检测-----如果启用,当有手在附近时,对象将会倾斜到它的HoverColor

Use Primary Hover:主悬停检测-----(主悬停只有一个 悬停可以有多个)  如果启用,当InteractionHand的主悬停时
				   对象将使用它的PrimaryHoverColor。

Default Color:默认颜色

Suspended Color:暂停颜色-----就是手部模型突然丢失后的颜色

Hover Color:悬停颜色

Primary Hover Color:主悬停颜色

Pressed Color:按压颜色

在这里插入图片描述

LeapMation 桌面基础场景创建

场景搭建

1. Ctrl + N 新建一个场景 并创建一个空物体 更改名称(我这里是Provider)  保存场景

2. 为Provider 添加 LeapServiceProvider 组件 默认设置就行

3. 创建新的空物体 重新命名(HandModelManager) 并为其添加 HandModelManager 组件 和设置相应值
   两个手部模型在 Assets/Plugins/LeapMotion/Core/Prefabs/HandModelsNonHuman 文件夹下 里面的参数不用调节可以直接使用
  
4. 再次创建一个新的空物体 重新命名(InteractionManager)并为其添加 InteractionManager 组件  默认值就行 
   然后会有一个警告 这个警告的意思是:管理器没有分配给它的交互控制器。请添加至少一个InteractionHand 或 
   InteractionVRController 作为该对象的子对象。

5. 为 InteractionManager 创建一个或两个子级空对象 更改名称 并为其添加 InteractionHand组件 默认值就行

6. 如果上述都没有问题的话 就把 MainCamera 移动到合适的位置 不然图像会很小

7. 整体查看是否出现遗漏 然后运行测试

在这里插入图片描述
在这里插入图片描述

HandModelManager 细节参数

在这里插入图片描述

手部模型位置

在这里插入图片描述

在这里插入图片描述

InteractionManager 子级组件添加

在这里插入图片描述

InteractionManager 警告修复效果

在这里插入图片描述

Camera 建议位置 

在这里插入图片描述

整体场景结构

在这里插入图片描述

LeapMotion UI

InteractionButton:

Manager :LeapMotion管理-----运行时自动匹配

Ignore Hover Mode:忽略悬停模式-----如果此模式被设置为除None之外的任何其他模式,则该对象将不接收来自
				   左控制器、右控制器或任一手控制器的回调

Ignore Primary Hover:忽略主悬停-----如果选中此属性,交互控制器将不能将此对象标记为其主要悬停。
					  主悬停需要启用悬停才能起作用,但它可以在悬停后独立禁用。

Ignore Contact:忽略接触-----如果选中此属性,交互控制器将无法触摸该对象。

Ignore Grasping:忽略抓握-----如果选中此属性,交互控制器将无法抓握此对象

Override Interaction Layer:覆盖层----- 如果勾选就设置为 Interaction Layer 所选择的层
Interaction Layer: 交互层-----可交互的层级

Override No Contact Layer:覆盖无接触层 -----默认为 False  如果勾选就设置为 No Contact Layer 所选择的层
No Contact Layer:没有接触层------可交互的层级

Control Enabled:控制启用-----当设置为false时,该Ul控件将不起作用。当你想要禁用用户影响Ul控件的能力,
				 同时保持游戏对象处于活动状态,例如,渲染,并能够接收primaryHover状态时,使用这个而不是禁用组件本身。

Starting Position Mode:起始位置模式----- 有两种模式 一种是按下 一种是抬起  默认是抬起

Min Max Height:最小最大高度-----按钮可以存在的最小和最大高度

Resting Height:静止高度----- 是个0 - 1的值 这个按钮停留的高度;这个值介于最小和最大高度之间

Spring Force:弹力-----是个0 - 1的值  值越大 反馈越快

On Press:按下-----事件调用  按下必须要完全按下才会触发

On Unpress:松开-----事件调用  抬起只要按下之后抬起一点就会触发

在这里插入图片描述

Interaction Slider:

因为 Interaction Slider  和 Interaction Button 属性很相似 所以就直接写那些不同的属性了
红线框选到的部分就和 Interaction Button属性一样  下面重点描述不一样的属性

在这里插入图片描述

Slider Sttings
Slider Type:滑动条层级-----一共有三种模式  水平滑动、垂直滑动、平面滑动
Dispath Slider Value On Start:调度滑块的值在开始的时候发送 -----就是一开始的时候就调用一下滑动条事件

Default Horzontal Value:初始水平位置-----因为 Horzontal Value Range 最大值是 1 所以 0.5 表示 水平/垂直 居中
Horzontal Value Range:滑块在水平轴上的最小值和最大值
Horzontal Slider Limits:水平滑动限制-----更改这个向量可以在Scene 窗口看到更改变化
Horzontal Steps:水平步数-----类似于UI的 步数控制  就是当前滑动条可以分为几步 有点像刻度
Vertical Slider Event:事件触发器

水平模式属性同上

在这里插入图片描述

调节出来的效果  Scene场景

在这里插入图片描述

InteractionToggle

这个更简单 无论是搭载 还是实例化 都和上面的两个一样  就两个属性 看一看吧
Is Toggle: IsOn-----就是UI 里面的 IsOn
Star Toggle: 开始的时候执行一下事件
下面那两个就是事件触发 

在这里插入图片描述

AttachmentHands:

添加 AttachmentHands 组件 
这个组件的主要作用是 追踪手部关节位置
上面的手部关节 勾选后才可以正确追踪到位置 没有勾选的话不会追踪 

在这里插入图片描述

添加 AttachmentHands 组件之后会默认生成两个子级并附带上 添加 AttachmentHand 组件
来确认是哪个手部控件

在这里插入图片描述

然后 Attachment Hand (Left)/Attachment Hand (Right) 根据 AttachmentHands组件又会添加其他的子级
并为子级添加上 AttachmentPointBehaviour 组件 来确认是哪个手部关节

在这里插入图片描述

然后 Attachment Hand (Left)/Attachment Hand (Right) 根据 AttachmentHands组件又会添加其他的子级
并为子级添加上 AttachmentPointBehaviour 组件 来确认是哪个手部关节

在这里插入图片描述

AttachmentHandEnableDisable:

这个组件就是当没有检测到手部模型的时候 隐藏相应的手部模型
Attachment Hand:手部支持部件 左手或者右手

在这里插入图片描述

Hierarchy面板 层级 详细信息  以及 简单的关节追踪应用

在这里插入图片描述

LeapMotion UI 场景演示:

说一下我创建的步骤:
1. 创建一个空物体 并添加 InteractionButton 组件

2. 点击下面 图A 的那几个按钮  按完之后会自动创建一个父级  父级的名字就是  ***Base

3. 然后就剩下了 图B 的警告  这个警告的意思是:这个交互对象没有碰撞器。没有任何碰撞器的交互对象不能交互。
   什么意思呢  就是需要一个碰撞器  自身也可以子级也可以  看你自己的需求(反正我是创建的子级)

4. 创建一个Cube 作为子级碰撞

5. 创建一个空物体 并添加 InteractionSlider 组件

6. 创建流程同 InteractionButton 一样 值得话根据自己的情况调节 也可以和我一下 如图C

7. 创建一个空物体 并添加 InteractionToggle 组件

8. 创建流程同 InteractionButton 一样 值得话默认就是 可以添加自己的事件 来进行测试

9. 创建一个空物体 并添加 AttachmentHands 关节追踪 组件

10. 并添加自己想要实现的效果 我就直接借用 Hand UI 场景里面的控件了

11. 运行测试 

如果想要实现更多的应用 就发挥你的想想吧

在这里插入图片描述图A

在这里插入图片描述图B

在这里插入图片描述

脚本搭载:默认就行 想要修改 就看上面的具体信息

在这里插入图片描述

脚本搭载:SLider 我的值 如果不明白的话 就看上面的具体信息

在这里插入图片描述

脚本搭载:Toggle  默认就行 更改看上面参数信息

在这里插入图片描述

AttachmentHands 关节追踪脚本搭载详细信息

在这里插入图片描述

HandUI Scene场景位置

在这里插入图片描述

Hierarchy面板 层级 最终详细信息  以及 搭载情况

在这里插入图片描述

LeapMotion Anchor 锚点:

Anchor :

Allow Mutiple Objects:允许多种对象------这个锚点是否允许多个对象同时连接到它
									    此属性由AnchorGroups和anchorablebehaviour强制执行。
Match Active State With Attached Objects:将活动状态与附加对象匹配						
										  当它自己的活动状态改变时,这个锚是否应该尝试启用和禁用附加的
										  anchorablebehaviour的GameObjects 如果这个设置是启用的,
										  当它自己的游戏对象被禁用或它的脚本被禁用时,锚将停用附加的对象,
										  同样的,成为激活或启用
										  
Add New Event Type:添加新的事件类型

On Anchor Preferred:进入锚点吸附范围 触发

On Anchor Not Preferred:退出锚点吸附范围 触发

While Anchor Preferred:被吸附物体只要在锚点吸附范围内 每一帧都会触发(试了一下好像只要开启符不符合条件都会持续触发)

On Anchorables Attached:被吸附物体 在吸附锚点上 触发

On No Anchorables Attached :被吸附物体  从吸附锚点退出  触发

While Anchorables Attached:当锚点于对象连接 被吸附物体于锚点进行连接 每一帧都会触发
							(试了一下好像只要开启符不符合条件都会持续触发)

在这里插入图片描述

AnchorableBehaviour:

Attach Object :锚点链接------基于Anchor Group

Detach Object :锚点分离------基于Anchor Group

Move Object To Anchor:移动到锚点位置------基于Anchor

Is Attached:锚点是否连接

Anchor:锚点

Anchor Group:锚点支持组

Max Anchor Range:最大锚点吸附范围------超出此范围的锚被忽略为该对象的可能锚

Use Trajectory:使用轨迹------只有当一个InteractionBehaviour附加到这个对象时才允许。如果启用,则该对象的
							 Attach 方法或其变体将在寻找要附着的锚时衡量其向锚的速度及其接近程度

Motionless Range Fraction:停止锚点范围------当启用了Use Trajectory,但对象试图寻找没有任何速度的锚点时
												使用的最大锚点范围的值

Max Motionless Range :最大停止范围

Max Attachment Angle:最大链接角度------这个物体的轨迹可以远离一个锚点的最大角度,可以将它视为一个可以附着的锚点

Always Attach Distance:锚点绑定距离------如果在这段距离内有一个锚,无论轨迹如何,都要固定住。

Lock To Ancher:是否锁定Ancher------物体应该立即移动到锚点位置吗 如果勾选就是立即过去 中间没有过渡动画

Lock When Attached:锚点锁定------物体一开始应该平稳地移动到锚点,但一旦到达锚点就锁定它吗 
								 注意:禁用AnchorableBehaviour将阻止对象向它的锚点移动,并将从锚点“释放”它
								  这样当重新启用时,对象将平滑地再次移动到锚点

Match Anchor Motion While Attached:当附加时匹配锚运动------当这个物体平稳地向它的锚移动时,如果锚不是静止的,
									它是否也应该继承锚本身的运动?否则,锚可能会从这个AnchorableBehaviour运行,
									并阻止它真正到达锚。

Anchor Lerp Coeff Per Sec:物体向目标位置移动的速度应该是多少?值越高,速度越快。

Anchor Rotation:锚点旋转锁定------对象是否也应该旋转以匹配锚点的旋转?如果勾选此项,
								 应用于锚点转换方式的运动设置也将应用于锚点旋转方式。

Try Anchor Nearest On Grasp End:试在最近的抓握端抛锚------当抓取结束时,AnchorableBehaviour是否应该自动尝试
														 锚定自己?如果启用了useTrajectory,该对象将自动尝试
														 连接到其轨迹方向上最近的有效锚上,否则将简单地尝试连
														 接到最近的有效锚上。

Is Attached By Hand:手部监控-------当用户的手在附近时,物体是否应该离开锚点并向用户的手方向移动?

在这里插入图片描述

AnchorGroup:

Anchors:锚点组------意思就是如果 AnchorableBehaviour 组件的AnchorGroup条件指定当前锚点组就是
					搭载AnchorableBehaviour的物体无法吸附除了当前AnchorGroup 以外的其他物体

在这里插入图片描述

LeapMotion Anchor 场景构建:

1. 复制一份 LeapMation 桌面基础场景 并更改场景名称为 LeapMotion_Anchor

2. 新建一个空物体并置零 更改名称为 AttachmentHands 为其添加AttachmentHands、AttachmentHandEnableDisable
  (两个因为需要左右两个手)组件

3. 把 AttachmentHandEnableDisable 的Attachment Hand 属性进行填充

4. 打开 Anchor 场景 并把 Left Hand Palm Anchor Base 和 Prism拉成预制体

5. 把 Left Hand Palm Anchor Base预制体放在 AttachmentHands\Attachment Hand (Left)\Palm下面

6. 新建三个空物体并置零 命名为 Magenta Anchor Group、Red Anchor Group、Blue Anchor Group并为其添加
   AnchorGroup组件,添加锚点数组数据 一一对应相应的值

7. 新建三个空物体 更改初始位置 命名为 Anchorable Object (Magenta)、Anchorable Object (Red)、
   Anchorable Object (Blue)并把 Prism 预制体作为子级放置
   位置参数分别为(-0.20.2850.141)(00.2850.141)(0.20.2850.1418. 为Anchorable Object (Magenta)添加InteractionBehaviour和AnchorableBehaviour组件

9. 查看结构,并运行测试
AttachmentHands 组件信息参数

在这里插入图片描述

Anchors 场景:把Left Hand Palm Anchor Base和Prism 拉成预制体

在这里插入图片描述

Left Hand Palm Anchor Base 预制体 放置位置

在这里插入图片描述

在这里插入图片描述

Anchor Group 组属性添加 需要添加对应的 Anchor 锚点

在这里插入图片描述

Anchorable Object 三个物体:位置参数 组件添加

在这里插入图片描述

在这里插入图片描述

Anchorable Object 物体:Prism 预制体放置

在这里插入图片描述

整体结构 仅供参考

在这里插入图片描述

LeapMotion 手势

ExtendedFingerDetector

手指探测器

On Activate:激活状态------检测到当前设置的手势的时候激活事件

On Deactivate:释放状态------退出当前设置的手势的时候激活事件

Period:周期------检查检测器状态的秒间隔

Hand Model:手部模型------需要检测哪个手

Thumb:拇指------三个状态:(Extended)伸直、(Not Extended)弯曲、(Either)兼并

Index:食指------三个状态:(Extended)伸直、(Not Extended)弯曲、(Either)兼并

Middle:中指------三个状态:(Extended)伸直、(Not Extended)弯曲、(Either)兼并

Ring:无名指------三个状态:(Extended)伸直、(Not Extended)弯曲、(Either)兼并

Pinky:小指------三个状态:(Extended)伸直、(Not Extended)弯曲、(Either)兼并

Minimum Extended Count:最小扩展数------手指的最小数量  需要注意的是Extended 有几个需要把这个滑动条拉到几

Maximum Extended Count:最大扩展数------手指的最大数量  需要注意的是Not Extended有几个 就用 5 - x 等于的数量
									   然后再把这个滑动条拉到具体数 例下图:5 - 4 = 1  

Show Gizmos:线框绘制------如果为True 绘画出这个探测器

小细节:如果 Finger States 里面有1个Extended  4个Not Extended 就表示需要伸出1个手指 弯曲4个手指才能触发事件
	   如果里面有1个Extended  4个Either就表示 需要伸出1个手指 其他4个手指无论弯曲还是伸直 都能触发事件
	   需要注意的是Minimum Extended Count和Maximum Extended Count 数值需要对应  不然事件不响应

在这里插入图片描述

FingerDirectionDetector

手指方向探测器

On Activate:激活状态------检测到当前设置的手势的时候激活事件

On Deactivate:释放状态------退出当前设置的手势的时候激活事件

Period:周期------检查检测器状态的秒间隔

Hand Model:手部模型

Finger Name:手指名字------拇指、食指、中指、无名指、小指、未知 作用就是监测具体手指

Pointing Type:指向类型------依次是(Relative To Camera)相对于Camera、(Relative To Horizon)相对于地平线
							(Relative To World)相对于世界、(At Target)在目标物体

Pointing Direction:指向方向------拿指向世界为例:(010) 就是指向上面 (-100) 就是指向左面

Target Object:目标对象(可选)------使用PointingType AtTarget

On Angle:从目标方向打开的角度------可以理解为误差  比如(010) 指向上面可以在±15° 的情况下识别

Off Angle:关闭时的角度与目标方向相近------可以理解为误差 ±25° 的情况下关闭识别

Show Gizmos:线框绘制------如果为True 绘画出这个探测器

在这里插入图片描述

PalmDirectionDetector

手掌方向探测器

On Activate:激活状态------检测到当前设置的手势的时候激活事件

On Deactivate:释放状态------退出当前设置的手势的时候激活事件

Period:周期------检查检测器状态的秒间隔

Hand Model:手部模型

Finger Name:手指名字------拇指、食指、中指、无名指、小指、未知 作用就是监测具体手指

Pointing Type:指向类型------依次是(Relative To Camera)相对于Camera、(Relative To Horizon)相对于地平线
							(Relative To World)相对于世界、(At Target)在目标物体

Pointing Direction:指向方向------拿指向世界为例:(010) 就是指向上面 (-100) 就是指向左面

Target Object:目标对象(可选)------使用PointingType AtTarget

On Angle:从目标方向打开的角度------可以理解为误差  比如(010) 指向上面可以在±15° 的情况下识别

Off Angle:关闭时的角度与目标方向相近------可以理解为误差 ±25° 的情况下关闭识别

Show Gizmos:线框绘制------如果为True 绘画出这个探测器

在这里插入图片描述

PinchDetector

压力探测器 手势捏合

On Activate:激活状态------检测到当前设置的手势的时候激活事件

On Deactivate:释放状态------退出当前设置的手势的时候激活事件

Hand Model:手部模型

Controls Transform:控制变换------是否更改父对象的转换

Show Gizmos:线框绘制------如果为True 绘画出这个探测器

Activate Distance:捏合距离------要进入挤压状态的距离 单位是米

Deactivate Distance:离开捏合------离开挤压状态的距离 单位是米

在这里插入图片描述

ProximityDetector

近程探测器 触摸检测 

On Activate:激活状态------检测到当前设置的手势的时候激活事件

On Deactivate:释放状态------退出当前设置的手势的时候激活事件

On Proximity(GameObject):触摸状态------检测到触摸的时候激活事件

Period:周期------检查检测器状态的秒间隔

Target Objects:可交互数组------可以交互的目标物体数组

Tag Name:标签名字------根据Tag标签的判断可以交互的物体 如果场景中有当前标签的物体将自动添加到Target Objects数组里面

Use Layers Not List:使用图层而不是列表------如果为 True 就根据 Layer来判断可以交互的物体

Layer:图层------ Use Layers Not List 为Ture 时可更改

On Distance:探测器启动------启动探测器的距离 单位是米

Off Distance:探测器关闭------关闭探测器的距离 单位为米

Show Gizmos:线框绘制------如果为True 绘画出这个探测器

小细节:ProximityDetector的使用条件是被触碰的物体需要有碰撞
	   ProximityDetector最好配合 AttachmentHand 组件使用 因为ProximityDetector组件是由具体手指关节的
	   这样可以使ProximityDetector 触摸探测器更加精准的应用
	   当Use Layers Not List为True时就不能同时使用 Target Objects和Tag Name来判断物体了

在这里插入图片描述

DetectorLogicGate

探测器逻辑门

On Activate:激活状态------检测到当前设置的手势的时候激活事件

On Deactivate:释放状态------退出当前设置的手势的时候激活事件

Detectors Size:探测器数量------需要配合FingerDirectionDetector 和 ExtendedFingerDetector 组件
							   进行使用来实现复杂手势操作(最好是手动拉组件进去自动寻找的话只会识别第一个)
							   要是一个物体上搭载多个的话是没有办法进行识别的

Add All Sibling Detectors On Awake:探测器检测------如果为True 就在开始的时候检测带有侦测器(基类是Detector)的物体

Gate Type:检测方式------And Gate(与门):多个条件必须同时满足才可以执行
					    Or FGate(或门)多个条件满足一个就可以执行

Negate:反转------反转门逻辑

小技巧:DetectorLogicGate 可以搭配 FingerDirectionDetector 和 ExtendedFingerDetector 组件
	   进行手指指向和手指弯曲的联动  比如:使食指和中指伸直 其他三个弯曲 做剑指 
	   来触发位置移动 或者 检测滑动轨迹来攻击目标(有没有一代仙侠的感觉)
	   如果你有更多的应用或者有趣的想法 欢迎踢我哟

在这里插入图片描述

暂时先这样吧,如果有时间的话就会更新,实在看不明白就留言,看到我会回复的。
路漫漫其修远兮,与君共勉。

  • 15
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
Leap Motion SDK是一种用于与Leap Motion手势控制设备进行交互的软件开发工具包。它提供了一系列的类和函数,用于在Unity中实现与Leap Motion设备的交互。\[1\]Leap Motion SDK可以通过下载Leap Motion官方网站上的SDK来获取。\[1\]在Unity中使用Leap Motion SDK,可以使用LeapServiceProvider类来获取帧数据,该类将Leap Motion的坐标空间转换为Unity的坐标空间。\[3\]此外,LeapMotionUnityAPI为向量和空间变换定义了各自的类,可以通过一些转换函数将Leap Motion的向量和矩阵转换为Unity的向量和矩阵。\[2\]通过使用Leap Motion SDK开发者可以在Unity中实现手势识别、手势控制等功能,从而为用户提供更加沉浸式的交互体验。 #### 引用[.reference_title] - *1* [Unity LeapMotion SDK 基础讲解](https://blog.csdn.net/weixin_43925843/article/details/117734184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Leap MotionUnity 开发指南(二. 开发架构和SDK)L](https://blog.csdn.net/eagle_pre21/article/details/51776830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maddie_Mo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值