InteractionSystem使用记录
脚本:
1.Interactedable
该脚本用于和手柄产生反馈,项目中需要和手柄产生交互的物体都需要加入该脚本。
2.Interactedable Hover Events
该脚本用于执行物体被手柄选中后的交互操作。
方法:
- OnHandHoverBegin:和手柄选中的交互事件响应
- OnHandHoverEnd:手柄离开,结束选中状态的交互事件响应
- OnAttachedToHand:被手柄拿起后的交互事件响应
- OnDetachedFromHand:被手柄放下的交互事件响应
3.Interactedable Button Events
该脚本用于手柄按钮的交互操作。
方法:
- OnTrigger Down:扳机键按下交互响应
- OnTrigger Up:扳机键松开交互响应
- OnGrip Down:侧面按钮按下交互响应
- OnGrip Up:侧面按钮松开交互响应
- OnTouched Down:方向触摸盘按下交互响应
- OnTouched Up:方向触摸盘松开交互响应
- OnTouched Touch:方向触摸盘解除交互响应
- OnTouched Release:方向触摸盘离开交互响应
4.Teleport Area
该脚本用于设定物体成为可移动位置,脚本的两个属性Locked和Marker Active分别表示该位置是否被“锁定”和是否常显。
- 勾选Locked则不可通过手柄移动到达该位置
- 勾选Marker Active表示当按下手柄选择位置按钮时,可选位置才会显示,不按动手柄按钮时,可选位置不会显示。
5.Throwable
该脚本用于对于物体的抓取,只需将该脚本挂靠在希望抓取的物体上。
属性:
- Attachment Flag:Everything默认,SnapOnAttach吸附到手柄上,DetachOthers其他手柄物体可释放, ParentToHand属于手柄子物体
- Attachment Point:与目标物体产生吸附效果的物体
- Catch Speed Thireshold:产生效果的时间
- Restore Original Parent:松开目标物体后,其是否和原有的父物体保持原有的层级关系
- Attach Easy in:在抓取过程中是否有滑动的过程
- Snap Attach Easy in Curve:滑动过程变化曲线
- Snap Attach Easy in Time:滑动时间
方法: - On Pick Up:抓取后相互事件响应
- On Detach From Hand:放下后交互事件响应
6.Item Pckage Spawner
此脚本用于拿起多物体配合,具体如下
属性:
- Item Package:配置列表,包括拿起的物体、拿起后的物体轮廓,高亮等
- Require Trigger Press To Take:是否按下扳机键拿起
- Require Trigger Press To Return:是否按下扳机键恢复
- Show Trigger Hint:手柄trigger键提示此物体可拿起
- Attachment Flags:同5中同属性介绍
- Attachment Point:同5中同属性介绍
- Take Back Item:是否可以被放回
方法: - Pickup Event:拿起物体交互响应事件
- Drop Event:放下物体交互响应事件
7.Item Pckage
此脚本用于6中Item Package属性,为所需物体挂靠该脚本
属性:
- Name:此物体的名字
- Package Type:拿起类型,One Hand单手拿起效果,Two Hand双手拿起效果
- Item Prefab:拿起动作产生后,手柄中生成的物体
- Other Hande Item Prefab:拿起动作产生后,另一只手柄中伴随产生的物体
- Preview Prefab:放回原处时,产生的物体
- Faled preview Prefab:拿起后原处产生的轮廓
8.Item Pckage Refence
此脚本用于判断需要匹配移除的物体,将脚本放在目标物体上
9.Linear Driver
实现物体按照线性方式移动输出数值到LinearMapping。挂靠在带动物体上
属性:
startPosition:开始移动的位置
endPosition:结束移动的位置
LinearMapping:当前距离开始位置的距离占总路程的百分比
Position Game Object:是否不移动输出数值
Maintain Momemntum:停止操作移动后,物体是否存在惯性移动
Maintain Dampn Fate:摩擦系数数值
10.Circular Driver
实现物体按照转动方式移动输出到LinearMapping。挂靠在被带动物体上
属性:
Axis Of Rotation:转动轴向
Child Collider:子物体碰撞体(注意:1.带动转动的“把手”必须是被带动物体的子物体,2.被带动物体的碰撞体需要“无作用”)
Hover Lock:手柄是否移出感应区但并未松开扳机键,带动效果依然存在
Limited:是否被限制在一个旋转范围
Min(Max) Angle:最小(大)角度
Freeze On Min(Max):达到最小(大)角度是否被锁定,无法转动
Force Start:初始力
Start Angle:初始角度
Rotate Game Object:物体是否旋转(即使不勾选无法旋转也会进行输出一个角度数值)
Out Angle:输出角度
方法:
On Min(Max) Angle:达到最小(大)角度所触发的事件
———————————————————————————————————————
预制体:
1.Player
- 该预制体自身携带有steamVR的cameraRigsteamVR预制体。因此导入该预制体后,删除场景原有的camera,同时不再重复添加已有的steamVR插件。
2.Teleporting
- 该预制体在进行移动时需要向场景中添加,直接拖拽即可,不需要作为某个物体的子物体。
3.TeleportPoint
- 该预制体为瞬移地点预制体,添加后可使用手柄瞬移到该预制体位置。
- 面板属性:
Locked:该预制体点是否可以移动到
Marker Active:是否只有在按下选择按钮后,显示该移动点
TeleportPoint Type:该移动点的性质,有两个选项:移动位置和切换场景
Title:移动点的标头
Sitch to Scene:移动的场景,需要填写场景的完整路径,而非单纯的场景标号或名称
注意:设置好后还需要将TeleportPoint脚本下的TeleportToScene方法进行编辑
———————————————————————————————————————
附加内容
- 1.脚本中使用【RequireComponent】可在物体绑定该脚本时,同时绑定标签所指定的组件,例如 [RequireComponent (typeof(Rigibody))]用于添加刚体组件
- 2.脚本使用#region可对代码块隐藏合并
- 3.脚本使用///< summery >和///< /summery>可进行更好的注解
- 4.[SerializeField]将私有变量在面板显示
- 5.VR中自带outline材质,可以建立物体轮廓
———————————————————————————————————————
更多详细内容,请直接查看steamVR插件在InteractionSystem文件夹下自带的官方文档。