文章目录

  • 1. 地形系统 Terrain
  • 2. 综合实验一
  • 3. Rigidbody组件
  • 4. 物理材质
  • 5. 角色控制 Animation组件
  • 6. AR项目
  • 参考文献



本文内容参考b站视频

1

本文只是提纲挈领的,一定要多点点画画,自己摸索。

1. 地形系统 Terrain

在Hirerarchy面板空白处右键,选择3D Object就可以创建地形对象。我们可以对地形进行各种处理:

地形高度
点击地形对象,在Inspector中找到如下菜单,可以看到对地形的各种编辑选项,比如Raise or Lower Terrain项目,选中后,在下方进行配置(笔刷样式、笔刷大小、抬高速度),然后即可在Scene中,使用鼠标对地形进行升高;按住Shift键,即可用鼠标下降地形。但是注意,地形是具有最低高度的。其它地形的处理功能包括:恒高刷、平滑、画洞等。注意,Shift键有很多作用,要注意相关提示,多点一点画一画。

unity3d使用列表控件 unity3d怎么用_unity3d

unity3d使用列表控件 unity3d怎么用_unity_02

地形纹理

可以先将纹理图片(下载合适的图片)导入Project面板,然后点击如下位置,进入纹理面板:

unity3d使用列表控件 unity3d怎么用_ide_03


然后在下图所示位置,就可以进行纹理操作了,要点如下:

①Create Layer选项可以把图片导入,构建一个纹理样式;

②Add Layer可以把创建好的纹理放置到Terrain Layers区域,从而供我们选择;

③Create的第一个纹理默认为全地形的纹理;

④然后,Create多个纹理,Add到Terrain Layers区域,在Terrain Layers区域选择一个纹理,然后就可以像画笔一样,在地图上绘制纹理了。

unity3d使用列表控件 unity3d怎么用_unity3d使用列表控件_04


效果如下:

unity3d使用列表控件 unity3d怎么用_unity3d_05


种树和种草

这里首先介绍如何下载网络资源(Assets)

①进入如下网站,并登录:https://assetstore.unity.com/

②选择免费的资源包,我们现在找一个环境包

③根据提示,添加到自己的Unity中,根据操作,即可在Unity中打开资源

具体可以自己摸索,比较简单。种树/草的位置和效果如下,操作过程和纹理类似:

unity3d使用列表控件 unity3d怎么用_ide_06


unity3d使用列表控件 unity3d怎么用_ide_07

注意,种草的功能在Paint Details中。草只有在靠近的时候才能看到。只要是图片都可以用来种草。

其他细节
除了上述讨论的内容,还可以设置地形的尺寸(长宽高,注意高度变化不能超过地形最大高度),以及其它一些细节的内容,比如风速等。

此外,还可以加入水、建筑、人物等等东西。比如说,加入人物(第一人称)后,点击上方的运行按钮,我们就可以在场景中行走了!可以选择一些支持人物和各种东西的资源包下载下来进行实验!

unity3d使用列表控件 unity3d怎么用_补码_08


最后强调,在我们编辑完成地形后,所有的内容,包括地形的起伏、树等都保存在了Project面板的地形文件中(默认是New Terrain),如果删除,那么地形就不能再编辑了。

2. 综合实验一

本部分尝试把之前的内容结合起来。经过操作发现,标准资源包只适用于2017版本,所以我又安装了2017版本的资源包。只需通过Unity Hub软件,从如下地方下载安装:

unity3d使用列表控件 unity3d怎么用_补码_09


效果如下:

unity3d使用列表控件 unity3d怎么用_ide_10

3. Rigidbody组件

刚体组件。模拟现实中的物理效果:重力加速度、摩擦力、碰撞检测等等等。

给创建的物体添加Rigidbody组件,物体就不会悬空了,就能下落了。

①快捷键Ctrl+N创建一个新的空白Scene,然后加入一个Plane,一个Cube,可以在Cube上添加Rigidbody功能,它就能掉落在Plane上了。

②Rigidbody中,Drag实际是阻力,Angular Drag是旋转时候的阻力,而勾选Is Kinematic后则物体就不受外力作用了,除了人为拖拽。Freeze Position/Rotation可以锁定某个方向的运动/旋转,使之不能在该方向上运动。

③物体能检测碰撞是由Box Collider组件决定的,如果关掉它会发生穿过去的情况。两个物体碰撞,实际上产生碰撞的是两个碰撞体。碰撞体也有很多种,形状各不一样。勾选如下位置,可以直接在Scene中编辑碰撞体,有两种视图Persp透视图和ISO标准视图(没有透视):

unity3d使用列表控件 unity3d怎么用_unity3d_11


unity3d使用列表控件 unity3d怎么用_unity_12

