本系列文章将会从一个初学者的脚步去讲解unity和leapmotion协同开发的一系列问题:
基础
环境搭建
场景创建
核心组件使用
sdk使用
脚本编写与功能实现方法
代码优化
UI交互部分
特:本人水平有限所以有错误请及时指正
本人也会引用一些代码如果有所侵犯请联系删除
自2015.11.22开始周更
本周我们将着重介绍unity&leapmotion协同开发中的环境搭建,场景创建问题
这章内容和核心组件使用有着很强的关系所以作为先导请务必认真阅读
首先我们需要认识一下(xxxx.unitypackage)文件的应用
unitypackage格式的文件可以直接import到unity中,记住最好是在打开unity的情况下,在project面板里右击,然后在import packages->custom package中选中你要导入的资源。
那么我们先来看看 core Asset中都有些什么吧
可以说 leap对这个SDK做了很好的梳理Gizmos中仅存储着传感器在场景中的贴图
而leapmotion下的东西才是我们真正要用到的东西
也就是说如果你只进行桌面的应用开发的话 那么leapmotion+ovr还有OVR这两个文件夹几乎可以删除了。
那么我们怎么才在场景中看到手呢?
此时unity强大之处就来了 接下来跟我做:
为了让大家能尽快的获取(运行)一些能看得东西
now 我们在文件视图中看到了搜索框是吧在里面搜索 HandController
将蓝色的prefab(预制体)拖入Hierarchy
于是我们可以看到一个这样的场景
现在可以运行啦!!!(不要告诉我不知道怎么运行)
是不是看到了两个小小的手!!!!
是这样 unity和各个三维文件之间的单位换算有着区别因此我们如果想看见一双正常的手 要么把摄像机拉近拉的离控制器更近
要么把 控制器的scale参数调大 (为了方便计算,十的整数倍的倍率比较好)
OK我们终于能看到了写一个unity程序的入门之法了
在unity的core Asset下我们可以看到很多的demo 。这些demo给我们提供了很多思路,其下的脚本也很有参考性。
其中某些写法对我们构建程序来说,有着很强大的指导意义。
甚至对于一些代码经验贫乏的童鞋来说 根本不用自己写代码 仅仅靠ctrl+c&ctrl+v就可以创建一个demo来完成某些功能
但是说实在的我并不鼓励这样做 毕竟我们的目标是学习一些技能 一些知识来为以后的虚拟现实开发奠基
下周我们将正式开始讲解unity&leap的程序开发的初章 因此我们需要知道unity中一些重要的事情
上图中我们可以看到 handcontroller 就是一个预制体 它包含了脚本 预设置 模型等等 可以说成是一个集合 里面装着这个元素在场景中得以运行所需要的所有文件。可以被复制,重用,使得游戏的编写,场景创建变得高效。比如我们可以把一栋房子,他所有的组件,脚本,模型等等打包为预制体 然后在场景中复制粘贴为更多的房子 成为一个小区等等
此外我们看到handcontroller sandbox当我们把他点开以后发现它是由一个个平面拼接而成的
当我们点进prefab下更多的预制体 会发现更多手的模型 其中文件夹的命名也让你能清楚地理解内容
而在scenes文件夹下你也可以找到更多的工程从而进入更多的脚本去预先了解一些代码的写法。
坐标系
你可能会想 这有什么问题 ?
但是这说起来是个大问题,因为unity中存在着多种坐标判断体系
——视口坐标
——世界坐标
——屏幕坐标
——GUI坐标
1、World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。
2、Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得该位置坐标,手指触摸屏幕也为屏幕坐标,
Input.GetTouch(0).position//可以获得单个手指触摸屏幕坐标。
Screen.width = Camera.pixelWidth
Screen.height = Camera.pixelHeigth
3、ViewPort Space(视口坐标):视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。
4、绘制GUI界面的坐标系:这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为
(Screen.width,Screen.height)
在此仅仅是粗略介绍, 今后在具体问题下 我们才能更好地认识和学习
此周务必多进行探索,下周将进行大量内容的讲解。