移动VR一般受到一些设备的限制,操作方式比较有限。现在需要添加移动VR专属的角色控制脚本。运行游戏,检测移动VR的编辑器模拟模式。角色可以顺利跟随导航标识移动到目标位置。图9-121确定Mouse Control是否勾选图9-122检测移动VR的编辑器模拟模式在VRUIPanel中有这么一段代码:主要就是为了Cardboard而实现的Cardboard输入操作就是通过这个Input.GetTouch来实现的。......
2023-10-17
图9-23 新建Player_FullControl脚本
为了方便开发,先使用键盘上的WASD来调试角色的移动控制,再之后可以把VR操作接入。
在Project窗口,右键Scripts文件夹Create→C# Script新建Player_FullControl脚本(见图9-23)。
新建参数程序段如下:
其中,movementSpeed:玩家的移动速度;turnSpeed:玩家的转向速度;jumpForce:推动角色跳跃的外力;whatIsGround:定义构成地面层的层蒙版;anim:角色动画控制器(Animator)的引用;rigidbody:角色刚体的引用;playerInput:三维向量(Vector3),用于存储控制器给角色的三维输入值;grounded:角色是否当前在地面上的布尔值;[SerializeField]:强制Unity序列化私有字段,使得该字段可以在Inspector中被编辑。
修改Start函数程序段如下
修改Update函数程序如下:
(www.chuimin.cn)
添加FixedUpdate函数程序段如下:
图9-24 What Is Ground设置
在Hierarchy中选中Viking_Sword,在Inspector窗口单击Add Component输入Player_FullControl单击添加脚本。
设置What Is Ground为Ground(见图9-24)。
运行游戏,通过WASD可以控制角色移动,按Space键角色跳跃(见图9-25)。
现在发现角色可以移动、跳跃,但是角色没有相关动画动作,而且角色还可以跳出平台,这些会在后面章节的内容进一步实现。
图9-25 角色跳跃
有关虚拟现实理论基础与应用开发实践的文章
移动VR一般受到一些设备的限制,操作方式比较有限。现在需要添加移动VR专属的角色控制脚本。运行游戏,检测移动VR的编辑器模拟模式。角色可以顺利跟随导航标识移动到目标位置。图9-121确定Mouse Control是否勾选图9-122检测移动VR的编辑器模拟模式在VRUIPanel中有这么一段代码:主要就是为了Cardboard而实现的Cardboard输入操作就是通过这个Input.GetTouch来实现的。......
2023-10-17
先选择Assets→Models→Characters选项,将主角Player拖到场景中。图8-148主向Player加入场景给主角添加Rigidbody组件。图8-151主角移动代码将代码拖拽到主角的面板上,单击运行。发现主角掉下去了,这是个严重的问题。图8-152给主角添加CapsuleCollider组件②调整大小,差不多框住主角。图8-154给地板添加BoxCollider图8-155主角倒地图8-156锁住旋转轴XZ......
2023-10-17
尝试添加一个刚体到刚创建的物体上。选择该物体并从菜单中选择Component→physics→Rigidbody。它们使用一个粒子发射器,粒子动画和粒子渲染器来创建一组移动的粒子。音频剪辑是一个引用属性。移除组件如果你想移除一个组件,在检视面板的头部使用option-或右击然后选择移除组件。例如,如果你想访问变换组件的变换功能,你只需要使用transform.Translate()或gameObject.transform.Translate()。使用GetComponent()有许多组件不能成为一个游戏物体类的成员。通过调用GetComponent并存储一个引用到结果中。......
2023-10-17
图8-177CameraFollow脚本offset是相机初始时与主角之间的距离,speed是相机移动的速度,target设置为public,待会直接拖动主角挂到这里。Lerp是插值的概念,简单来说就是使相机平滑地移动而不是瞬间移位。图8-178脚本挂到相机将游戏场景中的物体加入BoxColider。图8-179加入BoxColider单击Window→Navigation自动寻路组件,Unity只对静止的物体计算,选中所有的场景物体,选择static项。图8-183加入NavMeshAgent组件图8-184添加Player标签图8-185怪物出生点设置图8-186新建脚本EnemyManager将这个脚本挂在一个空物体上。......
2023-10-17
首先创建一个文件夹Animation用来存放GameController文件,在文件夹内右击新建一个Animator Controller。图8-163发现新Tab将PlayerController放到主角身上的Animator组件里面的Controller。图8-173加入函数到Update()图8-174主角移动,播放Move动画又一个bug出现,主角停下来时,还是播放Move动画,因为刚刚的Animator并没有设计从Move状态转为Idle状态的条件。图8-175主动停止,仍在播放Move动画isMoving设置false,再运行游戏,主角就正常的Move和Idle了。......
2023-10-17
硬件层在渲染流水线中最为复杂,也最为重要。图2-2固定渲染流水线的几个阶段图2-3可编程渲染流水线硬件层对比上面的两个图我们发现,在可编程渲染流水线中,固定渲染流水线中的顶点变换与片段纹理映射和着色被分离出来,作为可编程顶点处理器与可编程片段处理器。裁剪这部分不可见物体的过程称为视域体裁剪。视域体是一个3D的梯形,我们要在3D的空间里对顶点进行剔除,是一件非常难以实现的事,所以才将顶点变换到投影平面上。......
2023-10-17
Unity引擎的更新迭代速度很快,从2017年开始每个季度都会有次大版本的更新,比如2017.1,2017.2等,至今正式的大版本升级到了2018.2版本。Unity LTS版本将从TECH版本每年最后一个版本开始,持续支持二年的时间。如果读者实际准备发布上线的项目,为了稳定起见,建议使用LTS版本,即2017.4最新的版本,以保证项目最大限度地稳定运行。如果发现没有红色报错信息,基本可以确定大部分版本升级是成功的。......
2023-10-17
全局照明方法试图解决由光线追踪所带来的一些问题。一个光线追踪器往往模拟光线在遇到漫反射表面时只折射一次,而全局照明渲染器模拟光线在场景中的多次反射。由全局照明方法产生的图片看起来真正让人信服。表4-2全局照明的优缺点用直接照明照亮一个简单的场景如下。图4-1用全局照明照亮这个简单的场景图4-2用Terragen渲染场景原本灰色地墙面,再也不是原始的灰色,在它们上面有了些暖意。......
2023-10-17
相关推荐