Unity leapmotion开发实录(5)完结篇

本系列文章将会从一个初学者的脚步去讲解unity和leapmotion协同开发的一系列问题:

特:本人水平有限所以有错误请及时指正

本人也会引用一些代码如果有所侵犯请联系删除

自2015.11.22开始周更


本周 我们着重将讲解代码的优化问题

首先
经过了上周我们 讲解的代码框架 以及设计规则 我们都有了足够的手法去设计一些自己想要的动作 但是 在一番编写之后 你肯定会发现 有很多方面并不能达到你设想的那样 其中涉及的一些很隐性的问题 表述起来比较繁杂 因此 我将会更多的以图片来展示问题 那些比较动态的问题 将会很难理解 所以 你应该尝试着跟着我的描述去做


其次
一些有问题的代码 因为我们的开发过程没有版本更替 所以一些有问题的代码没有保存 我只能从比较显眼的问题入手


第一点:

世界坐标
我们之前提到过的世界坐标的问题 我也附上了代码 想了解的可以去看之前的博客 但是没有细讲 下面着重来说这个问题

根据上次提供的脚本 新建一个脚本将代码复制附在摄像机上 然后新建一个cube 将物体与代码重定义的物体绑定
我们将两个方块一个初始化在(000)点,一个初始化在(020)点
reset


下面我们修改脚本


        if(Input.GetKey(KeyCode.UpArrow))
        {
            Debug.Log ("up");
            //this.cube.transform.Translate(0,0.1f,0,Space.World);

                this.cube.transform.Translate(0f,0.1f,0f);
        }

以此类推 将带space.world的脚本注释 将不带spac.world的语句取消注释

下面我们根据所定义的按键来操作 发现上下左右都没问题 下面来旋转

同样的旋转系数 同样的操作

cube
cube1

他们的坐标系根本不一致!!!这时候 我们再去操纵他们前后左右

看

我们分别点选坐标系就能看出端倪 世界坐标的作用是统一采用世界的坐标系来规定物体的旋转 如果不指定 物体的变换则是根据自身的坐标来的 所以经过旋转的物体 他们的运动在自己的坐标系内 很可能出现和你的坐标系相反 你输入的指令 是左 他却往右跑 正所以 世界坐标是规范物体运动的最好方法

第二点:

awake

这点其实没什么好展示 因为这是unity开发中常会遇到的问题
脚本执行顺序说明:
先执行所有子脚本中的awake();
在执行所有脚本中的start();
然后执行所有update();
当所有脚本中的update();执行一遍之后,则执行fixupdate();和lateupdate();
即unity中没有多线程概念
且如果在awake中掺杂了关于获取对象的定义
那么脚本之间执行顺序不同就有可能出现空指针

第三点 :

触发网格

middle
我们从图片上可知 仅仅是触发网格 也是有一个一个简单的网格拼凑而成


与之相比较我们再来看看 模型的网格的结构


mesh

所以当我们设计捏取这个动作的时候 触发网格的误差足以让你发疯 所以 如果你想设计捏取动作 那么最好不要牵扯捏取的手指对物体做误差触发
否则 就和官方程序里 那个下国际象棋的demo和 把头拼在机器人身上那个demo体验一样差

我的做法是 每当捏取的两个手指 发生捏取手势的时候 在捏取点生成一个半径固定(不能太大)球体触发网格 每当物体与球体发生触发 求出触发列表 把列表中每一个物体的触发点到球心的距离 求出
最后把最距离最小的那个 物体设为 捏取物体
至于代码 :

nothing ~ i can’t show that

第三点:

UI

相信这点困扰了一些人 因为鼠标键盘 体系的UI 乃至触屏体系的UI 都是直接集成在unity的
我们可以方便的调用 但是 如果设计这种三维空间内的交互设计还是比较复杂的 如果没有相关文档支持 或者例子来借鉴 那么设计工作确实有些 难以展开

但是我们自己探索中就会发现wight这个东西:
在搜索框中搜索 wight然后加载其中的设置
当我们运行了wight之后就可以发现两种可手势交互的组件 一个是按钮 一个是滑动条


wight


我们仔细观察他们的组织结构 就能清晰的发现 手势设计和 UI的组织结构 设计方法

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值