数据库网站开发外文翻译,一个网站多个域名的seo优化,重庆城市,wordpress 国家列表工程文件
Ultraleap 3Di给所有的Joint挂载物体
前期准备
参考上一期文章#xff0c;进行正确配置 Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪
新建项目
初始项目如下#xff1a; 新建Create Empty 将新建的Create Empty#xff0c;重命名为LeapPro…工程文件
Ultraleap 3Di给所有的Joint挂载物体
前期准备
参考上一期文章进行正确配置 Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪
新建项目
初始项目如下 新建Create Empty 将新建的Create Empty重命名为LeapProvider并添加新的组件 新添加的组件如下参数默认不需要修改 继续新建Create Empty并重命名为HandModelManager接着添加新的组件 添加组件如下 单击HandModelManager展开各个子选项在Wrist和Palm下新建Sphere 连接Ultraleap 3Di并单击【play】查看运行结果 成功运行。
编写脚本实现对所有关节进行挂载物体
单击HandModelManager继续添加新的组件如下 打开该脚本输入如下代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor; /// 命名空间public class AddObjToJoint : MonoBehaviour
{// 拿到想要挂载的物体public GameObject addObj;public ListGameObject addList new ListGameObject();// 把我们想要挂载的物体挂载到所有的Joint下面public void Add(){// 遍历所有集合将所有子物体销毁掉foreach(var item in addList){DestroyImmediate(item);}addList.Clear();// 方法1foreach(Transform item in transform) // 遍历当前物体下面的所有子物体{//遍历所有子物体也包含自身的foreach(var child in item.GetComponentsInChildrenTransform()){// 排除自身if(child item) continue;// 添加通过实例化的方法传进去GameObject temp Instantiate(addObj, child);// 把addObj生成在对应的child下面addList.Add(temp);}}// // 方法2// for(int i 0; i transform.childCount; i)// {// print(transform.GetChild(i).name);// }}
}[CustomEditor(typeof(AddObjToJoint))]// 添加标签
// 实现在脚本这边添加一个按钮
// 添加按钮需要继承Editor
public class AddObjToJointEditor : Editor // 创建一个类
{public override void OnInspectorGUI() // 重写OnInspectorGUI方法{base.OnInspectorGUI();if(GUILayout.Button(挂载物体到所有的关节下面)) // 生成按钮{// 通过按钮点击调用void Add()方法// target表示目标对象也就是AddObjToJoint是一个object类型,因此target.Add不可用// 将target强制转换成AddObjToJoint类(target as AddObjToJoint).Add();}}}创建Scripts文件夹将上一步创建脚本存放此处并在Hierarchy中新建Sphere将其拖拽到该文件夹下作为给各关节挂载的物体 将新建好的Sphere拖转到HandModelManager中的Add Obj处作为挂载的物体并将手势的各个关节Joint全选中 单击【挂载物体到所有的关节下面】可见【Scene】中所有关节均挂载Sphere 修改Sphere的大小并连接Ultraleap 3Di进行Play查看结果如下 至此成功运行所有的Joint挂载物体导致结束