# AR 交互

AR交互主要由cc.ScreenTouchInteractor组件驱动，该组件将触摸事件转换为点击、拖拽和捏合等手势，交互器将这些手势传递给可以交互的虚拟交互物，完成手势对应触发的行为。

### **手势交互**

AR手势交互器组件将屏幕触摸转换为手势。Cocos输入系统将手势信号传递给交互物，然后交互物响应手势事件发生变换行为。交互物能发生交互行为的前提是必须绑定cc.Selectable组件，关于此组件的属性描述详见交互组件Selectable。

想要使用屏幕手势交互器，在层级管理器中右键创建 XR > Screen Touch Interactor 。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_782912_edVuasVoTkotxaXH_1678071686?w=1100\&h=806)

随意创建一个3D物体（以Cube为例）。

修改Cube的Scale属性为（0.1，0.1，0.1）既实际大小为1000cm³ ，修改Position属性为（0，-0.1，-0.5）即位于空间远点处50cm远且靠下10cm的位置，并添加组件 XR > Interaction > Selectable。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_772423_4EAFakvuChsith2s_1678071686?w=382\&h=286)

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_726877_z1evRVgkGvdI3Uvd_1678071686?w=794\&h=1088)

下面创建选中效果，在资源文件夹中创建一个预置体，命名为Selected Visualizer。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_516776_XUB3Hw4f3c-XdUbV_1678071686?w=338\&h=116)

在预置体根节点下创建一个同样的Cube对象，Scale大小设置为基于父节点的1.2倍。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_835009_ioZB_flFhZYH0bCW_1678071686?w=2578\&h=716)

创建一个新的材质，突出表现选中态的效果。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_488921_pOD5v-xSOcIiRZOY_1678071686?w=432\&h=168)

调整材质效果，建议Effect选择builtin-unlit，Technique选择1-transparent。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_522562_IzCCjL4tq9At8jke_1678071686?w=808\&h=1608)

材质创建完毕后，应用到预置体中Cube的cc.MeshRenderer中，即可完成选中效果的创建。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_525312_OMUTHbvf8psylPJA_1678071686?w=2562\&h=796)

最后，将预置体应用到cc.Selectable的Selected Visualization属性中。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_541301_0vnXaEWxZutOq0hr_1678071686?w=2580\&h=1096)

运行时效果如下，可以结合手势来移动、旋转和放缩虚拟物体。

### **放置**

使用屏幕交互器时，会启用设备AR Hit Test能力，根据屏幕触碰位置坐标转换到摄像机使用Ray Cast与AR Plane发生碰撞计算，来获取碰撞点的位置，最终在平面的此坐标上放置虚拟对象。能够被放置的预置体对象必须要挂载cc.Placeable组件。

以上述场景中制作的Selectable对象为例，以下对其赋予被放置交互能力。

选中场景中的Cube对象，为其添加组件 XR > Interaction > Placeable。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_530004_O-ak8oMwSc4wqbW-_1678071686?w=2578\&h=1044)

将此场景节点拖入资源管理器生成一份预置体，并删除场景中的此Cube对象。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_505621__lsphYbnPyXNYVXC_1678071686?w=360\&h=204)

将刚生成的Cube预置体引用到Screen Touch Interactor > Place Action > Placement Prefab属性中，Calculation Mode选择AR\_HIT\_DETECTION。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_516186_mV7Di4Sl-Gfs_oLW_1678071686?w=2570\&h=1258)

放置对象的位置计算需要依赖于AR Plane，所以还需创建一个Plane Tracking节点来请求设备激活AR SDK的平面识别能力。在编辑器的层级管理器中右键 创建 > XR > Plane Tracking，创建平面代理节点。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_505961__fJKZofi_y_l0laa_1678071686?w=2574\&h=1288)

所有工作都完成后，即可打包发布，在运行时查看放置效果。

![](https://wdcdn.qpic.cn/MTMxMDI3MDI3ODQxNjgxNTI_896865_fQfnUioluvDJprW1_1678071686?w=1624\&h=750)
