图9-23新建Player_FullControl脚本为了方便开发,先使用键盘上的WASD来调试角色的移动控制,再之后可以把VR操作接入。设置What Is Ground为Ground。现在发现角色可以移动、跳跃,但是角色没有相关动画动作,而且角色还可以跳出平台,这些会在后面章节的内容进一步实现。......
2023-10-17
这里我们选用最简便的移动VR设备Cardboard来做移动VR端的实现。移动VR一般受到一些设备的限制,操作方式比较有限。这个大作业中的解决方案就是通过Navigation导航系统简化移动输入。
单击顶层菜单Window→AI→Navigation打开导航窗口,找到Agents代理标签页(见图9-114)。
自动生成的Humanoid代理类型基本符合这款游戏的需要。回到Hierarchy中Viking_Sword游戏对象,通过Add Component添加新组件Nav Mesh Agent,这样角色就可以使用Unity自带导航系统在场景中游走(见图9-115)。
图9-114 Agents代理标签页
图9-115 添加Nav Mesh Agent组件
默认参数基本符合要求。
找到Environment→Wall游戏对象,通过Add Component添加新组建Nav Mesh Obstacle,为了是建立一个可以控制的障碍物(见图9-116)。
图9-116 添加Nav Mesh Obstacle组件
设置Shape为Box,盒状包围障碍物城墙,Center设置为(0.23,0.81,-0.06),Size为(4.44,3.56,1.47),勾选Carve。设定完之后,Hierarchy中选中Environment,选择Navigation→Bake标签页,单击Bake进行导航数据的烘焙(见图9-117)。
从Scene场景窗口中,可以发现导航信息烘焙完的结果(见图9-118)。
烘焙好的导航网格数据会保存在场景文件的同名文件夹内(见图9-119)。
现在需要添加移动VR专属的角色控制脚本。在Scripts文件夹内右键Create→C# Script,重命名Player_ClickToMove。
图9-117 设置完成,单击Bake
图9-118 烘焙效果
图9-119 烘焙完成的文件位置情况(www.chuimin.cn)
图9-120 添加Player_Click To Move组件
找到Viking_Sword,通过Add Component添加Player_Click To Move组件(见图9-120)。
设置What Is Ground为Ground层,将Prefabs→NavMarker拖到Nav Marker选项上,取消Player_Controller Move组件的勾选。
重新确认Camera Control Rig的Camera Editor Control→Mouse Control是否已经勾选上(见图9-121)。如果没有就勾选上。
运行游戏,检测移动VR的编辑器模拟模式(见图9-122)。
角色可以顺利跟随导航标识移动到目标位置。
图9-121 确定Mouse Control是否勾选
图9-122 检测移动VR的编辑器模拟模式
在VRUIPanel中有这么一段代码:
主要就是为了Cardboard而实现的(见图9-123)Cardboard输入操作就是通过这个Input.GetTouch(0)来实现的。
图9-123 Cardboard
有关虚拟现实理论基础与应用开发实践的文章
图9-23新建Player_FullControl脚本为了方便开发,先使用键盘上的WASD来调试角色的移动控制,再之后可以把VR操作接入。设置What Is Ground为Ground。现在发现角色可以移动、跳跃,但是角色没有相关动画动作,而且角色还可以跳出平台,这些会在后面章节的内容进一步实现。......
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
实现PC VR功能之前,这里先实现在编辑器环境内通过鼠标模拟VR头盔的操作。通过顶层菜单Edit→Project Settings→Player,打开Player设置窗口,找到最下面的XR Settings。图9-110Player设置窗口的XR Settings在Enable VR的前提下,单击+号添加OpenVR,即支持SteamVR的HTC Vive硬件。为了便利PC VR控制器的输入操作,创建一个键盘与控制器通用的角色控制脚本。图9-112取消勾选Player_Full Control找到Camera Control Rig,取消Camera Editor Control的Mouse Control项目的勾选。图9-113中2号的控制圆盘就能进行上下左右的移动,以及UI的操作。......
2023-10-17
像之前主角的动画一样,给怪物添加Animator Controller。图8-192怪物移动时播放动画怪物攻击新建两个脚本EnemyAttack处理怪物攻击,PlayerHealth处理角色的生命值。图8-193PlayerHealth脚本EnemyAttack如图8-194所示。图8-195怪物预制体加入碰撞体确定isTrigger的选项勾上,并将脚本挂在怪物身上。图8-196选择isTrigger图8-197单击Apply图8-198触发碰撞体......
2023-10-17
尝试添加一个刚体到刚创建的物体上。选择该物体并从菜单中选择Component→physics→Rigidbody。它们使用一个粒子发射器,粒子动画和粒子渲染器来创建一组移动的粒子。音频剪辑是一个引用属性。移除组件如果你想移除一个组件,在检视面板的头部使用option-或右击然后选择移除组件。例如,如果你想访问变换组件的变换功能,你只需要使用transform.Translate()或gameObject.transform.Translate()。使用GetComponent()有许多组件不能成为一个游戏物体类的成员。通过调用GetComponent并存储一个引用到结果中。......
2023-10-17
2)创建新项目启动Unity后将出现一个并列显示Projects和Getting started的窗口。图8-6查看GameScene项图8-7调整摄像角度6)创建方块和小球创建完地面后,接下来将创建代表玩家角色的小方块和球体游戏对象。将方块移动到左侧,小球移动到右侧。图8-8选中小方块图8-9X值修改7)运行游戏再次保存项目文件)。图8-10Maximize on Play图标状态启动游戏后,将自动切换到游戏视图。图8-15游戏视图11)让玩家角色跳起来由于该脚本用于操作玩家角色,所以命名为Player。......
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
相关推荐