④到目前为止接触的组件:

  • Transform,大小、旋转
  • Mesh Filter,形状
  • Box Collider,碰撞
  • Mesh Renderer,渲染
  • Rigidbody,运动

即使运行后,仍然可以编辑比如拖动,在Inspector中修改等!但是有些修改推出运行模式后会自动还原。
选中某个物体后,在Scene中双击F键,可以跟踪这个物体。

unity3d使用列表控件 unity3d怎么用_ide_13


unity3d使用列表控件 unity3d怎么用_unity3d_14

两个物体碰撞的条件:两个物体都有碰撞体,至少一个有刚体。

4. 物理材质

这是指Collider中的材质选项,这是物理材质而不是纹理!需要在Project中创建Physics Material(配置滑动摩擦力、静摩擦力、摩擦力组合方式(两个物体接触摩擦力如何计算)、弹力、弹力组合方式),然后在Collider中使用它。

如果一个物体不设置物理材质,那么其摩擦力是无穷大。

Project文件夹中的内容可以各种拖动,可以拖动到Scene、Hierarchy、Inspector中合适的位置。

5. 角色控制 Animation组件

这个教程中没有介绍模型的制作,日后需要继续学习。unity推荐的模型格式是.fbx。

模型的头最好和坐标z轴重合,这样向前移动视觉上就是正常的。

用模型生成的游戏对象,在Inspector中会提示是Model。

unity3d使用列表控件 unity3d怎么用_ide_15


Animation是动画组件,是程序运行起来后,游戏对象不断重复的动作。

在Project中展开一个Model,就可以看到它的组成和提供的动画。

unity3d使用列表控件 unity3d怎么用_unity3d_16


不同的图标表示不同的文件:预设体

unity3d使用列表控件 unity3d怎么用_unity3d_17

模型

unity3d使用列表控件 unity3d怎么用_unity3d使用列表控件_18


网格

unity3d使用列表控件 unity3d怎么用_unity_19


动画

unity3d使用列表控件 unity3d怎么用_unity3d_20


然后可以把Project中某个模型对应的动画拖到Inspector中Animation中的Animation项目中。在Animation中有很多设置,比如动画的循环频率等等。

哎,,,发现2017版本无法导入别的assets啊,从store无法链接过去,,,那么好吧,又换回2020了。。。2020的界面和教程还是有点区别的,得慢慢摸索。

我下载了一个僵尸角色,发现和教程中的有所区别,这个角色默认的组件时Animator而不是Animation,所以,先看看吧。后续再继续学习。

可以使用代码控制角色的移动。因为还没怎么学习,暂时不考虑。

代码的话,用Unity关联到VS以编辑。

这个教程在这个地方有所缺失,好吧。。。嗯得开始学习C#了。看起来还是蛮简单的。C#中除了自动每一帧触发的函数,还有各种事件触发的函数,很有意思。

可以给两个角色都添加Box Collider,然后给其中之一添加Rigidbody就可以发生碰撞了,只有都添加Rigidbody的并设置好质量等数据,才能模拟真实的物理碰撞效果。

6. AR项目

主流厂商:高通AR,兼容性比较好,但是价格高(商业版本);国内也有一些,兼容性一般。高通AR在百度搜索Vuforia即可注册,下载高通的sdk(for unity),实际是一个xxx.unitypackage资源包,然后就可以供我们导入使用了。

导入后还需要配置license key才能使用,需要在高通网站申请Vuforia\Develop\License Manager,具体需要时查找即可。然后在如下位置填写网站上复制出来的license码即可。

unity3d使用列表控件 unity3d怎么用_unity_21


使用

  1. 将要扫描的图片(场景,我们在这个场景上叠加虚拟内容,类型包括图片、立方体、圆柱等)上传到高通Vuforia\Develop\Target Manager(注意需要先创建数据库);
  2. 把在网站上创建的数据库下载下来并导入到项目中(注意下载时候选择平台为Unity)。它也是xxx.unitypackage格式的文件。
  3. 把Main Camera删掉;把添加到AR Camera Scene中;再把ImageTarget添加到Scene中;配置Image Target[选择database,选择哪一个图片,设置尺寸];配置VuforiaCOnfiguration[勾选加载数据库和激活checkbox]。
  4. 放置要出现的虚拟物体(例如一个人物)作为ImageTarget的子物体,然后运行程序!发现启动了摄像机,我们用它拍摄之前上传照片的那个物体,那么就可以实时把我们叠加的内容显示在该物体上了。

进制、进制转换、编码等内容:补码=反码+1;补码转换为源码可以再求一次补码。

这个教程接下来就开始介绍C#了,然而之前缺失了一部分内容,我会寻找别的教程补充。